From 1278ee2bd43b401489b4377b0eee5259b3d5bbbb Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Wed, 13 May 2026 18:17:19 +0800
Subject: [PATCH] refactor(okxNewPrice): 账户配置

---
 src/main/java/com/xcong/excoin/modules/okxApi/OkxWebSocketClientManager.java |   34 ++++++++++++++++++++++++----------
 1 files changed, 24 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/okxApi/OkxWebSocketClientManager.java b/src/main/java/com/xcong/excoin/modules/okxApi/OkxWebSocketClientManager.java
index 9975f4e..bee8c45 100644
--- a/src/main/java/com/xcong/excoin/modules/okxApi/OkxWebSocketClientManager.java
+++ b/src/main/java/com/xcong/excoin/modules/okxApi/OkxWebSocketClientManager.java
@@ -28,7 +28,7 @@
             config = OkxConfig.builder()
                     .apiKey("ac76252d-e717-4459-a6f9-80512aed5ea0")
                     .secretKey("A8168543EF4F08A6DBFE27AB23956898")
-                    .passphrase("Aa123123@")
+                    .passphrase("Aa12345678@")
                     .contract("ETH-USDT-SWAP")
                     .leverage("100")
                     .marginMode("cross")
@@ -48,11 +48,6 @@
             gridTradeService = new OkxGridTradeService(config, accountName);
             gridTradeService.startGrid();
 
-            wsKlineClient = new OkxKlineWebSocketClient(config.getWsKlineUrl());
-            wsKlineClient.addChannelHandler(new OkxCandlestickChannelHandler(config.getContract(), gridTradeService));
-            wsKlineClient.init();
-            log.info("[管理器] K线WS已连接, 已注册K线频道处理器");
-
             wsPrivateClient = new OkxKlineWebSocketClient(
                     config.getWsPrivateUrl(),
                     config.getApiKey(),
@@ -61,10 +56,22 @@
             wsPrivateClient.addChannelHandler(new OkxPositionsChannelHandler(config.getContract(), gridTradeService));
             wsPrivateClient.addChannelHandler(new OkxAccountChannelHandler());
             wsPrivateClient.addChannelHandler(new OkxOrderInfoChannelHandler(config.getContract(), gridTradeService, config));
-            wsPrivateClient.init();
-            log.info("[管理器] 私有WS已连接, 已注册 3 个频道处理器");
 
+            wsPrivateClient.setOnLoginSuccess(() -> {
+                log.info("[管理器] 私有WS登录完成,启动K线订阅");
+                try {
+                    wsKlineClient = new OkxKlineWebSocketClient(config.getWsKlineUrl());
+                    wsKlineClient.addChannelHandler(new OkxCandlestickChannelHandler(config.getContract(), gridTradeService));
+                    wsKlineClient.init();
+                    log.info("[管理器] K线WS已连接, 已注册K线频道处理器");
+                } catch (Exception e) {
+                    log.error("[管理器] K线WS初始化失败", e);
+                }
+            });
+
+            wsPrivateClient.init();
             gridTradeService.setWebSocketClient(wsPrivateClient.getWebSocketClient());
+            log.info("[管理器] 私有WS已连接, 等待登录完成...");
 
         } catch (Exception e) {
             log.error("[管理器] 初始化失败", e);
@@ -108,8 +115,15 @@
             log.error("[管理器] 设置杠杆倍数失败,策略可能无法正常运作");
         }
 
-        log.info("[管理器] 账户配置完成, posMode:{}, leverage:{}, marginMode:{}",
-                config.getPosMode(), config.getLeverage(), config.getMarginMode());
+        String instIdCode = restClient.fetchInstIdCode("SWAP", config.getContract());
+        if (instIdCode != null) {
+            config.setInstIdCode(instIdCode);
+        } else {
+            log.error("[管理器] 获取instIdCode失败,WS下单将无法正常工作");
+        }
+
+        log.info("[管理器] 账户配置完成, posMode:{}, leverage:{}, marginMode:{}, instIdCode:{}",
+                config.getPosMode(), config.getLeverage(), config.getMarginMode(), config.getInstIdCode());
     }
 
     public OkxKlineWebSocketClient getKlineWebSocketClient() { return wsKlineClient; }

--
Gitblit v1.9.1