| | |
| | |
|
| | |
|
| | | 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;
|
| | |
| | | * 全仓模式 -- 预估强平价
|
| | | * 开仓价 - (权益 - 其他币种成本)/当前币种成本 * (开仓价 * 杠杆)
|
| | | */
|
| | | public static BigDecimal getForceSetPriceForWhole(@NotNull String currentSymbol, @NotNull MemberEntity memberEntity) {
|
| | | public static BigDecimal getForceSetPriceForWhole(String currentSymbol, @NotNull MemberEntity memberEntity) {
|
| | | ContractHoldOrderDao holdOrderDao = SpringContextHolder.getBean(ContractHoldOrderDao.class);
|
| | | MemberWalletContractDao walletContractDao = SpringContextHolder.getBean(MemberWalletContractDao.class);
|
| | |
|
| | |
| | | profitOrLoss = profitOrLoss.add(calProfitOrLoss(holdOrderEntity, memberEntity));
|
| | | }
|
| | |
|
| | | log.info("{}, {}, {}, {}, {}, {}", totalBondAmount, symbolBondAmount, 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);
|
| | | holdOrderDao.updateForcePriceBySymbolAndMemberId(forcePrice, memberId, symbol);
|
| | | // log.info("forcePrice -- {}", forcePrice);
|
| | | if (StrUtil.isBlank(currentSymbol)) {
|
| | | holdOrderDao.updateForcePriceBySymbolAndMemberId(forcePrice, memberId, symbol);
|
| | | }
|
| | |
|
| | | if (currentSymbol.equalsIgnoreCase(symbol)) {
|
| | | if (symbol.equalsIgnoreCase(currentSymbol)) {
|
| | | result = forcePrice;
|
| | | }
|
| | | }
|