Administrator
2025-12-13 a7d61fcdf24ab8e459f53761b632072df00251b6
fix(okxNewPrice): 更新订单成交后的持仓计算逻辑

- 在 OrderInfoWs 中添加 BigDecimal 类型支持
- 根据订单方向更新持仓数量,卖出时设为零,买入时设为成交数量
- 移除 TradeOrderWs 中重复的持仓更新逻辑
2 files modified
14 ■■■■■ changed files
src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/OrderInfoWs.java 8 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/TradeOrderWs.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/OrderInfoWs.java
@@ -12,6 +12,7 @@
import lombok.extern.slf4j.Slf4j;
import org.java_websocket.client.WebSocketClient;
import java.math.BigDecimal;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -99,6 +100,13 @@
                        WsMapBuild.saveStringToMap(ORDERINFOWSMAP, "orderPrice",avgPx);
                    }
                    WsMapBuild.saveStringToMap(TradeOrderWs.TRADEORDERWSMAP, "state", CoinEnums.ORDER_LIVE.getCode());
                    if (OrderParamEnums.SELL.getValue().equals(side)){
                        WsMapBuild.saveBigDecimalToMap(PositionsWs.POSITIONSWSMAP, "pos", BigDecimal.ZERO);
                    }
                    if (OrderParamEnums.BUY.getValue().equals(side)){
                        WsMapBuild.saveBigDecimalToMap(PositionsWs.POSITIONSWSMAP, "pos", new BigDecimal(accFillSz));
                    }
                    String outStr = InstrumentsWs.INSTRUMENTSWSMAP.get(CoinEnums.OUT.name());
                    if (OrderParamEnums.OUT_YES.getValue().equals(outStr)){
src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/TradeOrderWs.java
@@ -86,13 +86,7 @@
            WsMapBuild.saveStringToMap(TRADEORDERWSMAP, "clOrdId", clOrdId);
            WsMapBuild.saveStringToMap(TRADEORDERWSMAP, "state", CoinEnums.ORDER_FILLED.getCode());
            if (OrderParamEnums.SELL.getValue().equals(side)){
                WsMapBuild.saveBigDecimalToMap(PositionsWs.POSITIONSWSMAP, "pos", BigDecimal.ZERO);
            }
            if (OrderParamEnums.BUY.getValue().equals(side)){
                WsMapBuild.saveBigDecimalToMap(PositionsWs.POSITIONSWSMAP, "pos", new BigDecimal(buyCnt));
            }
        } catch (Exception e) {