From cbcf779da2e10df907350debf8ae648e93824c56 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Mon, 15 Jun 2026 21:28:16 +0800
Subject: [PATCH] fix(gateApi): 修复网格交易止损数量计算逻辑
---
src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java | 25 +++++++++++++------------
1 files changed, 13 insertions(+), 12 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 90258ee..8ed0b97 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
@@ -608,7 +608,7 @@
if (shortGridElement.isHasShortOrder() && StrUtil.isNotEmpty(tradeId) && !tradeId.equals("0") ){
int filledQty = Integer.parseInt(shortGridElement.getShortTraderParam().getQuantity());
shortEntryTraderIdParam(shortGridElement, null, false);
- extendShortStopLoss(filledQty);
+ extendShortStopLoss(filledQty,shortGridElement.getId());
log.info("[Gate] 空单成交 gridId:{}", filledQty);
// 空仓持仓超过baseQuantity时,从gridId-2开始向外追挂止盈
@@ -646,7 +646,7 @@
int filledQty = Integer.parseInt(longGridElement.getLongTraderParam().getQuantity());
longEntryTraderIdParam(longGridElement, null, false);
- extendLongStopLoss(filledQty);
+ extendLongStopLoss(filledQty,longGridElement.getId());
log.info("[Gate] 多单成交 gridId:{}", filledQty);
// 多仓持仓超过baseQuantity时,从gridId+2开始向外追挂止盈
@@ -1116,9 +1116,9 @@
BigDecimal baseQuantity = new BigDecimal(config.getBaseQuantity());
BigDecimal subtract = baseQuantity.subtract(longPositionSize);
- String size = new BigDecimal(config.getQuantity()).add(new BigDecimal("1")).toString();
- if (subtract.compareTo(BigDecimal.ZERO) >=0){
- size = subtract.add(new BigDecimal("1")).toString();
+ String size = new BigDecimal(config.getQuantity()).add(new BigDecimal(config.getQuantity())).toString();
+ if (subtract.compareTo(BigDecimal.ZERO) > 0){
+ size = subtract.add(new BigDecimal(config.getQuantity())).toString();
}
log.info("[Gate] 多仓止损触发 gridId:{}, 在gridId:{}挂{}基础张多单",
gridId, newEntryGridId, size);
@@ -1174,9 +1174,10 @@
BigDecimal baseQuantity = new BigDecimal(config.getBaseQuantity());
BigDecimal subtract = baseQuantity.subtract(shortPositionSize);
- String size = new BigDecimal(config.getQuantity()).add(new BigDecimal("1")).toString();
- if (subtract.compareTo(BigDecimal.ZERO) >=0){
- size = subtract.add(new BigDecimal("1")).toString();
+
+ String size = new BigDecimal(config.getQuantity()).add(new BigDecimal(config.getQuantity())).toString();
+ if (subtract.compareTo(BigDecimal.ZERO) > 0){
+ size = subtract.add(new BigDecimal(config.getQuantity())).toString();
}
log.info("[Gate] 空仓止损触发 gridId:{}, 在gridId:{}挂{}基础张空单",
gridId, newEntryGridId, size);
@@ -1213,7 +1214,7 @@
}
}
- private void extendLongStopLoss(int filledQty) {
+ private void extendLongStopLoss(int filledQty,int gridId) {
int furthestSlId = 0;
for (GridElement e : config.getGridElements()) {
if (e.getLongStopLossOrderId() != null && e.getId() < furthestSlId) {
@@ -1221,7 +1222,7 @@
}
}
if (furthestSlId == 0) {
- furthestSlId = -11;
+ furthestSlId = gridId;
}
log.info("[Gate] 多仓追挂止损, 当前最远止损gridId:{}, 追加{}张", furthestSlId, filledQty);
for (int i = 0; i < filledQty; i++) {
@@ -1246,7 +1247,7 @@
}
}
- private void extendShortStopLoss(int filledQty) {
+ private void extendShortStopLoss(int filledQty, int gridId) {
int furthestSlId = 0;
for (GridElement e : config.getGridElements()) {
if (e.getShortStopLossOrderId() != null && e.getId() > furthestSlId) {
@@ -1254,7 +1255,7 @@
}
}
if (furthestSlId == 0) {
- furthestSlId = 11;
+ furthestSlId = gridId;
}
log.info("[Gate] 空仓追挂止损, 当前最远止损gridId:{}, 追加{}张", furthestSlId, filledQty);
for (int i = 0; i < filledQty; i++) {
--
Gitblit v1.9.1