Administrator
2026-06-02 62583dd0423d5586dd4f720b52a34fb4cce6bca5
fix(gate): 修复网格交易数量计算和配置参数

- 修复多仓止损触发时订单数量计算逻辑,乘以基础数量配置
- 修复空仓止损触发时订单数量计算逻辑,乘以基础数量配置
- 修正多仓止损订单数量符号处理,使用负值表示平多单
- 修正空仓止损订单数量符号处理,使用正值表示平空单
- 更新网关API配置中的预期收益从2%调整为10%
- 更新网关API配置中的基础数量从1调整为30,订单数量从1调整为3
2 files modified
17 ■■■■ changed files
src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java 8 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/gateApi/GateWebSocketClientManager.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
@@ -1391,7 +1391,7 @@
        BigDecimal priceDiff = longEntryPrice.subtract(triggerPrice).abs();
        int entryQty = priceDiff.divide(config.getStep(), 0, RoundingMode.DOWN).intValue();
        entryQty = Math.max(1, entryQty);
        String size = String.valueOf(entryQty);
        String size = new BigDecimal(String.valueOf(entryQty)).multiply(new BigDecimal(config.getQuantity())).toString();
        log.info("[Gate] 多仓止损触发 gridId:{}, 在gridId:{}挂{}张多单, 均价:{}, 价差:{}, 步长:{}",
                gridId, newEntryGridId, entryQty, longEntryPrice, priceDiff, config.getStep());
        newEntryGrid.getLongTraderParam().setQuantity(size);
@@ -1431,7 +1431,7 @@
        BigDecimal priceDiff = shortEntryPrice.subtract(triggerPrice).abs();
        int entryQty = priceDiff.divide(config.getStep(), 0, RoundingMode.DOWN).intValue();
        entryQty = Math.max(1, entryQty);
        String size = String.valueOf(entryQty);
        String size = new BigDecimal(String.valueOf(entryQty)).multiply(new BigDecimal(config.getQuantity())).toString();
        log.info("[Gate] 空仓止损触发 gridId:{}, 在gridId:{}挂{}张空单, 均价:{}, 价差:{}, 步长:{}",
                gridId, newEntryGridId, entryQty, shortEntryPrice, priceDiff, config.getStep());
        newEntryGrid.getShortTraderParam().setQuantity(size);
@@ -1462,7 +1462,7 @@
                    triggerPrice,
                    FuturesPriceTrigger.RuleEnum.NUMBER_2,
                    ORDER_TYPE_CLOSE_LONG,
                    "-1",
                    negate(config.getQuantity()),
                    profitId -> {
                        elem.setLongStopLossOrderId(profitId);
                        GridElement.refreshIndices();
@@ -1495,7 +1495,7 @@
                    triggerPrice,
                    FuturesPriceTrigger.RuleEnum.NUMBER_1,
                    ORDER_TYPE_CLOSE_SHORT,
                    "1",
                    config.getQuantity(),
                    profitId -> {
                        elem.setShortStopLossOrderId(profitId);
                        GridElement.refreshIndices();
src/main/java/com/xcong/excoin/modules/gateApi/GateWebSocketClientManager.java
@@ -60,16 +60,17 @@
        try {
            //实盘
            config = GateConfig.builder()
                    .apiKey("a2338398e00b7935104520e16be96918")
                    .apiSecret("9111d897f2346d5217619f2da76536632715fef4d7eb304c6c61e869a2a74e98")
                    .apiKey("08d6108fc29378fe64d6f0e89745b3fb")
                    .apiSecret("4d16e40117477a2344f6fd5872c5b075dc9664a599e65422d3e6791ff64379f1")
                    .contract("ETH_USDT")
                    .leverage("100")
                    .marginMode("CROSS")
                    .positionMode("dual")
                    .gridRate(new BigDecimal("0.0025"))
                    .expectedProfit(new BigDecimal("2"))
                    .expectedProfit(new BigDecimal("10"))
                    .maxLoss(new BigDecimal("15"))
                    .quantity("1")
                    .baseQuantity("30")
                    .quantity("3")
                    .priceScale(2)
                    .contractMultiplier(new BigDecimal("0.01"))
                    .unrealizedPnlPriceMode(GateConfig.PnLPriceMode.LAST_PRICE)