From 05ae4803e159e3b855e381b49d6c988cef151592 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Wed, 12 Aug 2026 10:20:38 +0800
Subject: [PATCH] feat(gate): 添加超额止盈功能配置选项
---
src/main/java/com/xcong/excoin/modules/gateApi/GateConfigDTO.java | 27 +++++++++++++++++++++++++++
1 files changed, 27 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 0c7fa57..851b7dc 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateConfigDTO.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateConfigDTO.java
@@ -41,6 +41,8 @@
private int maxPositionSize;
/** 止损阶梯次数,0=禁用 */
private int stopLossCount;
+ /** 止盈网格跨度:相邻止盈单跨越的网格数量,默认 2 */
+ private int takeProfitGridSpan;
/** 策略重启跨度阈值,0=禁用 */
private int restartGridSpan;
/** 价格精度 */
@@ -51,6 +53,22 @@
private String unrealizedPnlPriceMode;
/** 是否为生产环境 */
private boolean isProduction;
+ /** 价格驱动开关:true=启用K线推送中的价格驱动逻辑,false=禁用。null=未设置(默认true) */
+ private Boolean priceDriveEnabled;
+ /** 策略运行轮数上限:达到盈利后重启计数,达到此值后不再重启。0=不限 */
+ private int rounds;
+ /** 止损次数统计方式:"single"=单向分别统计 / "dual"=双向统一统计,默认 "dual" */
+ private String stopLossCountMode;
+ /** 加仓间隔:每隔多少次止损触发一次加仓,默认 3 */
+ private int addPositionInterval;
+ /** 加仓数量:每次加仓追加的张数,默认 1 */
+ private int addPositionQuantity;
+ /** 单边最大仓位量:单向持仓张数上限,超出则按上限挂单,0=不限制 */
+ private int maxPositionPerSide;
+ /** 加仓启动阈值:前N次止损不触发加仓,默认 1 */
+ private int addPositionStartThreshold;
+ /** 超额止盈开关:true=挂单成交后将超出基础仓位的部分挂止盈单,默认 false */
+ private boolean placeExcessTakeProfit;
/**
* 从 GateConfig 构建 DTO(不暴露 apiSecret)。
@@ -69,12 +87,21 @@
.quantity(config.getQuantity())
.maxPositionSize(config.getMaxPositionSize())
.stopLossCount(config.getStopLossCount())
+ .takeProfitGridSpan(config.getTakeProfitGridSpan())
.restartGridSpan(config.getRestartGridSpan())
.priceScale(config.getPriceScale())
.contractMultiplier(config.getContractMultiplier())
.unrealizedPnlPriceMode(config.getUnrealizedPnlPriceMode() != null
? config.getUnrealizedPnlPriceMode().name() : "LAST_PRICE")
.isProduction(config.isProduction())
+ .priceDriveEnabled(config.isPriceDriveEnabled())
+ .rounds(config.getRounds())
+ .stopLossCountMode(config.getStopLossCountMode())
+ .addPositionInterval(config.getAddPositionInterval())
+ .addPositionQuantity(config.getAddPositionQuantity())
+ .maxPositionPerSide(config.getMaxPositionPerSide())
+ .addPositionStartThreshold(config.getAddPositionStartThreshold())
+ .placeExcessTakeProfit(config.isPlaceExcessTakeProfit())
.build();
}
}
--
Gitblit v1.9.1