fix(okxNewPrice): 优化持仓订单价格存储逻辑
- 在盈亏判断条件中增加 Redis 缓存设置,确保平仓价值被正确记录
- 调整买入数量获取逻辑,优先从持仓频道读取数据,兜底使用合约面值
- 提升交易决策过程中关键参数的准确性和实时性
| | |
| | | if (realizedPnlValue.compareTo(BigDecimal.ZERO) <= 0) { |
| | | if (uplValue.compareTo(realizedPnlValue) < 0) { |
| | | log.info("当前未实现盈亏:{}没有大于已实现收益>{},等待中", uplValue, realizedPnlValue); |
| | | redisUtils.set(positionsOrderPriceKey, String.valueOf(pingCang.getValue()), 0); |
| | | return OrderParamEnums.HOLDING.getValue(); |
| | | }else if (uplValue.compareTo(realizedPnlValue) > 0 && uplValue.compareTo(imrValue) >= 0) { |
| | | log.info("当前未实现盈亏:{}大于预计收益>{},赚钱咯", uplValue, imrValue); |
| | |
| | | return OrderParamEnums.SELL.getValue(); |
| | | }else{ |
| | | log.info("当前未实现盈亏:{}没有大于预计收益>{},钱在路上了", uplValue, imrValue); |
| | | redisUtils.set(positionsOrderPriceKey, String.valueOf(pingCang.getValue()), 0); |
| | | return OrderParamEnums.HOLDING.getValue(); |
| | | } |
| | | }else { |
| | |
| | | return OrderParamEnums.SELL.getValue(); |
| | | }else{ |
| | | log.info("当前未实现盈亏:{}没有大于预计收益>{},钱在路上了", uplValue, imrValue); |
| | | redisUtils.set(positionsOrderPriceKey, String.valueOf(pingCang.getValue()), 0); |
| | | return OrderParamEnums.HOLDING.getValue(); |
| | | } |
| | | } |
| | |
| | | return; |
| | | } else if (OrderParamEnums.INIT.getValue().equals(side)) { |
| | | side = OrderParamEnums.BUY.getValue(); |
| | | String buyCntNormal = getRedisValue(redisUtils, PositionsWs.POSITIONSWS_CHANNEL, ":buyCnt"); |
| | | if (StrUtil.isNotBlank(buyCntNormal)) { |
| | | buyCnt = buyCntNormal; |
| | | }else{ |
| | | buyCnt = getRedisValue(redisUtils, InstrumentsWs.INSTRUMENTSWS_CHANNEL, ":ctVal"); |
| | | } |
| | | } else if (OrderParamEnums.OUT.getValue().equals(side)) { |
| | | side = OrderParamEnums.SELL.getValue(); |
| | | buyCnt = getRedisValue(redisUtils, PositionsWs.POSITIONSWS_CHANNEL, ":pos"); |