From a49d34b0b49eee01e103d8758d1eb4fb9bb71ead Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Tue, 19 May 2026 15:32:57 +0800
Subject: [PATCH] fix(gateApi): 修正网格交易条件订单触发规则

---
 src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java |   22 ++++++++++++++++++++--
 src/main/java/com/xcong/excoin/modules/gateApi/GateTradeExecutor.java    |    5 ++++-
 2 files changed, 24 insertions(+), 3 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 9df2953..02c2304 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
@@ -421,7 +421,16 @@
                     List<GridElement> allShortOrders = GridElement.findAllShortOrders(longEntryPrice);
                     if (CollUtil.isNotEmpty(allShortOrders)){
                         for (GridElement e : allShortOrders) {
-                            executor.cancelOrder(e.getShortOrderId());
+                            executor.cancelOrder(
+                                    e.getShortOrderId(),
+                                    orderId -> {
+                                        shortEntryTraderIdParam(
+                                                e,
+                                                null,
+                                                false
+                                        );
+                                    }
+                            );
                         }
                     }
                 }
@@ -445,7 +454,16 @@
                     List<GridElement> allLongOrders = GridElement.findAllLongOrders(shortEntryPrice);
                     if (CollUtil.isNotEmpty(allLongOrders)){
                         for (GridElement e : allLongOrders) {
-                            executor.cancelOrder(e.getLongOrderId());
+                            executor.cancelOrder(
+                                    e.getLongOrderId(),
+                                    orderId -> {
+                                        shortEntryTraderIdParam(
+                                                e,
+                                                null,
+                                                false
+                                        );
+                                    }
+                            );
                         }
                     }
                 }
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..9984cf9 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateTradeExecutor.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateTradeExecutor.java
@@ -262,7 +262,7 @@
      *
      * @param orderId 订单 ID,为 null 时跳过
      */
-    public void cancelOrder(String orderId) {
+    public void cancelOrder(String orderId,Consumer<String> onSuccess) {
         if (orderId == null) {
             return;
         }
@@ -270,6 +270,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);
             }

--
Gitblit v1.9.1