Administrator
2026-05-19 a49d34b0b49eee01e103d8758d1eb4fb9bb71ead
fix(gateApi): 修正网格交易条件订单触发规则

- 将FuturesPriceTrigger.RuleEnum从NUMBER_1更改为NUMBER_2
- 修复了做多交易者的条件订单执行逻辑
- 统一了两个位置的规则枚举值以确保一致性
2 files modified
27 ■■■■ changed files
src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java 22 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/gateApi/GateTradeExecutor.java 5 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
@@ -421,7 +421,16 @@
                    List<GridElement> allShortOrders = GridElement.findAllShortOrders(longEntryPrice);
                    if (CollUtil.isNotEmpty(allShortOrders)){
                        for (GridElement e : allShortOrders) {
                            executor.cancelOrder(e.getShortOrderId());
                            executor.cancelOrder(
                                    e.getShortOrderId(),
                                    orderId -> {
                                        shortEntryTraderIdParam(
                                                e,
                                                null,
                                                false
                                        );
                                    }
                            );
                        }
                    }
                }
@@ -445,7 +454,16 @@
                    List<GridElement> allLongOrders = GridElement.findAllLongOrders(shortEntryPrice);
                    if (CollUtil.isNotEmpty(allLongOrders)){
                        for (GridElement e : allLongOrders) {
                            executor.cancelOrder(e.getLongOrderId());
                            executor.cancelOrder(
                                    e.getLongOrderId(),
                                    orderId -> {
                                        shortEntryTraderIdParam(
                                                e,
                                                null,
                                                false
                                        );
                                    }
                            );
                        }
                    }
                }
src/main/java/com/xcong/excoin/modules/gateApi/GateTradeExecutor.java
@@ -262,7 +262,7 @@
     *
     * @param orderId 订单 ID,为 null 时跳过
     */
    public void cancelOrder(String orderId) {
    public void cancelOrder(String orderId,Consumer<String> onSuccess) {
        if (orderId == null) {
            return;
        }
@@ -270,6 +270,9 @@
            try {
                FuturesOrder cancelled = futuresApi.cancelFuturesOrder(SETTLE, orderId, null);
                log.info("[TradeExec] 订单已取消, id:{}, status:{}", orderId, cancelled.getStatus());
                if (onSuccess != null) {
                    onSuccess.accept(orderId);
                }
            } catch (Exception e) {
                log.warn("[TradeExec] 取消订单失败(可能已成交), id:{}", orderId);
            }