From 2914e4e4f120fa867ec77d724314a46457a9f413 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Thu, 25 Jun 2026 14:51:33 +0800
Subject: [PATCH] refactor(gateApi): 止盈都严格保持 2 个 grid 间距

---
 src/main/java/com/xcong/excoin/modules/gateApi/GateTradeExecutor.java |   17 +++++++++++++++--
 1 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/gateApi/GateTradeExecutor.java b/src/main/java/com/xcong/excoin/modules/gateApi/GateTradeExecutor.java
index 4235df0..b5de170 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateTradeExecutor.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateTradeExecutor.java
@@ -92,6 +92,13 @@
             executor.shutdownNow();
         }
     }
+    /**
+     * 提交一个通用任务到交易线程池末尾。
+     * 利用单线程池的 FIFO 特性确保任务按提交顺序执行。
+     */
+    public void submitTask(Runnable task) {
+        executor.execute(task);
+    }
 
     /**
      * 异步 IOC 市价开多。quantity 为正数(如 "1")。
@@ -262,7 +269,7 @@
      *
      * @param orderId 订单 ID,为 null 时跳过
      */
-    public void cancelOrder(String orderId) {
+    public void cancelOrder(String orderId,Consumer<String> onSuccess) {
         if (orderId == null) {
             return;
         }
@@ -270,6 +277,9 @@
             try {
                 FuturesOrder cancelled = futuresApi.cancelFuturesOrder(SETTLE, orderId, null);
                 log.info("[TradeExec] 订单已取消, id:{}, status:{}", orderId, cancelled.getStatus());
+                if (onSuccess != null) {
+                    onSuccess.accept(orderId);
+                }
             } catch (Exception e) {
                 log.warn("[TradeExec] 取消订单失败(可能已成交), id:{}", orderId);
             }
@@ -335,7 +345,7 @@
      *
      * @param orderId 条件单 ID,为 null 时跳过
      */
-    public void cancelConditionalOrder(String orderId) {
+    public void cancelConditionalOrder(String orderId,Consumer<String> onSuccess) {
         if (orderId == null) {
             return;
         }
@@ -343,6 +353,9 @@
             try {
                 futuresApi.cancelPriceTriggeredOrder(SETTLE, Long.parseLong(orderId));
                 log.info("[TradeExec] 条件单已取消, id:{}", orderId);
+                if (onSuccess != null) {
+                    onSuccess.accept(orderId);
+                }
             } catch (Exception e) {
                 log.warn("[TradeExec] 取消条件单失败(可能已触发), id:{}", orderId);
             }

--
Gitblit v1.9.1