Administrator
2026-06-04 4c8236f229ed903c861373ec3d8678062300ea6d
feat(ws): 添加WebSocket订阅状态追踪功能

- 在AbstractPrivateChannelHandler中添加subscribed状态字段
- 在CandlestickChannelHandler中添加subscribed状态字段
- 实现isSubscribed和setSubscribed方法用于状态管理
- 更新application配置文件以支持新的WebSocket功能
- 添加gate-v3.out输出日志文件用于调试追踪
1 files added
6 files modified
311 ■■■■■ changed files
src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/gateApi/GateKlineWebSocketClient.java 17 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/gateApi/GateWebSocketClientManager.java 3 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/gateApi/gate-v3.out 263 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/gateApi/wsHandler/AbstractPrivateChannelHandler.java 8 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/gateApi/wsHandler/GateChannelHandler.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/gateApi/wsHandler/handler/CandlestickChannelHandler.java 8 ●●●●● patch | view | raw | blame | history
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; }
}
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 ----
    /**
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 个频道处理器");
src/main/java/com/xcong/excoin/modules/gateApi/gate-v3.out
New file
@@ -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
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; }
}
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);
}
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; }
}