From 8604958da68a32b581e970d283b54c29ad0264fa Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Mon, 10 Aug 2026 14:43:57 +0800
Subject: [PATCH] feat(gate): 添加加仓启动阈值配置功能

---
 src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 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 11b3e00..59a62f1 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
@@ -1295,7 +1295,8 @@
      * 根据加仓配置计算止损追单时的实际下单量。
      * <p>公式:</p>
      * <pre>
-     * addMultiplier = floor(effectiveStopLossCount / addPositionInterval)
+     * divisor = addPositionInterval + 1
+     * addMultiplier = floor(effectiveStopLossCount / divisor)
      * addQty = addMultiplier × addPositionQuantity
      * finalQty = min(baseQuantity + addQty, maxPositionPerSide > 0 ? maxPositionPerSide : ∞)
      * </pre>
@@ -1310,7 +1311,13 @@
         int maxPerSide = config.getMaxPositionPerSide();
 
         int effectiveCount = getEffectiveStopLossCount(isLong);
-        int addMultiplier = interval > 0 ? effectiveCount / interval : 0;
+        int startThreshold = config.getAddPositionStartThreshold();
+        if (startThreshold > 0) {
+            effectiveCount = Math.max(0, effectiveCount - startThreshold);
+        }
+        // divisor = interval + 1:interval=0→每次加仓, interval=1→每2次加仓(2,4,6...), interval=3→每4次加仓(4,8,12...)
+        int divisor = interval + 1;
+        int addMultiplier = interval >= 0 ? effectiveCount / divisor : 0;
         int addQty = addMultiplier * addQtyPerUnit;
         int totalQty = baseQty + addQty;
 

--
Gitblit v1.9.1