From ed57e750b5e2cf14fe5d447ff318228f8df77d23 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Fri, 05 Jun 2026 16:48:51 +0800
Subject: [PATCH] refactor(okx): 移除算法单频道处理器并优化网格交易重置逻辑

---
 src/main/java/com/xcong/excoin/modules/okxNewPrice/gridWs/OkxPositionsChannelHandler.java |   19 ++++++++++++++++---
 1 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/okxNewPrice/gridWs/OkxPositionsChannelHandler.java b/src/main/java/com/xcong/excoin/modules/okxNewPrice/gridWs/OkxPositionsChannelHandler.java
index 5749544..2a77f76 100644
--- a/src/main/java/com/xcong/excoin/modules/okxNewPrice/gridWs/OkxPositionsChannelHandler.java
+++ b/src/main/java/com/xcong/excoin/modules/okxNewPrice/gridWs/OkxPositionsChannelHandler.java
@@ -45,6 +45,14 @@
     }
 
     @Override
+    public void onSubscribed() {
+        log.info("[OKX-WS] {} 订阅确认", CHANNEL_NAME);
+        if (gridTradeService != null) {
+            gridTradeService.onSubscriptionConfirmed(CHANNEL_NAME);
+        }
+    }
+
+    @Override
     public void unsubscribe(WebSocketClient ws) {
         JSONObject msg = new JSONObject();
         JSONObject arg = new JSONObject();
@@ -69,11 +77,16 @@
             if (data == null || data.isEmpty()) return true;
             for (int i = 0; i < data.size(); i++) {
                 JSONObject pos = data.getJSONObject(i);
-                if (!instId.equals(pos.getString("instId"))) continue;
+                String posInstId = pos.getString("instId");
+                if (posInstId == null || !instId.equals(posInstId)) continue;
 
                 String posSide = pos.getString("posSide");
-                BigDecimal posSize = new BigDecimal(pos.getString("pos"));
-                BigDecimal avgPx = new BigDecimal(pos.getString("avgPx"));
+                String posStr = pos.getString("pos");
+                String avgPxStr = pos.getString("avgPx");
+                if (posStr == null || posStr.isEmpty() || avgPxStr == null || avgPxStr.isEmpty()) continue;
+
+                BigDecimal posSize = new BigDecimal(posStr);
+                BigDecimal avgPx = new BigDecimal(avgPxStr);
                 log.info("[OKX-WS] 持仓更新, instId:{}, posSide:{}, pos:{}, avgPx:{}",
                         instId, posSide, posSize, avgPx);
 

--
Gitblit v1.9.1