From 8ae0d7adb4b522d77032b8c7fd2d42d5f5981725 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Wed, 30 Sep 2026 22:08:09 +0800
Subject: [PATCH] refactor(gateApi): 将基础仓位止盈张数字段类型从整型改为大十进制
---
src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java | 14 +++++++-------
src/main/java/com/xcong/excoin/modules/gateApi/GateConfigDTO.java | 6 +++---
src/main/java/com/xcong/excoin/modules/gateApi/GateConfigPersistenceService.java | 2 +-
src/main/java/com/xcong/excoin/modules/gateApi/GateConfig.java | 10 +++++-----
4 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/gateApi/GateConfig.java b/src/main/java/com/xcong/excoin/modules/gateApi/GateConfig.java
index cd4f7aa..fa70691 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateConfig.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateConfig.java
@@ -140,8 +140,8 @@
private final boolean tpTriggerOppositeAddEnabled;
/** 对向加仓挂单数量:止盈成交后在对向挂出的开仓张数,0=不启用。默认 0 */
private final int tpTriggerOppositeAddQuantity;
- /** 单格止盈张数:基础仓位止盈挂单时每个网格挂的止盈张数。默认 0 */
- private final int baseTakeProfitPerGrid;
+ /** 单格止盈张数:基础仓位止盈挂单时每个网格挂的止盈张数,支持小数。默认 0 */
+ private final BigDecimal baseTakeProfitPerGrid;
/** 止盈网格数量:基础仓位止盈挂单的网格数量。默认 0 */
private final int baseTakeProfitGridCount;
/** 网格绝对步长(shortBaseEntryPrice × gridRate),运行时由队列生成逻辑设置 */
@@ -310,7 +310,7 @@
/** @return 对向加仓挂单数量:止盈成交后在对向挂出的开仓张数 */
public int getTpTriggerOppositeAddQuantity() { return tpTriggerOppositeAddQuantity; }
/** @return 单格止盈张数:基础仓位止盈挂单时每个网格挂的止盈张数 */
- public int getBaseTakeProfitPerGrid() { return baseTakeProfitPerGrid; }
+ public BigDecimal getBaseTakeProfitPerGrid() { return baseTakeProfitPerGrid; }
/** @return 止盈网格数量:基础仓位止盈挂单的网格数量 */
public int getBaseTakeProfitGridCount() { return baseTakeProfitGridCount; }
@@ -436,7 +436,7 @@
/** 对向加仓挂单数量:止盈成交后在对向挂出的开仓张数,默认 0 */
private int tpTriggerOppositeAddQuantity = 0;
/** 单格止盈张数:基础仓位止盈挂单时每个网格挂的止盈张数,默认 0 */
- private int baseTakeProfitPerGrid = 0;
+ private BigDecimal baseTakeProfitPerGrid = BigDecimal.ZERO;
/** 止盈网格数量:基础仓位止盈挂单的网格数量,默认 0 */
private int baseTakeProfitGridCount = 0;
@@ -513,7 +513,7 @@
/** 设置对向加仓挂单数量:止盈成交后在对向挂出的开仓张数 */
public Builder tpTriggerOppositeAddQuantity(int tpTriggerOppositeAddQuantity) { this.tpTriggerOppositeAddQuantity = tpTriggerOppositeAddQuantity; return this; }
/** 设置单格止盈张数:基础仓位止盈挂单时每个网格挂的止盈张数 */
- public Builder baseTakeProfitPerGrid(int baseTakeProfitPerGrid) { this.baseTakeProfitPerGrid = baseTakeProfitPerGrid; return this; }
+ public Builder baseTakeProfitPerGrid(BigDecimal baseTakeProfitPerGrid) { this.baseTakeProfitPerGrid = baseTakeProfitPerGrid; return this; }
/** 设置止盈网格数量:基础仓位止盈挂单的网格数量 */
public Builder baseTakeProfitGridCount(int baseTakeProfitGridCount) { this.baseTakeProfitGridCount = baseTakeProfitGridCount; return this; }
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 be24ef7..5cd93fd 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateConfigDTO.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateConfigDTO.java
@@ -81,8 +81,8 @@
private Boolean tpTriggerOppositeAddEnabled;
/** 对向加仓挂单数量:止盈成交后在对向挂出的开仓张数,0=不启用 */
private Integer tpTriggerOppositeAddQuantity;
- /** 单格止盈张数:基础仓位止盈挂单时每个网格挂的止盈张数,0=不启用 */
- private Integer baseTakeProfitPerGrid;
+ /** 单格止盈张数:基础仓位止盈挂单时每个网格挂的止盈张数,支持小数,0=不启用 */
+ private BigDecimal baseTakeProfitPerGrid;
/** 止盈网格数量:基础仓位止盈挂单的网格数量,0=不启用 */
private Integer baseTakeProfitGridCount;
@@ -198,7 +198,7 @@
.shortStopLossPrice(null)
.tpTriggerOppositeAddEnabled(false)
.tpTriggerOppositeAddQuantity(0)
- .baseTakeProfitPerGrid(0)
+ .baseTakeProfitPerGrid(BigDecimal.ZERO)
.baseTakeProfitGridCount(0)
.build();
}
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 1ccf3be..78e402e 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateConfigPersistenceService.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateConfigPersistenceService.java
@@ -117,7 +117,7 @@
.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)
+ .baseTakeProfitPerGrid(dto.getBaseTakeProfitPerGrid() != null && dto.getBaseTakeProfitPerGrid().compareTo(BigDecimal.ZERO) > 0 ? dto.getBaseTakeProfitPerGrid() : BigDecimal.ZERO)
.baseTakeProfitGridCount(dto.getBaseTakeProfitGridCount() != null && dto.getBaseTakeProfitGridCount() > 0 ? dto.getBaseTakeProfitGridCount() : 0)
.build();
}
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 481b041..e2f4e88 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
@@ -3053,9 +3053,9 @@
* @param entryGridId 入场网格 ID
*/
private void placeBaseTakeProfit(int posSize, boolean isLong, int entryGridId) {
- int perGrid = config.getBaseTakeProfitPerGrid();
+ BigDecimal perGrid = config.getBaseTakeProfitPerGrid();
int gridCount = config.getBaseTakeProfitGridCount();
- if (perGrid <= 0 || gridCount <= 0) {
+ if (perGrid == null || perGrid.compareTo(BigDecimal.ZERO) <= 0 || gridCount <= 0) {
return;
}
int baseQty = Integer.parseInt(config.getBaseQuantity());
@@ -3078,10 +3078,10 @@
// 分配范围到止损位的前一格截止(与分散止盈一致)
int endId = endElem.getId() - dir;
- int remaining = maxQty;
+ BigDecimal remaining = BigDecimal.valueOf(maxQty);
int placed = 0;
int id = startId;
- while (placed < gridCount && remaining > 0) {
+ while (placed < gridCount && remaining.compareTo(BigDecimal.ZERO) > 0) {
if (isLong ? id > endId : id < endId) {
break;
}
@@ -3089,11 +3089,11 @@
if (elem == null) {
break;
}
- int qty = Math.min(perGrid, remaining);
+ BigDecimal qty = perGrid.min(remaining);
final GridElement fe = elem;
final int gid = id;
final BigDecimal triggerPrice = elem.getGridPrice();
- final String size = isLong ? negate(String.valueOf(qty)) : String.valueOf(qty);
+ final String size = isLong ? negate(qty.toPlainString()) : qty.toPlainString();
final String orderType = isLong ? ORDER_TYPE_CLOSE_LONG : ORDER_TYPE_CLOSE_SHORT;
final FuturesPriceTrigger.RuleEnum rule = isLong ? FuturesPriceTrigger.RuleEnum.NUMBER_1
: FuturesPriceTrigger.RuleEnum.NUMBER_2;
@@ -3108,7 +3108,7 @@
isLong ? "多仓" : "空仓", gid, triggerPrice, size, profitId);
}
);
- remaining -= qty;
+ remaining = remaining.subtract(qty);
placed++;
id += dir;
}
--
Gitblit v1.9.1