From 770a03e01a8ef5e799b1c2c371bc48d22fcbccf1 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Fri, 04 Sep 2020 14:35:53 +0800 Subject: [PATCH] 20200904 --- src/main/java/com/xcong/excoin/utils/CalculateUtil.java | 24 ++++++++++++++++++------ 1 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/xcong/excoin/utils/CalculateUtil.java b/src/main/java/com/xcong/excoin/utils/CalculateUtil.java index d687981..973346f 100644 --- a/src/main/java/com/xcong/excoin/utils/CalculateUtil.java +++ b/src/main/java/com/xcong/excoin/utils/CalculateUtil.java @@ -2,6 +2,7 @@ import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.xcong.excoin.common.enumerates.CoinTypeEnum; import com.xcong.excoin.common.enumerates.RabbitPriceTypeEnum; @@ -85,7 +86,7 @@ * 全仓模式 -- 预估强平价 * 开仓价 - (权益 - 其他币种成本)/当前币种成本 * (开仓价 * 杠杆) */ - public static void getForceSetPriceForWhole(@NotNull String aa, @NotNull MemberEntity memberEntity) { + public static BigDecimal getForceSetPriceForWhole(String currentSymbol, @NotNull MemberEntity memberEntity) { ContractHoldOrderDao holdOrderDao = SpringContextHolder.getBean(ContractHoldOrderDao.class); MemberWalletContractDao walletContractDao = SpringContextHolder.getBean(MemberWalletContractDao.class); @@ -93,6 +94,8 @@ MemberWalletContractEntity walletContract = walletContractDao.findWalletContractByMemberIdAndSymbol(memberId, CoinTypeEnum.USDT.name()); List<ContractHoldOrderEntity> holdOrderEntities = holdOrderDao.selectHoldOrderListForWholeByMemberIdAndSymbol(memberId, null); List<String> symbols = holdOrderDao.selectWholeHoldOrderSymbolsByMemberId(memberId); + + BigDecimal result = BigDecimal.ZERO; if (CollUtil.isNotEmpty(holdOrderEntities)) { for (String symbol : symbols) { @@ -128,18 +131,27 @@ profitOrLoss = profitOrLoss.add(calProfitOrLoss(holdOrderEntity, memberEntity)); } - log.info("{}, {}, {}, {}, {}, {}", totalBondAmount, symbolFeeAmount, symbolFeeAmount, openPrice, profitOrLoss, leverRatio); +// log.info("{}, {}, {}, {}, {}, {}", totalBondAmount, symbolBondAmount, symbolFeeAmount, openPrice, profitOrLoss, leverRatio); BigDecimal sub = walletContract.getTotalBalance().add(profitOrLoss).subtract(symbolFeeAmount).subtract(totalBondAmount); - log.info("sub -- {}", sub); +// log.info("sub -- {}", sub); BigDecimal divide = sub.divide(symbolBondAmount, 8, BigDecimal.ROUND_DOWN); - log.info("divide -- {}", divide); +// log.info("divide -- {}", divide); BigDecimal divide2 = openPrice.divide(BigDecimal.valueOf(leverRatio), 8, BigDecimal.ROUND_DOWN); - log.info("divide2 -- {}", divide2); +// log.info("divide2 -- {}", divide2); BigDecimal forcePrice = openPrice.subtract(divide.multiply(divide2)); - log.info("forcePrice -- {}", forcePrice); +// log.info("forcePrice -- {}", forcePrice); + if (StrUtil.isBlank(currentSymbol)) { + holdOrderDao.updateForcePriceBySymbolAndMemberId(forcePrice, memberId, symbol); + } + + if (symbol.equalsIgnoreCase(currentSymbol)) { + result = forcePrice; + } } } + + return result; } private static BigDecimal calProfitOrLoss(ContractHoldOrderEntity holdOrderEntity, MemberEntity memberEntity) { -- Gitblit v1.9.1