From 1efb1c83d0b6510123cffd17f2eb6ed6d25aa961 Mon Sep 17 00:00:00 2001
From: yz <3614508250@qq.com>
Date: Thu, 27 Jul 2023 11:33:14 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=87=80=E5=80=BCbug=20?=
 =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BE=8E=E5=85=83=E5=9C=A8=E5=90=8E=E5=AF=B9?=
 =?UTF-8?q?=E5=86=B2=E9=80=BB=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../controller/MemberController.java            |  9 +++++----
 .../controller/TakeStashController.java         | 17 +++++++++++++----
 2 files changed, 18 insertions(+), 8 deletions(-)

diff --git a/src/main/java/com/sztzjy/forex/trading_trading/controller/MemberController.java b/src/main/java/com/sztzjy/forex/trading_trading/controller/MemberController.java
index 117c5db..9da7708 100644
--- a/src/main/java/com/sztzjy/forex/trading_trading/controller/MemberController.java
+++ b/src/main/java/com/sztzjy/forex/trading_trading/controller/MemberController.java
@@ -86,14 +86,15 @@ public class MemberController {
         }
         member.setPositionProfitLoss(positionProfitLoss);  //设置持仓盈亏
         Double initialCapital = member.getInitialCapital();//初始资金
-        Double totalAssets = initialCapital+positionProfitLoss;
-        Double netValue = bigDecimalUtils.add(totalAssets, positionProfitLoss);
-        member.setTotalAssets(totalAssets);  //设置总资产
-        member.setNetValue(netValue); //设置净值
         Double cumulativeProfitLoss = member.getCumulativeProfitLoss(); //累计盈亏
         if(cumulativeProfitLoss==null){
             member.setCumulativeProfitLoss(0.0);
         }
+        Double totalAssets = initialCapital+cumulativeProfitLoss;  //总资产=初始资金+累计盈亏
+        Double netValue = bigDecimalUtils.add(totalAssets, positionProfitLoss);
+        member.setTotalAssets(totalAssets);  //设置总资产
+        member.setNetValue(netValue); //设置净值
+
         Double marginUsed = member.getMarginUsed(); //获取已用保证金
         if (marginUsed==null || marginUsed==0.0){
             marginUsed=0.0;
diff --git a/src/main/java/com/sztzjy/forex/trading_trading/controller/TakeStashController.java b/src/main/java/com/sztzjy/forex/trading_trading/controller/TakeStashController.java
index 18eb918..cee562d 100644
--- a/src/main/java/com/sztzjy/forex/trading_trading/controller/TakeStashController.java
+++ b/src/main/java/com/sztzjy/forex/trading_trading/controller/TakeStashController.java
@@ -296,7 +296,7 @@ public class TakeStashController {
             }
         }
 
-        if (buyTotalVolumeTransaction>=sellTotalVolumeTransaction){  //设置带sell\buy的最高交易交易总量
+        if (buyTotalVolumeTransaction>=sellTotalVolumeTransaction){  //设置平仓前 sell\buy的最高交易交易总量
             highVolumeTransaction=buyTotalVolumeTransaction;
         }else {
             highVolumeTransaction=sellTotalVolumeTransaction;
@@ -304,12 +304,21 @@ public class TakeStashController {
         //获取相同tradingCode持仓表总使用保证金
         Double totalMargin=(buyTotalMargin+sellTotalMargin)/totalVolumeTransaction*Constant.LEVERQUANTITY*highVolumeTransaction;
         //获取去除平仓数据后的相同tradingCode持仓表总使用保证金
-        Double totalMarginRemoveCloseTakeStash=0.0;
         if("buy".equals(buySellType)){
-            totalMarginRemoveCloseTakeStash=((buyTotalMargin-transactionVolume*priceTransaction)+sellTotalMargin)/totalVolumeTransaction*Constant.LEVERQUANTITY*highVolumeTransaction;
+            if (buyTotalVolumeTransaction-transactionVolume>=sellTotalVolumeTransaction){  //设置平仓后 sell\buy的最高交易交易总量
+                highVolumeTransaction=buyTotalVolumeTransaction;
+            }else {
+                highVolumeTransaction=sellTotalVolumeTransaction;
+            }
         }else {
-            totalMarginRemoveCloseTakeStash=(buyTotalMargin+(sellTotalMargin-transactionVolume*priceTransaction))/totalVolumeTransaction*Constant.LEVERQUANTITY*highVolumeTransaction;
+            if ( sellTotalVolumeTransaction-transactionVolume>=buyTotalVolumeTransaction){  //设置平仓后 sell\buy的最高交易交易总量
+                highVolumeTransaction=sellTotalVolumeTransaction;
+            }else {
+                highVolumeTransaction=buyTotalVolumeTransaction;
+            }
         }
+        Double totalMarginRemoveCloseTakeStash=0.0;
+        totalMarginRemoveCloseTakeStash=(buyTotalMargin+sellTotalMargin-transactionVolume*priceTransaction)/(totalVolumeTransaction-transactionVolume)*Constant.LEVERQUANTITY*highVolumeTransaction;
         margin=totalMargin-totalMarginRemoveCloseTakeStash;
         return margin;
     }