From db9a7719bee7c82529b57535cde51ab23889c4ed Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Wed, 30 Sep 2026 15:06:25 +0800
Subject: [PATCH] feat(stations): 添加基础仓位止盈挂单参数功能

---
 src/main/resources/static/station-dashboard.html                                    |    4 ++++
 src/main/java/com/xcong/excoin/modules/station/entity/StrategyStatus.java           |    6 ++++++
 src/main/java/com/xcong/excoin/modules/station/service/impl/StationServiceImpl.java |    2 ++
 src/main/resources/db/station-schema.sql                                            |    9 +++++++++
 4 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/station/entity/StrategyStatus.java b/src/main/java/com/xcong/excoin/modules/station/entity/StrategyStatus.java
index 430d759..796c816 100644
--- a/src/main/java/com/xcong/excoin/modules/station/entity/StrategyStatus.java
+++ b/src/main/java/com/xcong/excoin/modules/station/entity/StrategyStatus.java
@@ -88,6 +88,12 @@
     /** 对向加仓挂单数量 */
     private Integer tpTriggerOppositeAddQuantity;
 
+    /** 单格止盈张数(基础仓位止盈:每个网格挂的止盈张数) */
+    private Integer baseTakeProfitPerGrid;
+
+    /** 止盈网格数量(基础仓位止盈:挂止盈的网格数量) */
+    private Integer baseTakeProfitGridCount;
+
     /** 当前轮次 */
     private Integer currentRound;
 
diff --git a/src/main/java/com/xcong/excoin/modules/station/service/impl/StationServiceImpl.java b/src/main/java/com/xcong/excoin/modules/station/service/impl/StationServiceImpl.java
index 0623e2e..6dde3ee 100644
--- a/src/main/java/com/xcong/excoin/modules/station/service/impl/StationServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/station/service/impl/StationServiceImpl.java
@@ -248,6 +248,8 @@
         if (params.containsKey("shortStopLossPrice")) status.setShortStopLossPrice(str(params.get("shortStopLossPrice")));
         if (params.containsKey("tpTriggerOppositeAddEnabled")) status.setTpTriggerOppositeAddEnabled(boolVal(params.get("tpTriggerOppositeAddEnabled")));
         if (params.containsKey("tpTriggerOppositeAddQuantity")) status.setTpTriggerOppositeAddQuantity(intVal(params.get("tpTriggerOppositeAddQuantity")));
+        if (params.containsKey("baseTakeProfitPerGrid")) status.setBaseTakeProfitPerGrid(intVal(params.get("baseTakeProfitPerGrid")));
+        if (params.containsKey("baseTakeProfitGridCount")) status.setBaseTakeProfitGridCount(intVal(params.get("baseTakeProfitGridCount")));
         if (params.containsKey("rounds")) status.setTotalRounds(intVal(params.get("rounds")));
         if (params.containsKey("principal")) status.setPrincipal(str(params.get("principal")));
     }
diff --git a/src/main/resources/db/station-schema.sql b/src/main/resources/db/station-schema.sql
index 0347ff6..b871a26 100644
--- a/src/main/resources/db/station-schema.sql
+++ b/src/main/resources/db/station-schema.sql
@@ -28,6 +28,8 @@
     `short_stop_loss_price`      VARCHAR(32)  DEFAULT NULL COMMENT '空头止损触发价',
     `tp_trigger_opposite_add_enabled`  TINYINT(1) DEFAULT 0 COMMENT '止盈成交触发对向加仓开关',
     `tp_trigger_opposite_add_quantity` INT(11)   DEFAULT 0 COMMENT '对向加仓挂单数量',
+    `base_take_profit_per_grid`        INT(11)   DEFAULT 0 COMMENT '单格止盈张数(基础仓位止盈)',
+    `base_take_profit_grid_count`      INT(11)   DEFAULT 0 COMMENT '止盈网格数量(基础仓位止盈)',
     `current_round`  INT(11)      DEFAULT 0  COMMENT '当前轮次',
     `total_rounds`   INT(11)      DEFAULT 0  COMMENT '总轮数上限',
     `accumulated_long_loss`       INT(11)      DEFAULT 0  COMMENT '多头累计止损次数',
@@ -106,3 +108,10 @@
 ALTER TABLE `strategy_status`
     ADD COLUMN `tp_trigger_opposite_add_enabled`  TINYINT(1) DEFAULT 0 COMMENT '止盈成交触发对向加仓开关' AFTER `short_stop_loss_price`,
     ADD COLUMN `tp_trigger_opposite_add_quantity` INT(11)   DEFAULT 0 COMMENT '对向加仓挂单数量' AFTER `tp_trigger_opposite_add_enabled`;
+
+-- ============================================================
+-- 升级脚本:基础仓位止盈挂单参数(2026-09 新增)
+-- ============================================================
+ALTER TABLE `strategy_status`
+    ADD COLUMN `base_take_profit_per_grid`   INT(11) DEFAULT 0 COMMENT '单格止盈张数(基础仓位止盈)' AFTER `tp_trigger_opposite_add_quantity`,
+    ADD COLUMN `base_take_profit_grid_count` INT(11) DEFAULT 0 COMMENT '止盈网格数量(基础仓位止盈)' AFTER `base_take_profit_per_grid`;
diff --git a/src/main/resources/static/station-dashboard.html b/src/main/resources/static/station-dashboard.html
index 5d92984..d6d3683 100644
--- a/src/main/resources/static/station-dashboard.html
+++ b/src/main/resources/static/station-dashboard.html
@@ -1043,6 +1043,8 @@
     shortStopLossPrice: '',
     tpTriggerOppositeAddEnabled: false,
     tpTriggerOppositeAddQuantity: 0,
+    baseTakeProfitPerGrid: 0,
+    baseTakeProfitGridCount: 0,
 };
 
 async function loadConfig(md5) {
@@ -1075,6 +1077,8 @@
     { key: 'quantity', label: '每次下单张数', type: 'number', placeholder: '2', jtype: 'string', group: 'grid' },
     { key: 'maxPositionSize', label: '最大持仓张数', type: 'number', placeholder: '4', jtype: 'int', group: 'grid' },
     { key: 'takeProfitGridSpan', label: '止盈网格跨度', type: 'number', placeholder: '2', jtype: 'int', group: 'grid' },
+    { key: 'baseTakeProfitPerGrid', label: '单格止盈张数', type: 'number', placeholder: '0', jtype: 'int', group: 'grid', tip: '基础仓位止盈:每个网格挂的止盈张数' },
+    { key: 'baseTakeProfitGridCount', label: '止盈网格数量', type: 'number', placeholder: '0', jtype: 'int', group: 'grid', tip: '基础仓位止盈:挂止盈的网格数量' },
 
     { key: 'expectedProfit', label: '预期收益 (USDT)', type: 'number', step: '0.01', placeholder: '0.15', jtype: 'decimal', group: 'risk' },
     { key: 'maxLoss', label: '最大亏损 (USDT)', type: 'number', step: '0.01', placeholder: '1.5', jtype: 'decimal', group: 'risk' },

--
Gitblit v1.9.1