From 286b64cef4127c2ca917561c474842c375d2ea73 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Thu, 07 May 2026 17:01:46 +0800
Subject: [PATCH] fix(gateApi): 设置初始订单为仅减仓模式

---
 src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java       |   48 +++--------------------
 src/main/java/com/xcong/excoin/modules/gateApi/GateWebSocketClientManager.java |    7 +--
 src/main/java/com/xcong/excoin/modules/gateApi/GateKlineWebSocketClient.java   |    8 +--
 3 files changed, 12 insertions(+), 51 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 3074c07..f58b68a 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
@@ -55,10 +55,6 @@
     private BigDecimal shortEntryPrice;
     private Long longOrderId;
     private Long shortOrderId;
-    private Long longTpOrderId;
-    private Long longSlOrderId;
-    private Long shortTpOrderId;
-    private Long shortSlOrderId;
 
     private volatile BigDecimal lastClosePrice;
 
@@ -128,10 +124,6 @@
      */
     public void stopGrid() {
         strategyActive = false;
-        cancelTpSl(longTpOrderId);
-        cancelTpSl(longSlOrderId);
-        cancelTpSl(shortTpOrderId);
-        cancelTpSl(shortSlOrderId);
         closeAllPositions();
         log.info("[GateGrid] 网格策略已停止, 总盈亏: {}, 循环: {}", totalProfit, currentCycle);
     }
@@ -188,21 +180,17 @@
 
     private void placeLongTpSl(BigDecimal entryPrice) {
         BigDecimal tpPrice = entryPrice.multiply(BigDecimal.ONE.add(gridRate)).setScale(1, RoundingMode.HALF_UP);
-        BigDecimal slPrice = entryPrice.multiply(BigDecimal.ONE.subtract(gridRate)).setScale(1, RoundingMode.HALF_UP);
-        longTpOrderId = placePriceTriggeredOrder(tpPrice, FuturesPriceTrigger.RuleEnum.NUMBER_1, "close-long-position", "close_long");
-        longSlOrderId = placePriceTriggeredOrder(slPrice, FuturesPriceTrigger.RuleEnum.NUMBER_2, "close-long-position", "close_long");
-        log.info("[GateGrid] 多头TP/SL已设置, TP:{}, SL:{}, tpId:{}, slId:{}", tpPrice, slPrice, longTpOrderId, longSlOrderId);
+        placePriceTriggeredOrder(tpPrice, FuturesPriceTrigger.RuleEnum.NUMBER_1, "close-long-position", "close_long");
+        log.info("[GateGrid] 多头止盈已设置, TP:{}", tpPrice);
     }
 
     private void placeShortTpSl(BigDecimal entryPrice) {
         BigDecimal tpPrice = entryPrice.multiply(BigDecimal.ONE.subtract(gridRate)).setScale(1, RoundingMode.HALF_UP);
-        BigDecimal slPrice = entryPrice.multiply(BigDecimal.ONE.add(gridRate)).setScale(1, RoundingMode.HALF_UP);
-        shortTpOrderId = placePriceTriggeredOrder(tpPrice, FuturesPriceTrigger.RuleEnum.NUMBER_2, "close-short-position", "close_short");
-        shortSlOrderId = placePriceTriggeredOrder(slPrice, FuturesPriceTrigger.RuleEnum.NUMBER_1, "close-short-position", "close_short");
-        log.info("[GateGrid] 空头TP/SL已设置, TP:{}, SL:{}, tpId:{}, slId:{}", tpPrice, slPrice, shortTpOrderId, shortSlOrderId);
+        placePriceTriggeredOrder(tpPrice, FuturesPriceTrigger.RuleEnum.NUMBER_2, "close-short-position", "close_short");
+        log.info("[GateGrid] 空头止盈已设置, TP:{}", tpPrice);
     }
 
-    private Long placePriceTriggeredOrder(BigDecimal triggerPrice,
+    private void placePriceTriggeredOrder(BigDecimal triggerPrice,
                                            FuturesPriceTrigger.RuleEnum rule,
                                            String orderType,
                                            String autoSize) {
@@ -228,25 +216,11 @@
             order.setOrderType(orderType);
 
             TriggerOrderResponse response = futuresApi.createPriceTriggeredOrder(SETTLE, order);
-            log.info("[GateGrid] 条件单已创建, triggerPrice:{}, rule:{}, orderType:{}, autoSize:{}, id:{}",
+            log.info("[GateGrid] 止盈条件单已创建, triggerPrice:{}, rule:{}, orderType:{}, autoSize:{}, id:{}",
                     triggerPrice, rule, orderType, autoSize, response.getId());
-            return response.getId();
         } catch (Exception e) {
-            log.error("[GateGrid] 创建条件单失败, triggerPrice:{}, rule:{}, orderType:{}, autoSize:{}",
+            log.error("[GateGrid] 止盈条件单创建失败, triggerPrice:{}, rule:{}, orderType:{}, autoSize:{}",
                     triggerPrice, rule, orderType, autoSize, e);
-            return null;
-        }
-    }
-
-    private void cancelTpSl(Long orderId) {
-        if (orderId == null) {
-            return;
-        }
-        try {
-            futuresApi.cancelPriceTriggeredOrder(SETTLE, orderId);
-            log.info("[GateGrid] 已取消条件单, id:{}", orderId);
-        } catch (Exception e) {
-            log.warn("[GateGrid] 取消条件单失败, id:{}", orderId, e);
         }
     }
 
@@ -360,10 +334,6 @@
         }
         longEntryPrice = null;
         longOrderId = null;
-        cancelTpSl(longTpOrderId);
-        cancelTpSl(longSlOrderId);
-        longTpOrderId = null;
-        longSlOrderId = null;
     }
 
     private void closeShortPosition() {
@@ -385,10 +355,6 @@
         }
         shortEntryPrice = null;
         shortOrderId = null;
-        cancelTpSl(shortTpOrderId);
-        cancelTpSl(shortSlOrderId);
-        shortTpOrderId = null;
-        shortSlOrderId = null;
     }
 
     private void closeAllPositions() {
diff --git a/src/main/java/com/xcong/excoin/modules/gateApi/GateKlineWebSocketClient.java b/src/main/java/com/xcong/excoin/modules/gateApi/GateKlineWebSocketClient.java
index 8d2f655..4e93ba0 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateKlineWebSocketClient.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateKlineWebSocketClient.java
@@ -58,7 +58,7 @@
     private static final String FUTURES_PING = "futures.ping";
     private static final String FUTURES_PONG = "futures.pong";
     private static final String GATE_INTERVAL = "1m";
-    private static final String GATE_CONTRACT = "XAU_USDT";
+    private static final String GATE_CONTRACT = "XAUT_USDT";
 
     private GateGridTradeService gridTradeService;
 
@@ -74,14 +74,12 @@
 
     public GateKlineWebSocketClient(CaoZuoService caoZuoService,
                                     GateWebSocketClientManager clientManager,
-                                    WangGeListService wangGeListService
+                                    WangGeListService wangGeListService,
+                                    GateGridTradeService gridTradeService
     ) {
         this.caoZuoService = caoZuoService;
         this.clientManager = clientManager;
         this.wangGeListService = wangGeListService;
-    }
-
-    public void setGridTradeService(GateGridTradeService gridTradeService) {
         this.gridTradeService = gridTradeService;
     }
 
diff --git a/src/main/java/com/xcong/excoin/modules/gateApi/GateWebSocketClientManager.java b/src/main/java/com/xcong/excoin/modules/gateApi/GateWebSocketClientManager.java
index 21885f0..736bf77 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateWebSocketClientManager.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateWebSocketClientManager.java
@@ -20,8 +20,6 @@
     @Autowired
     private CaoZuoService caoZuoService;
     @Autowired
-    private RedisUtils redisUtils;
-    @Autowired
     private WangGeListService wangGeListService;
 
     private GateKlineWebSocketClient klinePriceClient;
@@ -38,7 +36,7 @@
             gridTradeService = new GateGridTradeService(
                     API_KEY, API_SECRET,
                     "XAUT_USDT",
-                    "100",
+                    "30",
                     "cross",
                     "dual",
                     new BigDecimal("0.0035"),
@@ -49,8 +47,7 @@
             );
             gridTradeService.init();
 
-            klinePriceClient = new GateKlineWebSocketClient(caoZuoService, this, wangGeListService);
-            klinePriceClient.setGridTradeService(gridTradeService);
+            klinePriceClient = new GateKlineWebSocketClient(caoZuoService, this, wangGeListService,gridTradeService);
             klinePriceClient.init();
             log.info("已初始化GateKlineWebSocketClient");
 

--
Gitblit v1.9.1