wzy
2021-04-08 1a3f2693a476338da836de84cbded66bc9dfcf42
modify
2 files modified
29 ■■■■ changed files
src/main/java/com/xcong/excoin/utils/CalculateUtil.java 20 ●●●●● patch | view | raw | blame | history
src/test/java/com/xcong/excoin/WholeTest.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/utils/CalculateUtil.java
@@ -230,25 +230,7 @@
                    totalBondAmount = totalBondAmount.add(holdOrderEntity.getBondAmount());
                }
                // 盈亏
                BigDecimal rewardRatio = BigDecimal.ZERO;
                // 开多
                if (ContractHoldOrderEntity.OPENING_TYPE_MORE == holdOrderEntity.getOpeningType()) {
                    // (最新价-开仓价)*规格*张数
                    rewardRatio = newPrice.subtract(holdOrderEntity.getOpeningPrice()).multiply(contractHoldOrderEntity.getSymbolSku()).multiply(new BigDecimal(holdOrderEntity.getSymbolCntSale()));
                    // 开空
                } else {
                    // (开仓价-最新价)*规格*张数
                    rewardRatio = holdOrderEntity.getOpeningPrice().subtract(newPrice).multiply(contractHoldOrderEntity.getSymbolSku()).multiply(new BigDecimal(holdOrderEntity.getSymbolCntSale()));
                }
                if (memberEntity.getIsProfit() == MemberEntity.IS_PROFIT_Y) {
                    PlatformTradeSettingEntity tradeSettingEntity = cacheSettingUtils.getTradeSetting();
                    if (rewardRatio.compareTo(BigDecimal.ZERO) > -1) {
                        rewardRatio = rewardRatio.multiply(BigDecimal.ONE.subtract(tradeSettingEntity.getProfitParam()));
                    }
                }
                totalProfitOrLoss = totalProfitOrLoss.add(rewardRatio);
                totalProfitOrLoss = totalProfitOrLoss.add(calProfitOrLoss(holdOrderEntity, memberEntity));
            }
            // 维持保证金
src/test/java/com/xcong/excoin/WholeTest.java
@@ -17,6 +17,7 @@
import com.xcong.excoin.rabbit.pricequeue.WebsocketPriceService;
import com.xcong.excoin.rabbit.producer.OrderProducer;
import com.xcong.excoin.utils.CalculateUtil;
import com.xcong.excoin.utils.CoinTypeConvert;
import com.xcong.excoin.utils.RedisUtils;
import com.xcong.excoin.utils.ThreadPoolUtils;
import lombok.SneakyThrows;
@@ -200,10 +201,12 @@
    @Test
    public void wholeForceNewTest() {
        MemberEntity memberEntity = memberDao.selectById(15L);
        ContractHoldOrderEntity holdOrder = contractHoldOrderDao.selectById(724L);
        BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey("BTC/USDT")));
        System.out.println(CalculateUtil.calWholePriceTwo(memberEntity, holdOrder, 1, BigDecimal.ZERO));
        MemberEntity memberEntity = memberDao.selectById(22L);
        ContractHoldOrderEntity holdOrder = contractHoldOrderDao.selectById(743L);
        System.out.println(CalculateUtil.calWholePriceTwo(memberEntity, holdOrder, 1, newPrice));
    }
    @Test