From e4cae0f215941da2059a8f37cd8d1a192f7a60cd Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Mon, 08 Jun 2026 11:17:42 +0800
Subject: [PATCH] ``` chore(gateApi): 注释掉持仓归零时的重置策略逻辑
---
src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java | 30 +++++++++++++++++-------------
1 files changed, 17 insertions(+), 13 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 09c4731..2c445b3 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
@@ -461,8 +461,8 @@
}
} else {
if (longActive && state == StrategyState.ACTIVE) {
- log.info("[Gate] 多仓持仓归零,重置策略");
- handlePositionZeroAndReset("多仓");
+// log.info("[Gate] 多仓持仓归零,重置策略");
+// handlePositionZeroAndReset("多仓");
}
longActive = false;
longPositionSize = BigDecimal.ZERO;
@@ -484,8 +484,8 @@
}
} else {
if (shortActive && state == StrategyState.ACTIVE) {
- log.info("[Gate] 空仓持仓归零,重置策略");
- handlePositionZeroAndReset("空仓");
+// log.info("[Gate] 空仓持仓归零,重置策略");
+// handlePositionZeroAndReset("空仓");
}
shortActive = false;
shortPositionSize = BigDecimal.ZERO;
@@ -793,7 +793,7 @@
shortEntryQty = 1;
extendShortStopLoss(filledQty);
log.info("[Gate] 空单成交 gridId:{}, qty:{}, 追挂止损", shortGridElement.getId(), filledQty);
- checkMaxPositionAndPlaceTakeProfit(false, shortGridElement.getId());
+// checkMaxPositionAndPlaceTakeProfit(false, shortGridElement.getId());
}
}
GridElement longGridElement = GridElement.findByLongOrderId(orderId);
@@ -804,7 +804,7 @@
longEntryQty = 1;
extendLongStopLoss(filledQty);
log.info("[Gate] 多单成交 gridId:{}, qty:{}, 追挂止损", longGridElement.getId(), filledQty);
- checkMaxPositionAndPlaceTakeProfit(true, longGridElement.getId());
+// checkMaxPositionAndPlaceTakeProfit(true, longGridElement.getId());
}
}
}
@@ -928,7 +928,8 @@
baseGridElement.setShortOrderId(baseShortTraderParam.getEntryOrderId());
baseGridElement.setHasShortOrder(true);
- for (int id = 2; id <= 11; id++) {
+ int shortTime = Integer.parseInt(config.getBaseQuantity()) + 1;
+ for (int id = 2; id <= shortTime; id++) {
GridElement elem = GridElement.findById(id);
if (elem == null) {
continue;
@@ -948,7 +949,9 @@
);
}
- for (int id = -2; id >= -11; id--) {
+
+ int longTime = Integer.parseInt(config.getBaseQuantity()) + 1;
+ for (int id = -2; id >= -longTime; id--) {
GridElement elem = GridElement.findById(id);
if (elem == null) {
continue;
@@ -968,7 +971,7 @@
);
}
- log.info("[Gate] 止损单已全部挂完, 空仓止损: 2~11, 多仓止损: -2~-11");
+ log.info("[Gate] 止损单已全部挂完, 空仓止损: 2~{}, 多仓止损: -2~-{}", shortTime, longTime);
state = StrategyState.ACTIVE;
}
}
@@ -1595,14 +1598,15 @@
BigDecimal totalEquity = unrealisedPnl.add(available);
// 估算平仓手续费:(多仓张数+空仓张数) × 合约面值 × 当前价 × taker费率
- BigDecimal closeContractValue = longPositionSize.add(shortPositionSize)
- .multiply(CT_VAL).multiply(lastKlinePrice != null ? lastKlinePrice : BigDecimal.ZERO);
+ BigDecimal totalSize = longPositionSize.abs().add(shortPositionSize.abs());
+ BigDecimal closeContractValue =
+ totalSize.multiply(CT_VAL).multiply(lastKlinePrice != null ? lastKlinePrice : BigDecimal.ZERO);
BigDecimal estimatedFee = closeContractValue.multiply(TAKER_FEE_RATE);
BigDecimal netEquity = totalEquity.subtract(estimatedFee);
BigDecimal target = initialPrincipal.add(config.getExpectedProfit());
- log.info("[Gate] 盈亏检查 upl:{}, avail:{}, 合计:{}, 估手续费:{}, 净权益:{}, 目标:{}",
- unrealisedPnl, available, totalEquity, estimatedFee, netEquity, target);
+ log.info("[Gate] 盈亏检查,总张数:{}, upl:{}, avail:{}, 合计:{}, 估手续费:{}, 净权益:{}, 目标:{}",
+ totalSize,unrealisedPnl, available, totalEquity, estimatedFee, netEquity, target);
if (netEquity.compareTo(target) > 0) {
log.info("[Gate] 盈亏达标(净权益{}>目标{}),重置策略", netEquity, target);
state = StrategyState.STOPPED;
--
Gitblit v1.9.1