From ed57e750b5e2cf14fe5d447ff318228f8df77d23 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Fri, 05 Jun 2026 16:48:51 +0800
Subject: [PATCH] refactor(okx): 移除算法单频道处理器并优化网格交易重置逻辑
---
src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxGridTradeService.java | 19 ++++++++++++-------
1 files changed, 12 insertions(+), 7 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxGridTradeService.java b/src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxGridTradeService.java
index 611049b..84a5e49 100644
--- a/src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxGridTradeService.java
+++ b/src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxGridTradeService.java
@@ -269,11 +269,9 @@
updateUnrealizedPnl();
if (state == StrategyState.STOPPED) {
- executor.cancelAllAlgoOrders();
- closeExistingPositions();
+ // stopGrid() 已做清理,仅打印日志不重复操作
BigDecimal totalPnl = cumulativePnl.add(unrealizedPnl);
log.info("[OKX] 已实现:{}, 未实现:{}, 合计:{}", cumulativePnl, unrealizedPnl, totalPnl);
- startGrid();
return;
}
@@ -363,7 +361,6 @@
}
} else {
if (longActive && state == StrategyState.ACTIVE) {
- log.info("[OKX] 多仓持仓归零,重置策略");
handlePositionZeroAndReset("多仓");
}
longActive = false;
@@ -385,7 +382,6 @@
}
} else {
if (shortActive && state == StrategyState.ACTIVE) {
- log.info("[OKX] 空仓持仓归零,重置策略");
handlePositionZeroAndReset("空仓");
}
shortActive = false;
@@ -555,7 +551,11 @@
state = StrategyState.STOPPED;
closeExistingPositions();
executor.cancelAllAlgoOrders();
- startGrid();
+ // 提交到 executor 末尾:单线程FIFO保证前面所有平仓/取消任务完成后才重置
+ executor.submitTask(() -> {
+ try { Thread.sleep(3000); } catch (InterruptedException e) { Thread.currentThread().interrupt(); }
+ startGrid();
+ });
}
} catch (Exception e) {
log.warn("[OKX] 盈亏检查失败", e);
@@ -563,10 +563,15 @@
}
private void handlePositionZeroAndReset(String direction) {
+ log.info("[OKX] {}持仓归零,重置策略", direction);
state = StrategyState.STOPPED;
executor.cancelAllAlgoOrders();
closeExistingPositions();
- startGrid();
+ // 提交到 executor 末尾:FIFO保证平仓完成后再重置
+ executor.submitTask(() -> {
+ try { Thread.sleep(3000); } catch (InterruptedException e) { Thread.currentThread().interrupt(); }
+ startGrid();
+ });
}
// ---- getters ----
--
Gitblit v1.9.1