| | |
| | | return result;
|
| | | }
|
| | |
|
| | | public static BigDecimal calForcePriceForWhole(MemberEntity memberEntity, ContractHoldOrderEntity contractHoldOrderEntity) {
|
| | | ContractHoldOrderDao holdOrderDao = SpringContextHolder.getBean(ContractHoldOrderDao.class);
|
| | | MemberWalletContractDao walletContractDao = SpringContextHolder.getBean(MemberWalletContractDao.class);
|
| | |
|
| | | Long memberId = memberEntity.getId();
|
| | | MemberWalletContractEntity walletContract = walletContractDao.findWalletContractByMemberIdAndSymbol(memberId, CoinTypeEnum.USDT.name());
|
| | | List<ContractHoldOrderEntity> holdOrderEntities = holdOrderDao.selectHoldOrderListForWholeByMemberIdAndSymbol(memberId, null);
|
| | | BigDecimal forcePrice = BigDecimal.ZERO;
|
| | | if (CollUtil.isNotEmpty(holdOrderEntities)) {
|
| | | BigDecimal totalBondAmount = BigDecimal.ZERO;
|
| | | BigDecimal totalProfitOrLoss = BigDecimal.ZERO;
|
| | | for (ContractHoldOrderEntity holdOrderEntity : holdOrderEntities) {
|
| | | totalBondAmount = totalBondAmount.add(holdOrderEntity.getBondAmount());
|
| | | totalProfitOrLoss = totalProfitOrLoss.add(calProfitOrLoss(holdOrderEntity, memberEntity));
|
| | | }
|
| | |
|
| | | BigDecimal divideChild = walletContract.getTotalBalance().subtract(totalBondAmount).add(totalProfitOrLoss);
|
| | | BigDecimal divideParent = contractHoldOrderEntity.getSymbolSku().multiply(new BigDecimal(contractHoldOrderEntity.getSymbolCntSale()));
|
| | |
|
| | | BigDecimal divide = divideChild.divide(divideParent, 8, BigDecimal.ROUND_DOWN);
|
| | |
|
| | | if (ContractHoldOrderEntity.OPENING_TYPE_MORE == contractHoldOrderEntity.getOpeningType()) {
|
| | | forcePrice = contractHoldOrderEntity.getOpeningPrice().subtract(divide);
|
| | | } else {
|
| | | forcePrice = contractHoldOrderEntity.getOpeningPrice().add(divide);
|
| | | }
|
| | | }
|
| | | return forcePrice;
|
| | | }
|
| | |
|
| | | public static BigDecimal calProfitOrLoss(ContractHoldOrderEntity holdOrderEntity, MemberEntity memberEntity) {
|
| | | CacheSettingUtils cacheSettingUtils = SpringContextHolder.getBean(CacheSettingUtils.class);
|
| | | RedisUtils redisUtils = SpringContextHolder.getBean(RedisUtils.class);
|
| | |
| | | redisUtils.set(AppContants.HOLD_BOND_RATIO, tradeSetting.getHoldBondRatio());
|
| | | }
|
| | |
|
| | | return contractHoldOrder.getOpeningPrice().multiply(new BigDecimal(contractHoldOrder.getSymbolCntSale())).multiply(holdBondRatio).multiply(contractHoldOrder.getSymbolSku());
|
| | | return contractHoldOrder.getOpeningPrice().multiply(new BigDecimal(contractHoldOrder.getSymbolCntSale())).multiply(holdBondRatio.multiply(new BigDecimal(100))).multiply(contractHoldOrder.getSymbolSku()).divide(new BigDecimal(contractHoldOrder.getLeverRatio()), 8, BigDecimal.ROUND_DOWN);
|
| | | }
|
| | | }
|