From 20b12242108398ad04903e620c94262d4b228ed0 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Sat, 09 May 2026 18:16:15 +0800
Subject: [PATCH] refactor(gateApi): 优化期货交易配置和日志记录

---
 src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java |   46 +++++++++++++++++++++++++++++-----------------
 1 files changed, 29 insertions(+), 17 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 f40030d..d9c2310 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
@@ -5,13 +5,10 @@
 import io.gate.gateapi.GateApiException;
 import io.gate.gateapi.api.AccountApi;
 import io.gate.gateapi.api.FuturesApi;
-import io.gate.gateapi.models.AccountDetail;
-import io.gate.gateapi.models.FuturesAccount;
-import io.gate.gateapi.models.FuturesOrder;
-import io.gate.gateapi.models.FuturesPriceTrigger;
-import io.gate.gateapi.models.Position;
+import io.gate.gateapi.models.*;
 import lombok.extern.slf4j.Slf4j;
 
+import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.ArrayList;
@@ -155,25 +152,40 @@
             this.initialPrincipal = new BigDecimal(account.getTotal());
             log.info("[Gate] 初始本金: {} USDT", initialPrincipal);
 
+            futuresApi.cancelPriceTriggeredOrderList(SETTLE, config.getContract());
+            log.info("[Gate] 旧条件单已清除");
+            closeExistingPositions();
+
             //设置持仓模式为双向持仓
             Boolean inDualMode = account.getInDualMode();
             if (!inDualMode) {
-                futuresApi.setDualModeCall(SETTLE,true,null);
+                try {
+                    futuresApi.setDualModeCall(SETTLE,true,null).execute();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
             }
 
-            if (!config.getPositionMode().equals(account.getPositionMode())) {
-                futuresApi.setPositionMode(SETTLE, config.getPositionMode());
+            try {
+                futuresApi.updateDualModePositionLeverageCall(
+                        SETTLE, config.getContract(), config.getLeverage(),
+                        null, null).execute();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+
+            if (!config.getMarginMode().equals(account.getMarginMode())) {
+
+                UpdateDualCompPositionCrossModeRequest updateDualCompPositionCrossModeRequest = new UpdateDualCompPositionCrossModeRequest();
+                updateDualCompPositionCrossModeRequest.setMode(config.getMarginMode());
+                updateDualCompPositionCrossModeRequest.setContract(config.getContract());
+                try {
+                    futuresApi.updateDualCompPositionCrossModeCall(SETTLE, updateDualCompPositionCrossModeRequest, null).execute();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
             }
             log.info("[Gate] 持仓模式: {} 余额: {}", config.getPositionMode(), account.getAvailable());
-
-            futuresApi.cancelPriceTriggeredOrderList(SETTLE, config.getContract());
-            log.info("[Gate] 旧条件单已清除");
-
-            closeExistingPositions();
-
-            futuresApi.updateDualModePositionLeverageCall(
-                    SETTLE, config.getContract(), config.getLeverage(),
-                    config.getMarginMode(), null);
             log.info("[Gate] 杠杆: {}x {}", config.getLeverage(), config.getMarginMode());
         } catch (GateApiException e) {
             log.error("[Gate] 初始化失败, label:{}, msg:{}", e.getErrorLabel(), e.getMessage());

--
Gitblit v1.9.1