From 6f2e031ee0d0e49b09770541aa379bae2fa722d1 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Mon, 22 Jun 2026 13:32:52 +0800
Subject: [PATCH] fix(gateApi): 修复网格交易价格队列初始化和方向标识错误
---
src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java | 98 +++----------------------------------------------
1 files changed, 6 insertions(+), 92 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 01bea3a..b8854b3 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
@@ -309,6 +309,8 @@
accumulatedShortLossCount = 0;
shortPriceQueue.clear();
longPriceQueue.clear();
+ totalShortPriceQueue.clear();
+ totalLongPriceQueue.clear();
currentLongOrderIds.clear();
currentShortOrderIds.clear();
// 每次重启重新获取当前本金
@@ -878,6 +880,8 @@
*/
private void generateShortQueue() {
shortPriceQueue.clear();
+ totalShortPriceQueue.clear();
+ totalLongPriceQueue.clear();
int prec = config.getPriceScale();
BigDecimal step = shortBaseEntryPrice.multiply(config.getGridRate()).setScale(prec, RoundingMode.HALF_UP);
config.setStep(step);
@@ -990,8 +994,8 @@
elements.add(GridElement.builder()
.id(0)
.gridPrice(price)
- .upId(shortSize > 0 ? 1 : null)
- .downId(longSize > 0 ? -1 : null)
+ .upId(longSize > 0 ? 1 : null)
+ .downId(shortSize > 0 ? -1 : null)
.longTraderParam(longParam)
.shortTraderParam(shortParam)
.build());
@@ -1253,96 +1257,6 @@
});
}
}
-
- // ========== 止盈/止损取消辅助方法 ==========
-
- /**
- * 取消最远的多仓止损订单。
- * 多仓止损在 gridId 负方向,最远 = id 最小。
- */
- private void cancelFarthestLongStopLoss() {
- GridElement farthest = null;
- for (GridElement e : config.getGridElements()) {
- if (e.getLongStopLossOrderId() != null) {
- if (farthest == null || e.getId() < farthest.getId()) {
- farthest = e;
- }
- }
- }
- if (farthest != null) {
- String slId = farthest.getLongStopLossOrderId();
- farthest.setLongStopLossOrderId(null);
- GridElement.refreshIndices();
- GridElement finalFarthest = farthest;
- executor.cancelConditionalOrder(slId, oid ->
- log.info("[Gate] 止盈触发, 取消最远多仓止损 gridId:{}, orderId:{}", finalFarthest.getId(), slId));
- }
- }
-
- /**
- * 取消最远的空仓止损订单。
- * 空仓止损在 gridId 正方向,最远 = id 最大。
- */
- private void cancelFarthestShortStopLoss() {
- GridElement farthest = null;
- for (GridElement e : config.getGridElements()) {
- if (e.getShortStopLossOrderId() != null) {
- if (farthest == null || e.getId() > farthest.getId()) {
- farthest = e;
- }
- }
- }
- if (farthest != null) {
- String slId = farthest.getShortStopLossOrderId();
- farthest.setShortStopLossOrderId(null);
- GridElement.refreshIndices();
- GridElement finalFarthest = farthest;
- executor.cancelConditionalOrder(slId, oid ->
- log.info("[Gate] 止盈触发, 取消最远空仓止损 gridId:{}, orderId:{}", finalFarthest.getId(), slId));
- }
- }
-
- /**
- * 取消所有多仓止盈 + 多仓止损订单(加仓后重建前清场)。
- */
- private void cancelAllLongTakeProfitsAndStopLosses() {
- for (GridElement e : config.getGridElements()) {
- String tpId = e.getLongTakeProfitOrderId();
- if (tpId != null) {
- e.setLongTakeProfitOrderId(null);
- executor.cancelConditionalOrder(tpId, oid -> {});
- }
- String slId = e.getLongStopLossOrderId();
- if (slId != null) {
- e.setLongStopLossOrderId(null);
- executor.cancelConditionalOrder(slId, oid -> {});
- }
- }
- GridElement.refreshIndices();
- log.info("[Gate] 已提交取消所有多仓止盈+止损");
- }
-
- /**
- * 取消所有空仓止盈 + 空仓止损订单(加仓后重建前清场)。
- */
- private void cancelAllShortTakeProfitsAndStopLosses() {
- for (GridElement e : config.getGridElements()) {
- String tpId = e.getShortTakeProfitOrderId();
- if (tpId != null) {
- e.setShortTakeProfitOrderId(null);
- executor.cancelConditionalOrder(tpId, oid -> {});
- }
- String slId = e.getShortStopLossOrderId();
- if (slId != null) {
- e.setShortStopLossOrderId(null);
- executor.cancelConditionalOrder(slId, oid -> {});
- }
- }
- GridElement.refreshIndices();
- log.info("[Gate] 已提交取消所有空仓止盈+止损");
- }
-
- // ========== 止损追单 ==========
private void extendLongStopLoss(int filledQty,int gridId) {
int furthestSlId = 0;
--
Gitblit v1.9.1