| | |
| | | if (wholeHoldOrder != null) { |
| | | BigDecimal totalPrice = openingPrice.multiply(BigDecimal.valueOf(submitOrderDto.getSymbolCnt())); |
| | | // (当前开仓价*张数 + 原开仓价 * 原可平张数) / (张数 + 原可平张数) |
| | | BigDecimal newOpenPrice = totalPrice.add(wholeHoldOrder.getOpeningPrice().multiply(BigDecimal.valueOf(wholeHoldOrder.getSymbolCnt()))).divide(BigDecimal.valueOf(submitOrderDto.getSymbolCnt() + wholeHoldOrder.getSymbolCntSale()), 8, BigDecimal.ROUND_DOWN); |
| | | BigDecimal newOpenPrice = totalPrice.add(wholeHoldOrder.getOpeningPrice().multiply(BigDecimal.valueOf(wholeHoldOrder.getSymbolCntSale()))).divide(BigDecimal.valueOf(submitOrderDto.getSymbolCnt() + wholeHoldOrder.getSymbolCntSale()), 8, BigDecimal.ROUND_DOWN); |
| | | log.info("计算后开仓价:{}", newOpenPrice); |
| | | BigDecimal fee = openFeePrice.add(wholeHoldOrder.getOpeningFeeAmount()); |
| | | log.info("手续费相加:{}", fee); |
| | |
| | | |
| | | // 更新可平张数 |
| | | holdOrderEntity.setSymbolCntSale(sub); |
| | | holdOrderEntity.setSymbolCnt(sub); |
| | | contractHoldOrderDao.updateById(holdOrderEntity); |
| | | |
| | | // 将待平张数放入缓存 |
| | |
| | | @Override |
| | | public Result changeLeverRate(ChangeLeverRateDto changeLeverRateDto) { |
| | | MemberEntity memberEntity = LoginUserUtils.getAppLoginUser(); |
| | | |
| | | List<ContractHoldOrderEntity> holdOrders = contractHoldOrderDao.selectHoldOrderListForWholeByMemberIdAndSymbol(memberEntity.getId(), changeLeverRateDto.getSymbol()); |
| | | if (CollUtil.isNotEmpty(holdOrders)) { |
| | | return Result.fail("存在持仓, 无法调整杠杆"); |
| | | } |
| | | MemberLevelRateEntity levelRateEntity = memberLevelRateDao.selectLeverRateByMemberIdAndSymbol(memberEntity.getId(), changeLeverRateDto.getSymbol()); |
| | | levelRateEntity.setLevelRateUp(changeLeverRateDto.getLeverRate()); |
| | | levelRateEntity.setLevelRateDown(changeLeverRateDto.getLeverRate()); |