From 3d9550bc49d269d0721cc0df039048049800c830 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Tue, 09 Jun 2026 10:45:28 +0800
Subject: [PATCH] ``` feat(gateApi): 添加网格交易价格驱动挂单状态控制
---
src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java | 20 ++++++++++++++++----
1 files changed, 16 insertions(+), 4 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 df29b87..bc63eae 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
@@ -136,6 +136,11 @@
/** 多头是否活跃(有仓位) */
private volatile boolean longActive = false;
+ /** 价格驱动 空头是否挂单 */
+ private volatile boolean shortEntryActive = false;
+ /** 价格驱动 多头是否挂单 */
+ private volatile boolean longEntryActive = false;
+
private volatile BigDecimal lastKlinePrice;
private volatile BigDecimal markPrice = BigDecimal.ZERO;
private volatile BigDecimal cumulativePnl = BigDecimal.ZERO;
@@ -413,14 +418,16 @@
if (state == StrategyState.ACTIVE &&
longActive == false &&
- longPositionSize.compareTo(BigDecimal.ZERO) == 0){
+ longPositionSize.compareTo(BigDecimal.ZERO) == 0 &&
+ longEntryActive){
processShortGrid(closePrice);
}
if (state == StrategyState.ACTIVE &&
shortActive == false &&
- shortPositionSize.compareTo(BigDecimal.ZERO) == 0){
+ shortPositionSize.compareTo(BigDecimal.ZERO) == 0 &&
+ shortEntryActive){
processLongGrid(closePrice);
}
}
@@ -478,6 +485,7 @@
// log.info("[Gate] 多仓持仓归零,重置策略");
// handlePositionZeroAndReset("多仓");
}
+ longEntryActive = true;
longActive = false;
longPositionSize = BigDecimal.ZERO;
}
@@ -501,6 +509,7 @@
// log.info("[Gate] 空仓持仓归零,重置策略");
// handlePositionZeroAndReset("空仓");
}
+ shortEntryActive = true;
shortActive = false;
shortPositionSize = BigDecimal.ZERO;
}
@@ -1199,7 +1208,7 @@
if (BigDecimal.ZERO.compareTo( matched) == 0) {
return;
}
- log.info("[Gate] 空仓队列触发, 匹配:{},当前价:{}", matched, currentPrice);
+ log.info("[Gate] 多仓仓位归零 空仓队列触发, 匹配:{},当前价:{}", matched, currentPrice);
GridElement matchedUpGridElement = GridElement.findByPrice(matched);
@@ -1218,6 +1227,7 @@
placeEntryOrderWithPreFlag(newEntryGrid, true, triggerPrice,
FuturesPriceTrigger.RuleEnum.NUMBER_1, size);
+ longEntryActive = false;
/**
* 看是否有多仓挂单,有就取消
@@ -1247,7 +1257,7 @@
return;
}
- log.info("[Gate] 多仓队列触发, 匹配:{},当前价:{}", matched, currentPrice);
+ log.info("[Gate] 空仓仓位归零 多仓队列触发, 匹配:{},当前价:{}", matched, currentPrice);
GridElement matchedUpGridElement = GridElement.findByPrice(matched);
@@ -1266,6 +1276,8 @@
placeEntryOrderWithPreFlag(newEntryGrid, false, triggerPrice,
FuturesPriceTrigger.RuleEnum.NUMBER_2, negate(size));
+ shortEntryActive = false;
+
/**
* 看是否有空仓挂单,有就取消
*/
--
Gitblit v1.9.1