From 6933ef2edc3911311976cfc0f077c395be510f34 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Wed, 10 Dec 2025 13:37:18 +0800
Subject: [PATCH] feat(okx): 优化账户与持仓数据处理逻辑

---
 src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/TradeOrderWs.java |   31 ++++++++++++++++++++-----------
 1 files changed, 20 insertions(+), 11 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/TradeOrderWs.java b/src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/TradeOrderWs.java
index 0c9eae3..aa3610d 100644
--- a/src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/TradeOrderWs.java
+++ b/src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/TradeOrderWs.java
@@ -24,27 +24,36 @@
     public static void orderEvent(WebSocketClient webSocketClient, RedisUtils redisUtils, String side) {
 
         String buyCnt = null;
-
+        String ctval = getRedisValue(redisUtils, InstrumentsWs.INSTRUMENTSWS_CHANNEL, ":ctVal");
+        String buyCntNormal = getRedisValue(redisUtils, PositionsWs.POSITIONSWS_CHANNEL, ":buyCnt");
+        String pos = getRedisValue(redisUtils, PositionsWs.POSITIONSWS_CHANNEL, ":pos");
         if (OrderParamEnums.ORDERING.getValue().equals(side)) {
             return;
         } else if (OrderParamEnums.HOLDING.getValue().equals(side)) {
             return;
         } else if (OrderParamEnums.INIT.getValue().equals(side)) {
             side = OrderParamEnums.BUY.getValue();
-            buyCnt = getRedisValue(redisUtils, InstrumentsWs.INSTRUMENTSWS_CHANNEL, ":ctVal");
+            if (StrUtil.isNotBlank(buyCntNormal) && BigDecimal.ZERO.compareTo(new BigDecimal(buyCntNormal)) > 0) {
+                buyCnt = buyCntNormal;
+            }else{
+                buyCnt = ctval;
+            }
         } else if (OrderParamEnums.OUT.getValue().equals(side)) {
             side = OrderParamEnums.SELL.getValue();
-            buyCnt = getRedisValue(redisUtils, PositionsWs.POSITIONSWS_CHANNEL, ":pos");
-        } else {
-            if (OrderParamEnums.BUY.getValue().equals(side)){
-                String buyCntNormal = getRedisValue(redisUtils, PositionsWs.POSITIONSWS_CHANNEL, ":buyCnt");
-                if (StrUtil.isNotBlank(buyCntNormal)) {
-                    buyCnt = buyCntNormal;
-                }
+            buyCnt = pos;
+        } else if (OrderParamEnums.BUY.getValue().equals(side)){
+            side = OrderParamEnums.BUY.getValue();
+            if (StrUtil.isNotBlank(buyCntNormal) && BigDecimal.ZERO.compareTo(new BigDecimal(buyCntNormal)) > 0) {
+                buyCnt = buyCntNormal;
             }else{
-                side = OrderParamEnums.SELL.getValue();
-                buyCnt = getRedisValue(redisUtils, PositionsWs.POSITIONSWS_CHANNEL, ":pos");
+                buyCnt = ctval;
             }
+        }else if (OrderParamEnums.SELL.getValue().equals(side)){
+            side = OrderParamEnums.SELL.getValue();
+            buyCnt = getRedisValue(redisUtils, PositionsWs.POSITIONSWS_CHANNEL, ":pos");
+        }else{
+            log.warn("操作信号异常,请检查下单操作...");
+            return;
         }
 
         // 校验必要参数

--
Gitblit v1.9.1