From 3cd5191a2840d770a166c937da1b3c8493285c47 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Fri, 12 Dec 2025 12:48:00 +0800
Subject: [PATCH] fix(okx): 更新账户占用保证金字段为imr并调整相关逻辑

---
 src/main/java/com/xcong/excoin/modules/okxNewPrice/celue/CaoZuoServiceImpl.java |   34 ++++++++++++++++++----------------
 1 files changed, 18 insertions(+), 16 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 f6a9df5..8d8fa58 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
@@ -39,8 +39,8 @@
     @Override
     public String caoZuo() {
         log.info("开始执行操作CaoZuoServiceImpl......");
-        BigDecimal cashBal = AccountWs.ACCOUNTWSMAP.get("cashBal");
-        BigDecimal availBal = AccountWs.ACCOUNTWSMAP.get("availBal");
+        BigDecimal cashBal = WsMapBuild.parseBigDecimalSafe(AccountWs.ACCOUNTWSMAP.get("cashBal"));
+        BigDecimal availBal = WsMapBuild.parseBigDecimalSafe(AccountWs.ACCOUNTWSMAP.get("availBal"));
 
         // 判断账户余额是否充足
         if (cashBal.compareTo(BigDecimal.ZERO) <= 0){
@@ -88,26 +88,28 @@
         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 = AccountWs.ACCOUNTWSMAP.get("ordFroz");
-        if (BigDecimal.ZERO.compareTo( ordFroz) >= 0) {
+        BigDecimal ordFrozImr = WsMapBuild.parseBigDecimalSafe(AccountWs.ACCOUNTWSMAP.get("imr"));
+        if (BigDecimal.ZERO.compareTo( ordFrozImr) >= 0) {
             log.error("占用保证金为零,进行初始化订单");
             return OrderParamEnums.INIT.getValue();
         }
         // 判断是否保证金超标
-        BigDecimal totalOrderUsdt = AccountWs.ACCOUNTWSMAP.get(CoinEnums.TOTAL_ORDER_USDT.name());
-        if (ordFroz.compareTo(totalOrderUsdt) >= 0){
+        BigDecimal totalOrderUsdt = WsMapBuild.parseBigDecimalSafe(CoinEnums.TOTAL_ORDER_USDT.name());
+        if (ordFrozImr.compareTo(totalOrderUsdt) >= 0){
             log.error("已满仓......");
             return OrderParamEnums.HOLDING.getValue();
         }

--
Gitblit v1.9.1