Administrator
4 days ago 04063bcb7b9e9d8e0242c1313f54ccc1b71f0b6e
src/main/java/com/xcong/excoin/modules/okxApi/wsHandler/handler/MarkPriceOkxChannelHandler.java
@@ -2,7 +2,7 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xcong.excoin.modules.okxApi.OkxGridTradeService;
import com.xcong.excoin.modules.okxApi.IOkxStrategy;
import com.xcong.excoin.modules.okxApi.wsHandler.OkxChannelHandler;
import lombok.extern.slf4j.Slf4j;
import org.java_websocket.client.WebSocketClient;
@@ -19,8 +19,8 @@
 *
 * <h3>双回调</h3>
 * <ul>
 *   <li>{@link OkxGridTradeService#onKline(BigDecimal)} — 驱动网格策略(处理开仓/止盈逻辑)</li>
 *   <li>{@link OkxGridTradeService#setMarkPrice(BigDecimal)} — PnLPriceMode.MARK_PRICE 计算未实现盈亏</li>
 *   <li>{@link IOkxStrategy#onKline(BigDecimal)} — 驱动策略(处理开仓/止盈逻辑)</li>
 *   <li>{@link IOkxStrategy#setMarkPrice(BigDecimal)} — PnLPriceMode.MARK_PRICE 计算未实现盈亏</li>
 * </ul>
 *
 * <h3>订阅格式</h3>
@@ -58,8 +58,8 @@
    /** 交易对标识,如 "ETH-USDT-SWAP" */
    private final String instId;
    /** 网格交易服务,接收标记价格回调 */
    private final OkxGridTradeService gridTradeService;
    /** 策略服务实例,接收标记价格回调 */
    private final IOkxStrategy strategy;
    /** 订阅确认状态 */
    private volatile boolean subscribed = false;
@@ -68,11 +68,11 @@
     * 构造标记价格频道处理器。
     *
     * @param instId           交易对标识(如 "ETH-USDT-SWAP")
     * @param gridTradeService OKX 网格交易策略服务实例
     * @param strategy OKX 交易策略服务实例
     */
    public MarkPriceOkxChannelHandler(String instId, OkxGridTradeService gridTradeService) {
    public MarkPriceOkxChannelHandler(String instId, IOkxStrategy strategy) {
        this.instId = instId;
        this.gridTradeService = gridTradeService;
        this.strategy = strategy;
    }
    /**
@@ -164,9 +164,9 @@
            }
            BigDecimal markPrice = new BigDecimal(markPxStr);
            if (gridTradeService != null) {
                gridTradeService.setMarkPrice(markPrice);
                gridTradeService.onKline(markPrice);
            if (strategy != null) {
                strategy.setMarkPrice(markPrice);
                strategy.onKline(markPrice);
            }
        } catch (Exception e) {
            log.error("[OKX-WS] 处理 mark-price 数据失败", e);