From e38008ae84c8a6db6ddf856fd4052a64c1a961e4 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Tue, 07 Jul 2026 10:21:08 +0800
Subject: [PATCH] feat(gateApi): 网格初始化的止盈单

---
 src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java |   40 +++++++++++++++++++++++++++++++++++++++-
 1 files changed, 39 insertions(+), 1 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 6d59571..137d05e 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
@@ -816,6 +816,43 @@
             baseGridElement.setShortOrderId(baseShortTraderParam.getEntryOrderId());
             baseGridElement.setHasShortOrder(true);
 
+            // 空仓止损对应的多仓止盈:多仓止盈挂在ID=3
+            int tpGridIdLong = 3;
+            GridElement tpElemLong = GridElement.findById(tpGridIdLong);
+            BigDecimal triggerPriceLong = tpElemLong.getGridPrice();
+            String sizeLong = config.getQuantity();
+            executor.placeTakeProfit(
+                    triggerPriceLong,
+                    FuturesPriceTrigger.RuleEnum.NUMBER_1,
+                    ORDER_TYPE_CLOSE_LONG,
+                    negate(sizeLong),
+                    profitId -> {
+                        tpElemLong.setLongTakeProfitOrderId(profitId);
+                        GridElement.refreshIndices();
+                        log.info("[Gate] 多仓止盈已挂(gridId:{}多止盈), 触发价:{}, takeProfitId:{}",
+                                tpGridIdLong, triggerPriceLong, profitId);
+                    }
+            );
+
+
+            // 多仓止损对应的空仓止盈:空仓止盈挂在ID=-3
+            int tpGridIdShort = -3;
+            GridElement tpElemShort = GridElement.findById(tpGridIdShort);
+            BigDecimal triggerPriceShort = tpElemShort.getGridPrice();
+            String sizeShort = config.getQuantity();
+            executor.placeTakeProfit(
+                    triggerPriceShort,
+                    FuturesPriceTrigger.RuleEnum.NUMBER_2,
+                    ORDER_TYPE_CLOSE_SHORT,
+                    sizeShort,
+                    profitId -> {
+                        tpElemShort.setShortTakeProfitOrderId(profitId);
+                        GridElement.refreshIndices();
+                        log.info("[Gate] 空仓止盈已挂(gridId:{}空止盈), 触发价:{}, takeProfitId:{}",
+                                tpGridIdShort, triggerPriceShort, profitId);
+                    }
+            );
+
 //            int shortTime = 2;
 //            GridElement elemShort = GridElement.findById(shortTime);
 //            if (elemShort != null) {
@@ -876,6 +913,7 @@
             }
 
 
+
             int longTime = Integer.parseInt(config.getBaseQuantity()) / Integer.parseInt(config.getQuantity()) + 1;
             for (int id = -2; id >= -longTime; id--) {
                 GridElement elem = GridElement.findById(id);
@@ -898,7 +936,7 @@
                 );
             }
 
-            log.info("[Gate] 止损单已全部挂完, 空仓止损: 2~{}, 多仓止损: -2~-{}", shortTime, longTime);
+            log.info("[Gate] 止损止盈单已全部挂完, 空仓止损:2~{}, 多仓止损:-2~-{}", shortTime, longTime);
 
             state = StrategyState.ACTIVE;
         }

--
Gitblit v1.9.1