Administrator
3 days ago 8bd17219604732859e0df2b5a2882a76f4915813
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();
            try {
            futuresApi.updateDualModePositionLeverageCall(
                    SETTLE, config.getContract(), config.getLeverage(),
                    config.getMarginMode(), null);
                        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());