From 8bd17219604732859e0df2b5a2882a76f4915813 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Sat, 09 May 2026 17:54:25 +0800
Subject: [PATCH] refactor(gateApi): 优化 Gate API 调用和异常处理
---
src/main/java/com/xcong/excoin/modules/gateApi/Example.java | 10 +++++-----
src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java | 43 ++++++++++++++++++++++++++++---------------
2 files changed, 33 insertions(+), 20 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/gateApi/Example.java b/src/main/java/com/xcong/excoin/modules/gateApi/Example.java
index 30e7bad..5839cf6 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/Example.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/Example.java
@@ -10,6 +10,8 @@
import io.gate.gateapi.models.*;
import io.gate.gateapi.api.AccountApi;
+import java.io.IOException;
+
public class Example {
public static void main(String[] args) {
ApiClient defaultClient = Configuration.getDefaultApiClient();
@@ -21,7 +23,7 @@
try {
- String contract = "ETH_USDT";
+ String contract = "BTC_USDT";
String settle = "usdt";
//保证金模式 isolated/cross
String marginMode = "cross";
@@ -60,14 +62,12 @@
contract,
leverage,
marginMode,
- null);
+ null).execute();
} catch (GateApiException e) {
System.err.println(String.format("Gate api exception, label: %s, message: %s", e.getErrorLabel(), e.getMessage()));
e.printStackTrace();
- } catch (ApiException e) {
+ } catch (ApiException | IOException e) {
System.err.println("Exception when calling AccountApi#getAccountDetail");
- System.err.println("Status code: " + e.getCode());
- System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
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..fc47591 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,41 @@
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());
+ 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);
+ try {
+ futuresApi.updateDualModePositionLeverageCall(
+ SETTLE, config.getContract(), config.getLeverage(),
+ config.getMarginMode(), null).execute();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
log.info("[Gate] 杠杆: {}x {}", config.getLeverage(), config.getMarginMode());
} catch (GateApiException e) {
log.error("[Gate] 初始化失败, label:{}, msg:{}", e.getErrorLabel(), e.getMessage());
--
Gitblit v1.9.1