From 55ff7a6e531b7957476732f299380bbab3ba0065 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Thu, 04 Jun 2026 15:42:32 +0800
Subject: [PATCH] feat(ws): 添加WebSocket订阅状态追踪功能

---
 src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java                        |    6 +
 src/main/java/com/xcong/excoin/modules/gateApi/GateWebSocketClientManager.java                  |    3 
 src/main/java/com/xcong/excoin/modules/gateApi/wsHandler/GateChannelHandler.java                |    6 +
 src/main/java/com/xcong/excoin/modules/gateApi/wsHandler/handler/CandlestickChannelHandler.java |    8 +
 src/main/java/com/xcong/excoin/modules/gateApi/GateKlineWebSocketClient.java                    |   17 ++
 src/main/java/com/xcong/excoin/modules/gateApi/wsHandler/AbstractPrivateChannelHandler.java     |    8 +
 src/main/java/com/xcong/excoin/modules/gateApi/gate-v3.out                                      |  263 +++++++++++++++++++++++++++++++++++++++++++
 7 files changed, 310 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java b/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
index e277173..f54cb94 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
@@ -146,6 +146,7 @@
     private volatile BigDecimal shortPositionSize = BigDecimal.ZERO;
     private Long userId;
     private volatile BigDecimal initialPrincipal = BigDecimal.ZERO;
+    private volatile GateKlineWebSocketClient wsClient;
 
     public GateGridTradeService(GateConfig config) {
         this.config = config;
@@ -376,6 +377,9 @@
 
         //初始化0位置的开仓,并且用空的开仓价格,作为价格基准来划分网格
         if (state == StrategyState.WAITING_KLINE) {
+            if (wsClient == null || !wsClient.areAllSubscribed()) {
+                return;
+            }
             state = StrategyState.OPENING;
             log.info("[Gate] 首根K线到达,开基底仓位 多空各{}张...", config.getBaseQuantity());
             executor.openLong(config.getBaseQuantity(), (orderId) -> {
@@ -1673,4 +1677,6 @@
     public Long getUserId() { return userId; }
     /** @return 当前策略状态 */
     public StrategyState getState() { return state; }
+    /** 注入WS客户端,用于订阅状态检查 */
+    public void setWsClient(GateKlineWebSocketClient wsClient) { this.wsClient = wsClient; }
 }
diff --git a/src/main/java/com/xcong/excoin/modules/gateApi/GateKlineWebSocketClient.java b/src/main/java/com/xcong/excoin/modules/gateApi/GateKlineWebSocketClient.java
index 156c76b..811bb20 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateKlineWebSocketClient.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateKlineWebSocketClient.java
@@ -258,6 +258,12 @@
             }
             if ("subscribe".equals(event)) {
                 log.info("[WS] {} 订阅成功: {}", channel, response.getJSONObject("result"));
+                for (GateChannelHandler handler : channelHandlers) {
+                    if (channel.equals(handler.getChannelName())) {
+                        handler.setSubscribed(true);
+                        break;
+                    }
+                }
                 return;
             }
             if ("unsubscribe".equals(event)) {
@@ -282,6 +288,17 @@
         }
     }
 
+    /**
+     * 检查所有已注册的频道是否都已收到订阅成功确认。
+     */
+    public boolean areAllSubscribed() {
+        if (channelHandlers.isEmpty()) return false;
+        for (GateChannelHandler h : channelHandlers) {
+            if (!h.isSubscribed()) return false;
+        }
+        return true;
+    }
+
     // ---- heartbeat ----
 
     /**
diff --git a/src/main/java/com/xcong/excoin/modules/gateApi/GateWebSocketClientManager.java b/src/main/java/com/xcong/excoin/modules/gateApi/GateWebSocketClientManager.java
index be940e4..a61f680 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateWebSocketClientManager.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateWebSocketClientManager.java
@@ -100,7 +100,7 @@
             gridTradeService = new GateGridTradeService(config);
             gridTradeService.init();
 
-            // 2. 创建 WS 客户端并注册 3 个频道处理器
+            // 2. 创建 WS 客户端并注册频道处理器
             wsClient = new GateKlineWebSocketClient(config.getWsUrl());
             wsClient.addChannelHandler(new CandlestickChannelHandler(config.getContract(), gridTradeService));
             wsClient.addChannelHandler(new PositionsChannelHandler(
@@ -113,6 +113,7 @@
                     config.getApiKey(), config.getApiSecret(), config.getContract(), gridTradeService));
             wsClient.addChannelHandler(new AutoOrdersChannelHandler(
                     config.getApiKey(), config.getApiSecret(), config.getContract(), gridTradeService));
+            gridTradeService.setWsClient(wsClient);
             wsClient.init();
             log.info("[管理器] WS已连接, 已注册 6 个频道处理器");
 
diff --git a/src/main/java/com/xcong/excoin/modules/gateApi/gate-v3.out b/src/main/java/com/xcong/excoin/modules/gateApi/gate-v3.out
new file mode 100644
index 0000000..a9dec95
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/gate-v3.out
@@ -0,0 +1,263 @@
+
+  .   ____          _            __ _ _
+ /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
+( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
+ \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
+  '  |____| .__|_| |_|_| |_\__, | / / / /
+ =========|_|==============|___/=/_/_/_/
+ :: Spring Boot ::        (v2.2.6.RELEASE)
+
+2026-06-04 14:16:09.663  INFO 48526 --- [           main] com.xcong.excoin.ExcoinApplication       : Starting ExcoinApplication v0.0.1-SNAPSHOT on VM-0-4-ubuntu with PID 48526 (/home/gate-v3.jar started by root in /root)
+2026-06-04 14:16:09.666  INFO 48526 --- [           main] com.xcong.excoin.ExcoinApplication       : The following profiles are active: test
+2026-06-04 14:16:11.805  INFO 48526 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
+2026-06-04 14:16:11.809  INFO 48526 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode.
+2026-06-04 14:16:11.868  INFO 48526 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 41ms. Found 0 Redis repository interfaces.
+2026-06-04 14:16:13.516  INFO 48526 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2026-06-04 14:16:13.527  INFO 48526 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2026-06-04 14:16:13.531  INFO 48526 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@1e4f4a5c' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2026-06-04 14:16:13.535  INFO 48526 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2026-06-04 14:16:13.544  INFO 48526 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2026-06-04 14:16:14.135  INFO 48526 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 30001 (http)
+2026-06-04 14:16:14.152  INFO 48526 --- [           main] o.a.coyote.http11.Http11NioProtocol      : Initializing ProtocolHandler ["http-nio-30001"]
+2026-06-04 14:16:14.154  INFO 48526 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
+2026-06-04 14:16:14.160  INFO 48526 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.33]
+2026-06-04 14:16:14.249  INFO 48526 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
+2026-06-04 14:16:14.249  INFO 48526 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 4401 ms
+2026-06-04 14:16:15.083  INFO 48526 --- [           main] c.a.d.s.b.a.DruidDataSourceAutoConfigure : Init DruidDataSource
+2026-06-04 14:16:42.052  INFO 48526 --- [           main] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} inited
+ _ _   |_  _ _|_. ___ _ |    _ 
+| | |\/|_)(_| | |_\  |_)||_|_\ 
+     /               |         
+                        3.3.1.tmp 
+2026-06-04 14:16:46.026  INFO 48526 --- [           main] c.x.e.m.g.GateWebSocketClientManager     : [管理器] 开始初始化...
+2026-06-04 14:16:48.243  INFO 48526 --- [           main] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 用户ID: 52314967
+2026-06-04 14:16:48.291  INFO 48526 --- [           main] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 初始本金: 9.461955504201 USDT
+2026-06-04 14:16:48.328  INFO 48526 --- [           main] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 旧条件单已清除
+2026-06-04 14:16:48.388  INFO 48526 --- [           main] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 平已有仓位, 方向:多, size:10, mode:dual_long
+2026-06-04 14:16:48.399  INFO 48526 --- [           main] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 平已有仓位, 方向:空, size:-10, mode:dual_short
+2026-06-04 14:16:48.433  INFO 48526 --- [           main] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 持仓模式: dual 余额: 7.346243611701
+2026-06-04 14:16:48.434  INFO 48526 --- [           main] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 杠杆: 100x CROSS
+2026-06-04 14:16:48.472  INFO 48526 --- [           main] c.x.e.m.g.GateWebSocketClientManager     : [管理器] WS已连接, 已注册 6 个频道处理器
+2026-06-04 14:16:48.512  INFO 48526 --- [           main] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 网格策略已启动, 当前本金: 9.280881004201 USDT
+2026-06-04 14:16:48.529  INFO 48526 --- [ctReadThread-23] c.x.e.m.g.GateKlineWebSocketClient       : [WS] 连接成功
+2026-06-04 14:16:48.723  INFO 48526 --- [ctReadThread-23] c.x.e.m.g.w.h.CandlestickChannelHandler  : [futures.candlesticks] 订阅成功, 合约:ETH_USDT, 周期:1m
+2026-06-04 14:16:48.729  INFO 48526 --- [ctReadThread-23] .x.e.m.g.w.AbstractPrivateChannelHandler : [futures.positions] 订阅成功, 合约:ETH_USDT
+2026-06-04 14:16:48.734  INFO 48526 --- [ctReadThread-23] .x.e.m.g.w.AbstractPrivateChannelHandler : [futures.position_closes] 订阅成功, 合约:ETH_USDT
+2026-06-04 14:16:48.735  INFO 48526 --- [ctReadThread-23] .x.e.m.g.w.AbstractPrivateChannelHandler : [futures.orders] 订阅成功, 合约:ETH_USDT
+2026-06-04 14:16:48.736  INFO 48526 --- [ctReadThread-23] .x.e.m.g.w.AbstractPrivateChannelHandler : [futures.usertrades] 订阅成功, 合约:ETH_USDT
+2026-06-04 14:16:48.737  INFO 48526 --- [ctReadThread-23] c.x.e.m.g.w.h.AutoOrdersChannelHandler   : [futures.autoorders] 订阅成功, 合约:ETH_USDT
+2026-06-04 14:16:48.811  INFO 48526 --- [ctReadThread-23] c.x.e.m.g.GateKlineWebSocketClient       : [WS] futures.candlesticks 订阅成功: {"status":"success"}
+2026-06-04 14:16:49.172  INFO 48526 --- [           main] o.s.b.a.e.web.EndpointLinksResolver      : Exposing 2 endpoint(s) beneath base path '/actuator'
+2026-06-04 14:16:49.564  INFO 48526 --- [           main] pertySourcedRequestMappingHandlerMapping : Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)]
+2026-06-04 14:16:49.745  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:16:49.745  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 首根K线到达,开基底仓位 多空各10张...
+2026-06-04 14:16:49.792  INFO 48526 --- [te-trade-worker] c.x.e.modules.gateApi.GateTradeExecutor  : [TradeExec] 开多成功, 价格:1790.67, id:63894851787033490
+2026-06-04 14:16:49.809  INFO 48526 --- [te-trade-worker] c.x.e.modules.gateApi.GateTradeExecutor  : [TradeExec] 开空成功, 价格:1790.66, id:63894851787033516
+2026-06-04 14:16:49.875  INFO 48526 --- [           main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@601cbd8c, org.springframework.security.web.context.SecurityContextPersistenceFilter@456abb66, org.springframework.security.web.header.HeaderWriterFilter@654b72c0, org.springframework.web.filter.CorsFilter@7180e701, org.springframework.security.web.authentication.logout.LogoutFilter@91c4a3f, com.xcong.excoin.configurations.security.TokenFilter@4e2c95ee, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@3003697, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@46b695ec, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@11ce2e22, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@d0ec63, org.springframework.security.web.session.SessionManagementFilter@6034e75d, org.springframework.security.web.access.ExceptionTranslationFilter@867ba60, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@e93f3d5]
+2026-06-04 14:16:50.364  INFO 48526 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
+2026-06-04 14:16:50.795  INFO 48526 --- [           main] o.s.s.c.ThreadPoolTaskScheduler          : Initializing ExecutorService 'taskScheduler'
+2026-06-04 14:16:50.900  INFO 48526 --- [           main] d.s.w.p.DocumentationPluginsBootstrapper : Context refreshed
+2026-06-04 14:16:50.936  INFO 48526 --- [           main] d.s.w.p.DocumentationPluginsBootstrapper : Found 1 custom documentation plugin(s)
+2026-06-04 14:16:50.984  INFO 48526 --- [           main] s.d.s.w.s.ApiListingReferenceScanner     : Scanning for api listing references
+2026-06-04 14:16:51.743  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:16:51.800  INFO 48526 --- [           main] o.s.a.r.c.CachingConnectionFactory       : Attempting to connect to: [120.27.238.55:5672]
+2026-06-04 14:16:52.237  INFO 48526 --- [ctReadThread-23] c.x.e.m.g.GateKlineWebSocketClient       : [WS] futures.positions 订阅成功: {"status":"success"}
+2026-06-04 14:16:52.237  INFO 48526 --- [ctReadThread-23] c.x.e.m.g.GateKlineWebSocketClient       : [WS] futures.position_closes 订阅成功: {"status":"success"}
+2026-06-04 14:16:52.238  INFO 48526 --- [ctReadThread-23] c.x.e.m.g.GateKlineWebSocketClient       : [WS] futures.orders 订阅成功: {"status":"success"}
+2026-06-04 14:16:52.238  INFO 48526 --- [ctReadThread-23] c.x.e.m.g.GateKlineWebSocketClient       : [WS] futures.usertrades 订阅成功: {"status":"success"}
+2026-06-04 14:16:52.239  INFO 48526 --- [ctReadThread-23] c.x.e.m.g.GateKlineWebSocketClient       : [WS] futures.autoorders 订阅成功: {"status":"success"}
+2026-06-04 14:16:53.728  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:16:53.789  INFO 48526 --- [           main] o.s.a.r.c.CachingConnectionFactory       : Created new connection: rabbitConnectionFactory#58326051:0/SimpleConnection@1fde4f40 [delegate=amqp://ct_rabbit@120.27.238.55:5672/, localPort= 36746]
+2026-06-04 14:16:55.741  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:16:56.879  INFO 48526 --- [           main] o.a.coyote.http11.Http11NioProtocol      : Starting ProtocolHandler ["http-nio-30001"]
+2026-06-04 14:16:56.907  INFO 48526 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 30001 (http) with context path ''
+2026-06-04 14:16:56.911  INFO 48526 --- [           main] com.xcong.excoin.ExcoinApplication       : Started ExcoinApplication in 48.716 seconds (JVM running for 49.493)
+2026-06-04 14:16:57.757  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:16:59.740  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:17:00.725  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:17:01.764  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:17:03.735  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:17:05.760  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:17:07.733  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:17:09.755  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:17:11.808  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:17:13.707  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:17:15.736  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:17:17.750  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:17:19.802  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:17:21.711  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:17:23.749  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:17:25.723  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:17:27.785  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:17:29.749  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:17:31.791  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:17:33.744  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:17:35.833  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:17:37.700  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:17:39.770  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:17:41.757  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:17:43.794  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:17:45.754  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:17:47.771  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:17:49.744  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:17:51.767  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:17:53.722  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:17:55.739  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:17:57.752  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:17:59.761  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:18:00.428  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:18:01.741  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:18:03.788  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:18:05.756  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:18:07.726  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:18:09.707  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:18:11.764  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:18:13.746  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:18:15.758  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:18:17.733  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:18:19.862  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:18:21.776  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:18:23.750  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:18:25.738  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:18:27.760  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:18:29.715  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:18:31.816  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:18:33.770  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:18:35.731  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:18:37.718  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:18:39.779  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:18:41.756  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:18:43.817  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:18:45.738  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:18:47.835  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:18:49.743  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:18:51.797  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:18:53.745  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:18:55.727  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:18:57.758  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:18:59.716  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:19:00.137  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:19:01.757  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:19:03.766  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:19:05.741  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:19:07.713  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:19:09.730  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:19:11.733  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:19:13.756  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:19:15.716  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:19:17.754  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:19:19.752  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:19:21.744  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:19:23.746  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:19:25.755  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:19:27.787  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:19:29.723  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:19:31.741  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:19:33.734  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:19:35.753  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:19:37.721  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:19:39.767  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:19:41.718  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:19:43.713  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:19:45.726  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:19:47.757  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:19:49.732  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:19:51.739  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:19:53.735  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:19:55.721  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:19:57.726  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:19:59.712  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:20:00.220  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:20:01.766  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:20:03.768  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:20:05.767  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:20:07.765  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:20:09.746  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:20:11.722  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:20:13.743  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:20:15.714  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:20:17.735  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:20:19.739  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:20:21.708  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:20:23.724  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:20:25.743  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:20:27.711  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:20:29.734  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:20:31.749  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:20:33.712  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:20:35.736  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:20:37.741  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:20:39.707  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:20:41.724  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:20:43.722  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:20:45.773  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:20:47.742  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:20:49.757  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:20:51.747  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:20:53.735  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:20:55.715  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:20:57.753  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:20:59.733  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:21:00.303  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:21:01.796  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:21:03.763  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:21:05.749  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:21:07.774  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:21:09.759  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:21:11.745  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:21:13.702  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:21:15.698  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:21:17.739  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:21:19.773  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:21:21.747  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:21:23.792  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:21:25.715  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:21:27.729  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:21:29.723  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:21:31.751  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:21:33.730  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:21:35.727  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:21:37.733  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:21:39.710  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:21:41.721  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:21:43.756  INFO 48526 --- [ctReadThread-23] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������2026-06-04 14:16:07.479  INFO 44913 --- [extShutdownHook] o.s.a.r.l.SimpleMessageListenerContainer : Waiting for workers to finish.
+2026-06-04 14:16:07.747  INFO 44913 --- [ctReadThread-22] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 未实现盈亏: 0
+2026-06-04 14:16:08.060  INFO 44913 --- [extShutdownHook] o.s.a.r.l.SimpleMessageListenerContainer : Successfully waited for workers to finish.
+2026-06-04 14:16:08.061  INFO 44913 --- [extShutdownHook] o.s.s.c.ThreadPoolTaskScheduler          : Shutting down ExecutorService 'taskScheduler'
+2026-06-04 14:16:08.066  INFO 44913 --- [extShutdownHook] o.s.a.r.l.SimpleMessageListenerContainer : Shutdown ignored - container is not active already
+2026-06-04 14:16:08.067  INFO 44913 --- [extShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'
+2026-06-04 14:16:08.078  INFO 44913 --- [extShutdownHook] c.x.e.m.g.GateWebSocketClientManager     : [管理器] 开始销毁...
+2026-06-04 14:16:08.178 ERROR 44913 --- [te-trade-worker] c.x.e.modules.gateApi.GateTradeExecutor  : [TradeExec] 清除止盈止损条件单失败
+
+io.gate.gateapi.GateApiException: label: MISSING_REQUIRED_HEADER, message: Missing required header: Timestamp
+	at io.gate.gateapi.ApiClient.handleResponse(ApiClient.java:1000)
+	at io.gate.gateapi.ApiClient.execute(ApiClient.java:914)
+	at io.gate.gateapi.api.FuturesApi.cancelPriceTriggeredOrderListWithHttpInfo(FuturesApi.java:9739)
+	at io.gate.gateapi.api.FuturesApi.cancelPriceTriggeredOrderList(FuturesApi.java:9719)
+	at com.xcong.excoin.modules.gateApi.GateTradeExecutor.lambda$cancelAllPriceTriggeredOrders$3(GateTradeExecutor.java:216)
+	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
+	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
+	at java.lang.Thread.run(Thread.java:748)
+
+2026-06-04 14:16:08.178  INFO 44913 --- [extShutdownHook] c.x.e.m.gateApi.GateGridTradeService     : [Gate] 策略已停止, 累计盈亏: 0
+2026-06-04 14:16:08.178  INFO 44913 --- [extShutdownHook] c.x.e.m.g.GateKlineWebSocketClient       : [WS] 开始销毁...
+2026-06-04 14:16:08.179  INFO 44913 --- [extShutdownHook] c.x.e.m.g.w.h.CandlestickChannelHandler  : [futures.candlesticks] 取消订阅成功
+2026-06-04 14:16:08.179  INFO 44913 --- [extShutdownHook] .x.e.m.g.w.AbstractPrivateChannelHandler : [futures.positions] 取消订阅成功, 合约:ETH_USDT
+2026-06-04 14:16:08.180  INFO 44913 --- [extShutdownHook] .x.e.m.g.w.AbstractPrivateChannelHandler : [futures.position_closes] 取消订阅成功, 合约:ETH_USDT
+2026-06-04 14:16:08.181  INFO 44913 --- [extShutdownHook] .x.e.m.g.w.AbstractPrivateChannelHandler : [futures.orders] 取消订阅成功, 合约:ETH_USDT
+2026-06-04 14:16:08.181  INFO 44913 --- [extShutdownHook] .x.e.m.g.w.AbstractPrivateChannelHandler : [futures.usertrades] 取消订阅成功, 合约:ETH_USDT
+2026-06-04 14:16:08.182  INFO 44913 --- [extShutdownHook] .x.e.m.g.w.AbstractPrivateChannelHandler : [futures.autoorders] 取消订阅成功, 合约:ETH_USDT
+2026-06-04 14:16:08.186  INFO 44913 --- [ctReadThread-22] c.x.e.m.g.GateKlineWebSocketClient       : [WS] futures.candlesticks 取消订阅成功
+2026-06-04 14:16:08.186  INFO 44913 --- [ctReadThread-22] c.x.e.m.g.GateKlineWebSocketClient       : [WS] futures.positions 取消订阅成功
+2026-06-04 14:16:08.186  INFO 44913 --- [ctReadThread-22] c.x.e.m.g.GateKlineWebSocketClient       : [WS] futures.position_closes 取消订阅成功
+2026-06-04 14:16:08.187  INFO 44913 --- [ctReadThread-22] c.x.e.m.g.GateKlineWebSocketClient       : [WS] futures.orders 取消订阅成功
+2026-06-04 14:16:08.187  INFO 44913 --- [ctReadThread-22] c.x.e.m.g.GateKlineWebSocketClient       : [WS] futures.usertrades 取消订阅成功
+2026-06-04 14:16:08.187  INFO 44913 --- [ctReadThread-22] c.x.e.m.g.GateKlineWebSocketClient       : [WS] futures.autoorders 取消订阅成功
+2026-06-04 14:16:08.687  WARN 44913 --- [ctReadThread-22] c.x.e.m.g.GateKlineWebSocketClient       : [WS] 连接关闭, code:1000, reason:
+2026-06-04 14:16:13.689  INFO 44913 --- [extShutdownHook] c.x.e.m.g.GateKlineWebSocketClient       : [WS] 销毁完成
+2026-06-04 14:16:13.689  INFO 44913 --- [extShutdownHook] c.x.e.m.g.GateWebSocketClientManager     : [管理器] 销毁完成
+2026-06-04 14:16:13.819  INFO 44913 --- [extShutdownHook] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} closing ...
+2026-06-04 14:16:13.840  INFO 44913 --- [ctReadThread-57] c.x.e.m.g.GateKlineWebSocketClient       : [WS] 连接成功
+2026-06-04 14:16:13.840  WARN 44913 --- [ctReadThread-57] c.x.e.m.g.GateKlineWebSocketClient       : [WS] 应用正在关闭,忽略连接成功回调
+2026-06-04 14:16:13.843  INFO 44913 --- [extShutdownHook] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} closed
diff --git a/src/main/java/com/xcong/excoin/modules/gateApi/wsHandler/AbstractPrivateChannelHandler.java b/src/main/java/com/xcong/excoin/modules/gateApi/wsHandler/AbstractPrivateChannelHandler.java
index 1889761..f5dac39 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/wsHandler/AbstractPrivateChannelHandler.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/wsHandler/AbstractPrivateChannelHandler.java
@@ -26,6 +26,8 @@
     private final String contract;
     private final GateGridTradeService gridTradeService;
 
+    private volatile boolean subscribed = false;
+
     public AbstractPrivateChannelHandler(String channelName,
                                           String apiKey, String apiSecret,
                                           String contract,
@@ -165,4 +167,10 @@
             return "";
         }
     }
+
+    @Override
+    public boolean isSubscribed() { return subscribed; }
+
+    @Override
+    public void setSubscribed(boolean subscribed) { this.subscribed = subscribed; }
 }
diff --git a/src/main/java/com/xcong/excoin/modules/gateApi/wsHandler/GateChannelHandler.java b/src/main/java/com/xcong/excoin/modules/gateApi/wsHandler/GateChannelHandler.java
index e24baff..8d4a0c3 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/wsHandler/GateChannelHandler.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/wsHandler/GateChannelHandler.java
@@ -41,4 +41,10 @@
      * @return true 表示已处理(循环停止),false 表示频道不匹配(继续遍历下一个 handler)
      */
     boolean handleMessage(JSONObject response);
+
+    /** 是否已收到订阅成功确认 */
+    boolean isSubscribed();
+
+    /** 标记订阅已确认 */
+    void setSubscribed(boolean subscribed);
 }
diff --git a/src/main/java/com/xcong/excoin/modules/gateApi/wsHandler/handler/CandlestickChannelHandler.java b/src/main/java/com/xcong/excoin/modules/gateApi/wsHandler/handler/CandlestickChannelHandler.java
index fa05514..1a7a2ea 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/wsHandler/handler/CandlestickChannelHandler.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/wsHandler/handler/CandlestickChannelHandler.java
@@ -34,6 +34,8 @@
     /** 网格交易服务,接收 K 线回调 */
     private final GateGridTradeService gridTradeService;
 
+    private volatile boolean subscribed = false;
+
     /**
       * @param contract         合约名称(如 ETH_USDT)
       * @param gridTradeService 网格交易策略服务实例
@@ -132,4 +134,10 @@
         } catch (Exception e) { log.error("[{}] 处理数据失败", CHANNEL_NAME, e); }
         return true;
     }
+
+    @Override
+    public boolean isSubscribed() { return subscribed; }
+
+    @Override
+    public void setSubscribed(boolean subscribed) { this.subscribed = subscribed; }
 }

--
Gitblit v1.9.1