From 976a10e1311226ea9d883e1f672b1d70bbeb1166 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Fri, 12 Dec 2025 12:01:41 +0800
Subject: [PATCH] fix(okxNewPrice): 优化账户亏损判断逻辑

---
 src/main/java/com/xcong/excoin/modules/okxNewPrice/celue/CaoZuoServiceImpl.java |   23 ++++++++++++-----------
 1 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/okxNewPrice/celue/CaoZuoServiceImpl.java b/src/main/java/com/xcong/excoin/modules/okxNewPrice/celue/CaoZuoServiceImpl.java
index 74e44dc..5784024 100644
--- a/src/main/java/com/xcong/excoin/modules/okxNewPrice/celue/CaoZuoServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/okxNewPrice/celue/CaoZuoServiceImpl.java
@@ -88,16 +88,18 @@
         log.info("预期抗仓金额: {}", kangYaPercent);
         BigDecimal  kangYaAmount = cashBal.multiply(new BigDecimal(kangYaPercent));
 
-        // 账户预期亏损金额比这个还小时,立即止损
-        if (realKuiSunAmount.compareTo(zhiSunAmount) > 0){
-            log.error("账户冷静止损......");
-            WsMapBuild.saveStringToMap(InstrumentsWs.INSTRUMENTSWSMAP, CoinEnums.OUT.name(),  OrderParamEnums.OUT_YES.getValue());
-            return OrderParamEnums.OUT.getValue();
-        }
-        // 判断抗压
-        if (realKuiSunAmount.compareTo(kangYaAmount) > 0 && realKuiSunAmount.compareTo(zhiSunAmount) <= 0){
-            log.error("账户紧张扛仓......");
-            return OrderParamEnums.HOLDING.getValue();
+        if (realKuiSunAmount.compareTo(BigDecimal.ZERO) > 0){
+            // 账户预期亏损金额比这个还小时,立即止损
+            if (realKuiSunAmount.compareTo(zhiSunAmount) > 0){
+                log.error("账户冷静止损......");
+                WsMapBuild.saveStringToMap(InstrumentsWs.INSTRUMENTSWSMAP, CoinEnums.OUT.name(),  OrderParamEnums.OUT_YES.getValue());
+                return OrderParamEnums.OUT.getValue();
+            }
+            // 判断抗压
+            if (realKuiSunAmount.compareTo(kangYaAmount) > 0 && realKuiSunAmount.compareTo(zhiSunAmount) <= 0){
+                log.error("账户紧张扛仓......");
+                return OrderParamEnums.HOLDING.getValue();
+            }
         }
 
         BigDecimal ordFroz = WsMapBuild.parseBigDecimalSafe(AccountWs.ACCOUNTWSMAP.get("ordFroz"));
@@ -106,7 +108,6 @@
             return OrderParamEnums.INIT.getValue();
         }
         // 判断是否保证金超标
-
         BigDecimal totalOrderUsdt = WsMapBuild.parseBigDecimalSafe(CoinEnums.TOTAL_ORDER_USDT.name());
         if (ordFroz.compareTo(totalOrderUsdt) >= 0){
             log.error("已满仓......");

--
Gitblit v1.9.1