fix(okxNewPrice): 更新订单成交后的持仓计算逻辑
- 在 OrderInfoWs 中添加 BigDecimal 类型支持
- 根据订单方向更新持仓数量,卖出时设为零,买入时设为成交数量
- 移除 TradeOrderWs 中重复的持仓更新逻辑
| | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.java_websocket.client.WebSocketClient; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Map; |
| | | import java.util.concurrent.ConcurrentHashMap; |
| | | |
| | |
| | | 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)){ |
| | |
| | | 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) { |