From b628b1f5dc30923c68ea397b715b5a9771423cc8 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Sun, 20 Sep 2026 14:49:49 +0800
Subject: [PATCH] feat(gate): 添加自定义止损功能

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

diff --git a/src/main/java/com/xcong/excoin/modules/gateApi/GateConfigDTO.java b/src/main/java/com/xcong/excoin/modules/gateApi/GateConfigDTO.java
index 669a950..50fc9a0 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateConfigDTO.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateConfigDTO.java
@@ -71,6 +71,12 @@
     private int addPositionStartThreshold;
     /** 止盈挂单模式:off=关闭 / concentrated=集中止盈 / dispersed=分散止盈,默认 off */
     private String placeExcessTakeProfit;
+    /** 自定义止损开关:true=启用自定义止损触发价,false=使用默认阶梯止损。null=未设置(默认false) */
+    private Boolean customStopLossEnabled;
+    /** 多仓自定义止损触发价(价格跌至该值触发平多),null=未设置 */
+    private BigDecimal longCustomStopLossPrice;
+    /** 空仓自定义止损触发价(价格涨至该值触发平空),null=未设置 */
+    private BigDecimal shortCustomStopLossPrice;
 
     /**
      * 从 GateConfig 构建 DTO(不暴露 apiSecret)。
@@ -104,6 +110,9 @@
                 .maxPositionPerSide(config.getMaxPositionPerSide())
                 .addPositionStartThreshold(config.getAddPositionStartThreshold())
                 .placeExcessTakeProfit(config.getPlaceExcessTakeProfit())
+                .customStopLossEnabled(config.isCustomStopLossEnabled())
+                .longCustomStopLossPrice(config.getLongCustomStopLossPrice())
+                .shortCustomStopLossPrice(config.getShortCustomStopLossPrice())
                 .build();
     }
 
@@ -131,6 +140,9 @@
         m.put("maxPositionPerSide", maxPositionPerSide);
         m.put("addPositionStartThreshold", addPositionStartThreshold);
         m.put("placeExcessTakeProfit", placeExcessTakeProfit);
+        m.put("customStopLossEnabled", customStopLossEnabled);
+        m.put("longCustomStopLossPrice", longCustomStopLossPrice);
+        m.put("shortCustomStopLossPrice", shortCustomStopLossPrice);
         return m;
     }
 
@@ -165,6 +177,9 @@
                 .maxPositionPerSide(0)
                 .addPositionStartThreshold(1)
                 .placeExcessTakeProfit("off")
+                .customStopLossEnabled(false)
+                .longCustomStopLossPrice(null)
+                .shortCustomStopLossPrice(null)
                 .build();
     }
 }

--
Gitblit v1.9.1