From 6f2e031ee0d0e49b09770541aa379bae2fa722d1 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Mon, 22 Jun 2026 13:32:52 +0800
Subject: [PATCH] fix(gateApi): 修复网格交易价格队列初始化和方向标识错误

---
 src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java |   98 +++----------------------------------------------
 1 files changed, 6 insertions(+), 92 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 01bea3a..b8854b3 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
@@ -309,6 +309,8 @@
         accumulatedShortLossCount = 0;
         shortPriceQueue.clear();
         longPriceQueue.clear();
+        totalShortPriceQueue.clear();
+        totalLongPriceQueue.clear();
         currentLongOrderIds.clear();
         currentShortOrderIds.clear();
         // 每次重启重新获取当前本金
@@ -878,6 +880,8 @@
      */
     private void generateShortQueue() {
         shortPriceQueue.clear();
+        totalShortPriceQueue.clear();
+        totalLongPriceQueue.clear();
         int prec = config.getPriceScale();
         BigDecimal step = shortBaseEntryPrice.multiply(config.getGridRate()).setScale(prec, RoundingMode.HALF_UP);
         config.setStep(step);
@@ -990,8 +994,8 @@
             elements.add(GridElement.builder()
                     .id(0)
                     .gridPrice(price)
-                    .upId(shortSize > 0 ? 1 : null)
-                    .downId(longSize > 0 ? -1 : null)
+                    .upId(longSize > 0 ? 1 : null)
+                    .downId(shortSize > 0 ? -1 : null)
                     .longTraderParam(longParam)
                     .shortTraderParam(shortParam)
                     .build());
@@ -1253,96 +1257,6 @@
             });
         }
     }
-
-    // ========== 止盈/止损取消辅助方法 ==========
-
-    /**
-     * 取消最远的多仓止损订单。
-     * 多仓止损在 gridId 负方向,最远 = id 最小。
-     */
-    private void cancelFarthestLongStopLoss() {
-        GridElement farthest = null;
-        for (GridElement e : config.getGridElements()) {
-            if (e.getLongStopLossOrderId() != null) {
-                if (farthest == null || e.getId() < farthest.getId()) {
-                    farthest = e;
-                }
-            }
-        }
-        if (farthest != null) {
-            String slId = farthest.getLongStopLossOrderId();
-            farthest.setLongStopLossOrderId(null);
-            GridElement.refreshIndices();
-            GridElement finalFarthest = farthest;
-            executor.cancelConditionalOrder(slId, oid ->
-                    log.info("[Gate] 止盈触发, 取消最远多仓止损 gridId:{}, orderId:{}", finalFarthest.getId(), slId));
-        }
-    }
-
-    /**
-     * 取消最远的空仓止损订单。
-     * 空仓止损在 gridId 正方向,最远 = id 最大。
-     */
-    private void cancelFarthestShortStopLoss() {
-        GridElement farthest = null;
-        for (GridElement e : config.getGridElements()) {
-            if (e.getShortStopLossOrderId() != null) {
-                if (farthest == null || e.getId() > farthest.getId()) {
-                    farthest = e;
-                }
-            }
-        }
-        if (farthest != null) {
-            String slId = farthest.getShortStopLossOrderId();
-            farthest.setShortStopLossOrderId(null);
-            GridElement.refreshIndices();
-            GridElement finalFarthest = farthest;
-            executor.cancelConditionalOrder(slId, oid ->
-                    log.info("[Gate] 止盈触发, 取消最远空仓止损 gridId:{}, orderId:{}", finalFarthest.getId(), slId));
-        }
-    }
-
-    /**
-     * 取消所有多仓止盈 + 多仓止损订单(加仓后重建前清场)。
-     */
-    private void cancelAllLongTakeProfitsAndStopLosses() {
-        for (GridElement e : config.getGridElements()) {
-            String tpId = e.getLongTakeProfitOrderId();
-            if (tpId != null) {
-                e.setLongTakeProfitOrderId(null);
-                executor.cancelConditionalOrder(tpId, oid -> {});
-            }
-            String slId = e.getLongStopLossOrderId();
-            if (slId != null) {
-                e.setLongStopLossOrderId(null);
-                executor.cancelConditionalOrder(slId, oid -> {});
-            }
-        }
-        GridElement.refreshIndices();
-        log.info("[Gate] 已提交取消所有多仓止盈+止损");
-    }
-
-    /**
-     * 取消所有空仓止盈 + 空仓止损订单(加仓后重建前清场)。
-     */
-    private void cancelAllShortTakeProfitsAndStopLosses() {
-        for (GridElement e : config.getGridElements()) {
-            String tpId = e.getShortTakeProfitOrderId();
-            if (tpId != null) {
-                e.setShortTakeProfitOrderId(null);
-                executor.cancelConditionalOrder(tpId, oid -> {});
-            }
-            String slId = e.getShortStopLossOrderId();
-            if (slId != null) {
-                e.setShortStopLossOrderId(null);
-                executor.cancelConditionalOrder(slId, oid -> {});
-            }
-        }
-        GridElement.refreshIndices();
-        log.info("[Gate] 已提交取消所有空仓止盈+止损");
-    }
-
-    // ========== 止损追单 ==========
 
     private void extendLongStopLoss(int filledQty,int gridId) {
         int furthestSlId = 0;

--
Gitblit v1.9.1