From 829f629756e5402bcd3e9f6ef1f9c6dbffbabb11 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Wed, 17 Apr 2024 14:46:29 +0800
Subject: [PATCH] 55测试环境

---
 src/main/java/com/xcong/excoin/utils/CalculateUtil.java |   20 ++++++++++++--------
 1 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/utils/CalculateUtil.java b/src/main/java/com/xcong/excoin/utils/CalculateUtil.java
index 45b88c9..6ce033e 100644
--- a/src/main/java/com/xcong/excoin/utils/CalculateUtil.java
+++ b/src/main/java/com/xcong/excoin/utils/CalculateUtil.java
@@ -205,7 +205,10 @@
     }
 
     /**
-     * 权益-维持保证金+开仓价*张数*规格-开仓价*费率-(总账户-维持保证金) / 规格*张数
+     * 多:
+     * (开仓价*数量*规格 - 其他币种保证金 - (总账户金额-维持保证金) - (权益 - 维持保证金)) / 数量*规格
+     * 空:
+     * (开仓价*数量*规格 - 其他币种保证金 + (总账户金额-维持保证金) + (权益 - 维持保证金)) / 数量*规格
      *
      * @param memberEntity
      * @param contractHoldOrderEntity
@@ -232,7 +235,7 @@
                 }
 
 
-                BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(contractHoldOrderEntity.getSymbol())));
+                BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(holdOrderEntity.getSymbol())));
                 if (type == 2) {
                     log.info("newPrice : {}", newPrice);
                 }
@@ -241,11 +244,11 @@
                 // 开多
                 if (ContractHoldOrderEntity.OPENING_TYPE_MORE == holdOrderEntity.getOpeningType()) {
                     // (最新价-开仓价)*规格*张数
-                    rewardRatio = newPrice.subtract(holdOrderEntity.getOpeningPrice()).multiply(contractHoldOrderEntity.getSymbolSku()).multiply(new BigDecimal(holdOrderEntity.getSymbolCntSale()));
+                    rewardRatio = newPrice.subtract(holdOrderEntity.getOpeningPrice()).multiply(holdOrderEntity.getSymbolSku()).multiply(new BigDecimal(holdOrderEntity.getSymbolCntSale()));
                     // 开空
                 } else {
                     // (开仓价-最新价)*规格*张数
-                    rewardRatio = holdOrderEntity.getOpeningPrice().subtract(newPrice).multiply(contractHoldOrderEntity.getSymbolSku()).multiply(new BigDecimal(holdOrderEntity.getSymbolCntSale()));
+                    rewardRatio = holdOrderEntity.getOpeningPrice().subtract(newPrice).multiply(holdOrderEntity.getSymbolSku()).multiply(new BigDecimal(holdOrderEntity.getSymbolCntSale()));
                 }
 
                 if (memberEntity.getIsProfit() == MemberEntity.IS_PROFIT_Y) {
@@ -266,13 +269,14 @@
             BigDecimal ratio = contractHoldOrderEntity.getOpeningPrice().multiply(new BigDecimal("0.005"));
             // 总账户 - 维持保证金
             BigDecimal orderProfitOrLoss = walletContract.getTotalBalance().subtract(holdBond);
-            // 权益
-            BigDecimal qy = walletContract.getTotalBalance().add(totalProfitOrLoss);
+            // 权益 - 维持保证金
+            BigDecimal qy = walletContract.getTotalBalance().add(totalProfitOrLoss).subtract(holdBond);
+//            BigDecimal qy = BigDecimal.ZERO;
 
-            BigDecimal prefix = cost.subtract(ratio);
+            BigDecimal prefix = cost.subtract(totalBondAmount);
             BigDecimal divideChild;
             if (ContractHoldOrderEntity.OPENING_TYPE_MORE == contractHoldOrderEntity.getOpeningType()) {
-                divideChild = cost.subtract(orderProfitOrLoss).subtract(qy);
+                divideChild = prefix.subtract(orderProfitOrLoss).subtract(qy);
             } else {
                 divideChild = prefix.add(orderProfitOrLoss).add(qy);
             }

--
Gitblit v1.9.1