Administrator
2026-08-06 6b13eb7a2036ef6c1eb3475478e7f965e5eb0068
fix(gateApi): 修复网格交易中的止损计数和仓位计算问题

- 移除重复的损失计数器增加操作
- 在止损触发时正确更新损失计数器
- 修复仓位大小计算逻辑,使用基础数量而非最大仓位
- 统一多空仓位止损逻辑的一致性处理
1 files modified
9 ■■■■■ changed files
src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
@@ -676,7 +676,6 @@
                log.info("[Gate] 空单成交 gridId:{}, 当前持仓:{}张", filledQty, posSize);
                accumulatedShortLossCount++;
                checkShortStopLongProfit(accumulatedShortLossCount, shortGridElement.getId() + 2);
            }
@@ -708,7 +707,6 @@
//                placeExcessTakeProfit(posSize, true);
                log.info("[Gate] 多单成交 gridId:{}, 当前持仓:{}张", filledQty, posSize);
                accumulatedLongLossCount++;
                checkLongStopShortProfit(accumulatedLongLossCount, longGridElement.getId() -2);
            }
@@ -1287,6 +1285,8 @@
        }
        lastLongStopLossGridId = gridId;
        accumulatedLongLossCount++;
        log.info("[Gate] 多仓止损触发 gridId:{}, 止损次数:{}{}, 开始追单",
                gridId, accumulatedLongLossCount, sameGrid ? "(同网格)" : "");
        int newEntryGridId = gridId + 1;
@@ -1379,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;
        }
@@ -1435,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;
        }
@@ -1496,6 +1496,7 @@
            return;
        }
        lastShortStopLossGridId = gridId;
        accumulatedShortLossCount++;
        log.info("[Gate] 空仓止损触发 gridId:{}, 止损次数:{}{}, 开始追单",
                gridId, accumulatedShortLossCount, sameGrid ? "(同网格)" : "");
        int newEntryGridId = gridId - 1;