Administrator
3 hours ago bb272e1e2c0d4637d6d9ebfefb635662b804b459
src/main/java/com/xcong/excoin/modules/okxApi/OkxWebSocketClientManager.java
@@ -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; }