From 99429b6abbf0ee6da41d941851c5df6c6ec5347b Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Fri, 07 Aug 2026 11:29:56 +0800
Subject: [PATCH] config(gateApi): 更新Gate API密钥配置
---
src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java | 137 ++++++++++++++++++++++-----------------------
1 files changed, 68 insertions(+), 69 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 5ce118d..af22594 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
@@ -376,7 +376,7 @@
*/
public void onKline(BigDecimal closePrice) {
- log.info("当前价:{}", closePrice);
+// log.info("当前价:{}", closePrice);
lastKlinePrice = closePrice;
@@ -676,7 +676,6 @@
log.info("[Gate] 空单成交 gridId:{}, 当前持仓:{}张", filledQty, posSize);
-
checkShortStopLongProfit(accumulatedShortLossCount, shortGridElement.getId() + 2);
}
@@ -707,7 +706,6 @@
// [Gate] 止盈挂单:超出基础仓位的部分,挂在空仓第一止损位
// placeExcessTakeProfit(posSize, true);
log.info("[Gate] 多单成交 gridId:{}, 当前持仓:{}张", filledQty, posSize);
-
checkLongStopShortProfit(accumulatedLongLossCount, longGridElement.getId() -2);
@@ -1157,8 +1155,8 @@
if (newEntryGrid != null) {
- String quantity = String.valueOf(Math.max(queryPositionSize(Position.ModeEnum.DUAL_SHORT), shortPositionSize.intValue()) + Integer.parseInt(config.getQuantity()));
-
+// String quantity = String.valueOf(Math.max(queryPositionSize(Position.ModeEnum.DUAL_SHORT), shortPositionSize.intValue()) + Integer.parseInt(config.getQuantity()));
+ String quantity = String.valueOf(config.getBaseQuantity());
// 向下检查是否已有多单挂在更低价格网格,有则跳过(防止价格回升后重复挂单)
boolean hasLongOrderBelow = false;
GridElement checkDownCursor = GridElement.findById(newEntryGrid.getDownId());
@@ -1228,8 +1226,8 @@
if (newEntryGrid != null) {
// String quantity = String.valueOf((accumulatedShortLossCount + 1) * Integer.parseInt(config.getQuantity()));
- String quantity = String.valueOf(Math.max(queryPositionSize(Position.ModeEnum.DUAL_LONG), longPositionSize.intValue()) + Integer.parseInt(config.getQuantity()));
-
+// String quantity = String.valueOf(Math.max(queryPositionSize(Position.ModeEnum.DUAL_LONG), longPositionSize.intValue()) + Integer.parseInt(config.getQuantity()));
+ String quantity = String.valueOf(config.getBaseQuantity());
// 向上检查是否已有空单挂在更高价格网格,有则跳过(防止价格回落后重复挂单)
boolean hasShortOrderAbove = false;
GridElement checkUpCursor = GridElement.findById(newEntryGrid.getUpId());
@@ -1287,6 +1285,7 @@
}
lastLongStopLossGridId = gridId;
+
accumulatedLongLossCount++;
log.info("[Gate] 多仓止损触发 gridId:{}, 止损次数:{}{}, 开始追单",
gridId, accumulatedLongLossCount, sameGrid ? "(同网格)" : "");
@@ -1336,34 +1335,34 @@
// times {满仓%, 阈值%}
put(1, new int[]{0, 0});
put(2, new int[]{0, 0});
- put(3, new int[]{30, 0});
+ put(3, new int[]{10, 0});
put(4, new int[]{0, 0});
put(5, new int[]{0, 0});
- put(6, new int[]{40, 40});
+ put(6, new int[]{20, 40});
put(7, new int[]{0, 0});
put(8, new int[]{0, 0});
- put(9, new int[]{50, 50});
+ put(9, new int[]{30, 50});
put(10, new int[]{0, 0});
put(11, new int[]{0, 0});
- put(12, new int[]{55, 60});
+ put(12, new int[]{40, 60});
put(13, new int[]{0, 0});
put(14, new int[]{0, 0});
- put(15, new int[]{60, 60});
+ put(15, new int[]{50, 60});
put(16, new int[]{0, 0});
put(17, new int[]{0, 0});
- put(18, new int[]{65, 65});
+ put(18, new int[]{55, 65});
put(19, new int[]{0, 0});
put(20, new int[]{0, 0});
- put(21, new int[]{70, 70});
+ put(21, new int[]{60, 70});
put(22, new int[]{0, 0});
put(23, new int[]{0, 0});
- put(24, new int[]{75, 75});
+ put(24, new int[]{65, 75});
put(25, new int[]{0, 0});
put(26, new int[]{0, 0});
- put(27, new int[]{80, 80});
+ put(27, new int[]{70, 80});
put(28, new int[]{0, 0});
put(29, new int[]{0, 0});
- put(30, new int[]{85, 85});
+ put(30, new int[]{75, 85});
put(31, new int[]{0, 0});
put(32, new int[]{0, 0});
}
@@ -1380,7 +1379,7 @@
*/
private void checkLongStopShortProfit(int times, int gridId) {
int[] r = ruleOf(times);
- int maxPos = config.getMaxPositionSize();
+ int maxPos = Integer.parseInt(config.getBaseQuantity());
if (maxPos <= 0) {
return;
}
@@ -1403,31 +1402,31 @@
}
// ---------- 己方(多仓)盈止(≥6次) ----------
- if (times >= 6 && thresholdPct > 0) {
- int selfPos = Math.max(queryPositionSize(Position.ModeEnum.DUAL_LONG), longPositionSize.intValue());
- int excess = selfPos - thresholdPosNum;
- if (excess > 0) {
- int perOrderQty = maxPos * DEFAULT_STOP_LOSS_PERCENT / 100;
- if (perOrderQty <= 0) {
- perOrderQty = 1;
- }
- int totalOrders = excess / perOrderQty;
- if (totalOrders <= 0) {
- totalOrders = 1;
- }
- int entryGridId = 0; // 多仓建仓格
- for (int i = 0; i < totalOrders; i++) {
- int tpGridId = entryGridId + 2 * (i + 1); // 朝盈利方向(向上)间隔2格
- GridElement tpElem = GridElement.findById(tpGridId);
- if (tpElem == null) {
- break;
- }
- placeTakeProfitAtGrid(tpElem, true, perOrderQty, times);
- }
- log.info("[Gate] 止损{}→己方多仓止盈, excess:{}, 挂{}单, 每单{}张",
- times, excess, totalOrders, perOrderQty);
- }
- }
+// if (times >= 6 && thresholdPct > 0) {
+// int selfPos = Math.max(queryPositionSize(Position.ModeEnum.DUAL_LONG), longPositionSize.intValue());
+// int excess = selfPos - thresholdPosNum;
+// if (excess > 0) {
+// int perOrderQty = maxPos * DEFAULT_STOP_LOSS_PERCENT / 100;
+// if (perOrderQty <= 0) {
+// perOrderQty = 1;
+// }
+// int totalOrders = excess / perOrderQty;
+// if (totalOrders <= 0) {
+// totalOrders = 1;
+// }
+// int entryGridId = 0; // 多仓建仓格
+// for (int i = 0; i < totalOrders; i++) {
+// int tpGridId = entryGridId + 2 * (i + 1); // 朝盈利方向(向上)间隔2格
+// GridElement tpElem = GridElement.findById(tpGridId);
+// if (tpElem == null) {
+// break;
+// }
+// placeTakeProfitAtGrid(tpElem, true, perOrderQty, times);
+// }
+// log.info("[Gate] 止损{}→己方多仓止盈, excess:{}, 挂{}单, 每单{}张",
+// times, excess, totalOrders, perOrderQty);
+// }
+// }
}
@@ -1436,7 +1435,7 @@
*/
private void checkShortStopLongProfit(int times, int gridId) {
int[] r = ruleOf(times);
- int maxPos = config.getMaxPositionSize();
+ int maxPos = Integer.parseInt(config.getBaseQuantity());
if (maxPos <= 0) {
return;
}
@@ -1459,31 +1458,31 @@
}
// ---------- 己方(空仓)盈止(≥6次) ----------
- if (times >= 6 && thresholdPct > 0) {
- int selfPos = Math.max(queryPositionSize(Position.ModeEnum.DUAL_SHORT), shortPositionSize.intValue());
- int excess = selfPos - thresholdPosNum;
- if (excess > 0) {
- int perOrderQty = maxPos * DEFAULT_STOP_LOSS_PERCENT / 100;
- if (perOrderQty <= 0) {
- perOrderQty = 1;
- }
- int totalOrders = excess / perOrderQty;
- if (totalOrders <= 0) {
- totalOrders = 1;
- }
- int entryGridId = 0; // 空仓建仓格
- for (int i = 0; i < totalOrders; i++) {
- int tpGridId = entryGridId - 2 * (i + 1); // 朝盈利方向(向下)间隔2格
- GridElement tpElem = GridElement.findById(tpGridId);
- if (tpElem == null) {
- break;
- }
- placeTakeProfitAtGrid(tpElem, false, perOrderQty, times);
- }
- log.info("[Gate] 止损{}→己方空仓止盈, excess:{}, 挂{}单, 每单{}张",
- times, excess, totalOrders, perOrderQty);
- }
- }
+// if (times >= 6 && thresholdPct > 0) {
+// int selfPos = Math.max(queryPositionSize(Position.ModeEnum.DUAL_SHORT), shortPositionSize.intValue());
+// int excess = selfPos - thresholdPosNum;
+// if (excess > 0) {
+// int perOrderQty = maxPos * DEFAULT_STOP_LOSS_PERCENT / 100;
+// if (perOrderQty <= 0) {
+// perOrderQty = 1;
+// }
+// int totalOrders = excess / perOrderQty;
+// if (totalOrders <= 0) {
+// totalOrders = 1;
+// }
+// int entryGridId = 0; // 空仓建仓格
+// for (int i = 0; i < totalOrders; i++) {
+// int tpGridId = entryGridId - 2 * (i + 1); // 朝盈利方向(向下)间隔2格
+// GridElement tpElem = GridElement.findById(tpGridId);
+// if (tpElem == null) {
+// break;
+// }
+// placeTakeProfitAtGrid(tpElem, false, perOrderQty, times);
+// }
+// log.info("[Gate] 止损{}→己方空仓止盈, excess:{}, 挂{}单, 每单{}张",
+// times, excess, totalOrders, perOrderQty);
+// }
+// }
}
--
Gitblit v1.9.1