Helius
2021-02-02 d7d0550da50ee64d0916cde55ed5991de8e74c64
modify
2 files modified
18 ■■■■ changed files
src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java 14 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/utils/CalculateUtil.java 4 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java
@@ -492,6 +492,7 @@
                    continue;
                }
                holdOrderEntity.setForceClosingPrice(getForceSetPrice(wholePriceData, holdOrderEntity));
                contractHoldOrderDao.deleteById(holdOrderDataModel.getId());
                ContractOrderEntity contractOrderEntity = ContractHoldOrderEntityMapper.INSTANCE.holdOrderToOrder(holdOrderEntity);
@@ -506,7 +507,6 @@
                contractOrderEntity.setRewardRatio(rewardRatio);
                contractOrderEntity.setRewardAmount(holdOrderDataModel.getRewardAmount().add(contractOrderEntity.getBondAmount().subtract(contractOrderEntity.getOpeningFeeAmount()).negate()));
                contractOrderEntity.setClosingPrice(holdOrderDataModel.getClosingPrice());
                contractOrderEntity.setForceClosingPrice(CalculateUtil.getForceSetPriceForWhole(holdOrderDataModel.getSymbol(), memberEntity));
                // 订单状态转换
                if (ContractOrderEntity.ORDER_TYPE_OPEN_MORE == contractOrderEntity.getOrderType()) {
@@ -602,4 +602,16 @@
            }
        }
    }
    /**
     * 1                      2                       3
     * 开仓价 - (权益 - 其他币种成本)/当前币种成本 * (开仓价 * 1/杠杆)
     *
     * @param dataModel
     * @param holdOrder
     * @return
     */
    private BigDecimal getForceSetPrice(WholePriceDataModel dataModel, ContractHoldOrderEntity holdOrder) {
        return holdOrder.getOpeningPrice().subtract(holdOrder.getOpeningPrice().multiply(BigDecimal.ONE.divide(new BigDecimal(holdOrder.getLeverRatio()), 8, BigDecimal.ROUND_DOWN)));
    }
}
src/main/java/com/xcong/excoin/utils/CalculateUtil.java
@@ -80,7 +80,7 @@
    /**
     * 全仓模式 -- 预估强平价
     * 开仓价 - (权益 - 其他币种成本)/当前币种成本 * (开仓价 * 杠杆)
     * 开仓价 - (权益 - 其他币种成本)/当前币种成本 * (开仓价 * 1/杠杆)
     */
    public static BigDecimal getForceSetPriceForWhole(String currentSymbol, @NotNull MemberEntity memberEntity) {
        ContractHoldOrderDao holdOrderDao = SpringContextHolder.getBean(ContractHoldOrderDao.class);
@@ -166,7 +166,7 @@
        return result;
    }
    private static BigDecimal calProfitOrLoss(ContractHoldOrderEntity holdOrderEntity, MemberEntity memberEntity) {
    public static BigDecimal calProfitOrLoss(ContractHoldOrderEntity holdOrderEntity, MemberEntity memberEntity) {
        CacheSettingUtils cacheSettingUtils = SpringContextHolder.getBean(CacheSettingUtils.class);
        RedisUtils redisUtils = SpringContextHolder.getBean(RedisUtils.class);
        BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(holdOrderEntity.getSymbol());