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