From b6deca01c4d6be9f732e0feb976b44b9bd822925 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Tue, 02 Jun 2026 17:54:10 +0800
Subject: [PATCH] fix(gateapi): 解决WebSocket连接超时问题
---
src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java | 30 +++++++++++++++++++++++-------
1 files changed, 23 insertions(+), 7 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 7f30933..e277173 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
@@ -305,7 +305,23 @@
longPriceQueue.clear();
currentLongOrderIds.clear();
currentShortOrderIds.clear();
- log.info("[Gate] 网格策略已启动");
+
+ // 每次重启重新获取当前本金
+ refreshInitialPrincipal();
+
+ log.info("[Gate] 网格策略已启动, 当前本金: {} USDT", initialPrincipal);
+ }
+
+ /**
+ * 重新获取当前账户权益作为初始本金。
+ */
+ private void refreshInitialPrincipal() {
+ try {
+ FuturesAccount account = futuresApi.listFuturesAccounts(SETTLE);
+ this.initialPrincipal = new BigDecimal(account.getTotal());
+ } catch (Exception e) {
+ log.warn("[Gate] 获取初始化本金失败,使用旧值: {}", initialPrincipal);
+ }
}
/**
@@ -908,7 +924,7 @@
triggerPrice,
FuturesPriceTrigger.RuleEnum.NUMBER_1,
ORDER_TYPE_CLOSE_SHORT,
- "1",
+ config.getQuantity(),
profitId -> {
elem.setShortStopLossOrderId(profitId);
GridElement.refreshIndices();
@@ -928,7 +944,7 @@
triggerPrice,
FuturesPriceTrigger.RuleEnum.NUMBER_2,
ORDER_TYPE_CLOSE_LONG,
- "-1",
+ negate(config.getQuantity()),
profitId -> {
elem.setLongStopLossOrderId(profitId);
GridElement.refreshIndices();
@@ -1375,7 +1391,7 @@
BigDecimal priceDiff = longEntryPrice.subtract(triggerPrice).abs();
int entryQty = priceDiff.divide(config.getStep(), 0, RoundingMode.DOWN).intValue();
entryQty = Math.max(1, entryQty);
- String size = String.valueOf(entryQty);
+ String size = new BigDecimal(String.valueOf(entryQty)).multiply(new BigDecimal(config.getQuantity())).toString();
log.info("[Gate] 多仓止损触发 gridId:{}, 在gridId:{}挂{}张多单, 均价:{}, 价差:{}, 步长:{}",
gridId, newEntryGridId, entryQty, longEntryPrice, priceDiff, config.getStep());
newEntryGrid.getLongTraderParam().setQuantity(size);
@@ -1415,7 +1431,7 @@
BigDecimal priceDiff = shortEntryPrice.subtract(triggerPrice).abs();
int entryQty = priceDiff.divide(config.getStep(), 0, RoundingMode.DOWN).intValue();
entryQty = Math.max(1, entryQty);
- String size = String.valueOf(entryQty);
+ String size = new BigDecimal(String.valueOf(entryQty)).multiply(new BigDecimal(config.getQuantity())).toString();
log.info("[Gate] 空仓止损触发 gridId:{}, 在gridId:{}挂{}张空单, 均价:{}, 价差:{}, 步长:{}",
gridId, newEntryGridId, entryQty, shortEntryPrice, priceDiff, config.getStep());
newEntryGrid.getShortTraderParam().setQuantity(size);
@@ -1446,7 +1462,7 @@
triggerPrice,
FuturesPriceTrigger.RuleEnum.NUMBER_2,
ORDER_TYPE_CLOSE_LONG,
- "-1",
+ negate(config.getQuantity()),
profitId -> {
elem.setLongStopLossOrderId(profitId);
GridElement.refreshIndices();
@@ -1479,7 +1495,7 @@
triggerPrice,
FuturesPriceTrigger.RuleEnum.NUMBER_1,
ORDER_TYPE_CLOSE_SHORT,
- "1",
+ config.getQuantity(),
profitId -> {
elem.setShortStopLossOrderId(profitId);
GridElement.refreshIndices();
--
Gitblit v1.9.1