From edacdea5dbcba5b79e205f82bc2b9873297a8d96 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Wed, 30 Sep 2026 22:10:40 +0800
Subject: [PATCH] feat(gateApi): 添加基础仓位止盈网格功能
---
src/main/java/com/xcong/excoin/modules/gateApi/GateConfigPersistenceService.java | 31 ++++++++++++++++++++++++++++++-
1 files changed, 30 insertions(+), 1 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/gateApi/GateConfigPersistenceService.java b/src/main/java/com/xcong/excoin/modules/gateApi/GateConfigPersistenceService.java
index abc0bc7..1ccf3be 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateConfigPersistenceService.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateConfigPersistenceService.java
@@ -107,9 +107,18 @@
.priceDriveEnabled(nvl(dto.getPriceDriveEnabled(), true))
.rounds(dto.getRounds())
.stopLossCountMode(nvl(dto.getStopLossCountMode(), "dual"))
- .addPositionInterval(dto.getAddPositionInterval() > 0 ? dto.getAddPositionInterval() : 3)
+ .addPositionInterval(dto.getAddPositionInterval() >= 0 ? dto.getAddPositionInterval() : 3)
.addPositionQuantity(dto.getAddPositionQuantity() > 0 ? dto.getAddPositionQuantity() : 1)
.maxPositionPerSide(dto.getMaxPositionPerSide())
+ .addPositionStartThreshold(dto.getAddPositionStartThreshold() >= 0 ? dto.getAddPositionStartThreshold() : 1)
+ .placeExcessTakeProfit(normalizeTakeProfitMode(dto.getPlaceExcessTakeProfit()))
+ .dualStopLossEnabled(nvl(dto.getDualStopLossEnabled(), false))
+ .longStopLossPrice(dto.getLongStopLossPrice())
+ .shortStopLossPrice(dto.getShortStopLossPrice())
+ .tpTriggerOppositeAddEnabled(nvl(dto.getTpTriggerOppositeAddEnabled(), false))
+ .tpTriggerOppositeAddQuantity(dto.getTpTriggerOppositeAddQuantity() != null && dto.getTpTriggerOppositeAddQuantity() > 0 ? dto.getTpTriggerOppositeAddQuantity() : 0)
+ .baseTakeProfitPerGrid(dto.getBaseTakeProfitPerGrid() != null && dto.getBaseTakeProfitPerGrid() > 0 ? dto.getBaseTakeProfitPerGrid() : 0)
+ .baseTakeProfitGridCount(dto.getBaseTakeProfitGridCount() != null && dto.getBaseTakeProfitGridCount() > 0 ? dto.getBaseTakeProfitGridCount() : 0)
.build();
}
@@ -139,4 +148,24 @@
private static <T> T nvl(T value, T fallback) {
return value != null ? value : fallback;
}
+
+ /**
+ * 归一化止盈挂单模式,兼容旧版 boolean 配置(旧 JSON 的 true/false 会被 Jackson 反序列化为字符串)。
+ */
+ private static String normalizeTakeProfitMode(String raw) {
+ if (raw == null || raw.trim().isEmpty()) {
+ return GateConfig.EXCESS_TP_OFF;
+ }
+ switch (raw.trim()) {
+ case "off":
+ return GateConfig.EXCESS_TP_OFF;
+ case "true":
+ case "concentrated":
+ return GateConfig.EXCESS_TP_CONCENTRATED;
+ case "dispersed":
+ return GateConfig.EXCESS_TP_DISPERSED;
+ default:
+ return GateConfig.EXCESS_TP_OFF;
+ }
+ }
}
--
Gitblit v1.9.1