From e70230b72e61f971b858ea3b8d4e2d4e88fbf501 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Wed, 30 Sep 2026 22:09:56 +0800
Subject: [PATCH] refactor(gateApi): 将基础仓位止盈张数字段类型从整型改为大十进制

---
 src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java |   14 +++++++-------
 1 files changed, 7 insertions(+), 7 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 481b041..e2f4e88 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
@@ -3053,9 +3053,9 @@
      * @param entryGridId 入场网格 ID
      */
     private void placeBaseTakeProfit(int posSize, boolean isLong, int entryGridId) {
-        int perGrid = config.getBaseTakeProfitPerGrid();
+        BigDecimal perGrid = config.getBaseTakeProfitPerGrid();
         int gridCount = config.getBaseTakeProfitGridCount();
-        if (perGrid <= 0 || gridCount <= 0) {
+        if (perGrid == null || perGrid.compareTo(BigDecimal.ZERO) <= 0 || gridCount <= 0) {
             return;
         }
         int baseQty = Integer.parseInt(config.getBaseQuantity());
@@ -3078,10 +3078,10 @@
         // 分配范围到止损位的前一格截止(与分散止盈一致)
         int endId = endElem.getId() - dir;
 
-        int remaining = maxQty;
+        BigDecimal remaining = BigDecimal.valueOf(maxQty);
         int placed = 0;
         int id = startId;
-        while (placed < gridCount && remaining > 0) {
+        while (placed < gridCount && remaining.compareTo(BigDecimal.ZERO) > 0) {
             if (isLong ? id > endId : id < endId) {
                 break;
             }
@@ -3089,11 +3089,11 @@
             if (elem == null) {
                 break;
             }
-            int qty = Math.min(perGrid, remaining);
+            BigDecimal qty = perGrid.min(remaining);
             final GridElement fe = elem;
             final int gid = id;
             final BigDecimal triggerPrice = elem.getGridPrice();
-            final String size = isLong ? negate(String.valueOf(qty)) : String.valueOf(qty);
+            final String size = isLong ? negate(qty.toPlainString()) : qty.toPlainString();
             final String orderType = isLong ? ORDER_TYPE_CLOSE_LONG : ORDER_TYPE_CLOSE_SHORT;
             final FuturesPriceTrigger.RuleEnum rule = isLong ? FuturesPriceTrigger.RuleEnum.NUMBER_1
                     : FuturesPriceTrigger.RuleEnum.NUMBER_2;
@@ -3108,7 +3108,7 @@
                                 isLong ? "多仓" : "空仓", gid, triggerPrice, size, profitId);
                     }
             );
-            remaining -= qty;
+            remaining = remaining.subtract(qty);
             placed++;
             id += dir;
         }

--
Gitblit v1.9.1