Administrator
2026-06-17 f8aa7011fbc5d3ccd679ce523c602dfa559244ec
src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
@@ -1127,6 +1127,8 @@
            return;
        }
        // [Gate-BugFix] 防止与"仓位归零"重复下单:若该网格已有挂单则跳过
        if (!newEntryGrid.isHasLongOrder()) {
        BigDecimal triggerPrice = newEntryGrid.getGridPrice();
        // 累计止损张数 + 当前止损量作为追单size,不再依赖positionSize(避免WS竞态)
@@ -1138,7 +1140,9 @@
        newEntryGrid.getLongTraderParam().setQuantity(size);
        placeEntryOrderWithPreFlag(newEntryGrid, true, triggerPrice,
                FuturesPriceTrigger.RuleEnum.NUMBER_1, size);
        }else{
            log.warn("[Gate] 多仓止损触发 gridId:{}, 目标gridId:{}已有挂单,跳过重复下单", gridId, newEntryGridId);
        }
        int cancelGridId = gridId + 2;
        GridElement cancelGrid = GridElement.findById(cancelGridId);
@@ -1182,6 +1186,8 @@
            return;
        }
        // [Gate-BugFix] 防止与"仓位归零"重复下单:若该网格已有挂单则跳过
        if (!newEntryGrid.isHasShortOrder()) {
        BigDecimal triggerPrice = newEntryGrid.getGridPrice();
        // 累计止损张数 + 当前止损量作为追单size,不再依赖positionSize(避免WS竞态)
@@ -1192,6 +1198,11 @@
        newEntryGrid.getShortTraderParam().setQuantity(size);
        placeEntryOrderWithPreFlag(newEntryGrid, false, triggerPrice,
                FuturesPriceTrigger.RuleEnum.NUMBER_2, negate(size));
        }else{
            log.warn("[Gate] 空仓止损触发 gridId:{}, 目标gridId:{}已有挂单,跳过重复下单", gridId, newEntryGridId);
        }
        int cancelGridId = gridId - 2;