src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
@@ -3,7 +3,9 @@ import io.gate.gateapi.ApiClient; import io.gate.gateapi.ApiException; 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.FuturesInitialOrder; import io.gate.gateapi.models.FuturesOrder; @@ -72,6 +74,8 @@ private volatile BigDecimal lastKlinePrice; /** 服务器返回的累计已实现盈亏 */ private BigDecimal totalHistoryPnl = BigDecimal.ZERO; /** 用户 ID,用于 WebSocket 私有频道订阅 */ private Long userId; /** * 构造函数,初始化 Gate 期货 API 客户端。 @@ -111,6 +115,11 @@ */ public void init() { try { AccountApi accountApi = new AccountApi(apiClient); AccountDetail accountDetail = accountApi.getAccountDetail(); this.userId = accountDetail.getUserId(); log.info("[GateGrid] 用户ID: {}", userId); futuresApi.updateContractPositionLeverageCall( SETTLE, contract, leverage, marginMode, positionMode, null); log.info("[GateGrid] 已设置杠杆: {}x, 保证金模式: {}", leverage, marginMode); @@ -447,4 +456,8 @@ public BigDecimal getTotalHistoryPnl() { return totalHistoryPnl; } public Long getUserId() { return userId; } } src/main/java/com/xcong/excoin/modules/gateApi/GateKlineWebSocketClient.java
@@ -301,11 +301,16 @@ private void subscribePositionsChannels() { JSONObject subscribeMsg = new JSONObject(); long timeSec = System.currentTimeMillis() / 1000; subscribeMsg.put("id", timeSec * 1000000 + (System.currentTimeMillis() % 1000)); subscribeMsg.put("time", timeSec); subscribeMsg.put("channel", POSITIONS_CHANNEL); subscribeMsg.put("event", "subscribe"); String uid = gridTradeService != null && gridTradeService.getUserId() != null ? String.valueOf(gridTradeService.getUserId()) : ""; JSONArray payload = new JSONArray(); payload.add("user_id"); payload.add(uid); payload.add(GATE_CONTRACT); subscribeMsg.put("payload", payload); @@ -316,7 +321,7 @@ subscribeMsg.put("auth", auth); webSocketClient.send(subscribeMsg.toJSONString()); log.info("已发送仓位频道订阅请求(含认证),合约: {}", GATE_CONTRACT); log.info("已发送仓位频道订阅请求(含认证),userId:{}, 合约: {}", uid, GATE_CONTRACT); } /**