Administrator
2025-12-13 31db00c689b04ff32b2abe3c729b693626291acb
src/main/java/com/xcong/excoin/modules/okxNewPrice/celue/CaoZuoServiceImpl.java
@@ -183,8 +183,8 @@
                AscBigDecimal pingCang = queuePingCang.peek();
                if (pingCang != null && markPx.compareTo(pingCang.getValue()) >= 0 && avgPx.compareTo(pingCang.getValue()) < 0) {
                    log.info("开始减仓...平仓队列价格小于当前价格{}<={}", pingCang.getValue(), markPx);
                    WsMapBuild.saveStringToMap(OrderInfoWs.ORDERINFOWSMAP, "orderPrice",String.valueOf(markPx));
                    boolean orderPriceFlag = WsMapBuild.saveStringToMap(OrderInfoWs.ORDERINFOWSMAP, "orderPrice", String.valueOf(markPx));
                    if (orderPriceFlag){
                    // 判断当前是否盈利
                    BigDecimal uplValue = PositionsWs.POSITIONSWSMAP.get("upl");
                    BigDecimal imr = PositionsWs.POSITIONSWSMAP.get("imr");
@@ -196,8 +196,14 @@
                        BigDecimal realizedPnlValueZheng = realizedPnlValue.multiply(new BigDecimal("-1"));
                        if (uplValue.compareTo(realizedPnlValue) > 0 && uplValue.compareTo(imrValue.add(realizedPnlValueZheng))  >= 0) {
                            log.info("当前未实现盈亏:{}大于预计收益>{},赚钱咯", uplValue, imrValue);
                            WsMapBuild.saveStringToMap(InstrumentsWs.INSTRUMENTSWSMAP, CoinEnums.STATE.name(), OrderParamEnums.STATE_4.getValue());
                                boolean stateFlag = WsMapBuild.saveStringToMap(InstrumentsWs.INSTRUMENTSWSMAP, CoinEnums.STATE.name(), OrderParamEnums.STATE_4.getValue());
                                if (stateFlag){
                                    log.info("减仓参数准备成功......");
                            return OrderParamEnums.SELL.getValue();
                                }else{
                                    log.error("减仓参数准备失败......");
                                    return null;
                                }
                        }else{
                            log.info("当前未实现盈亏:{}没有大于预计收益>{},钱在路上了", uplValue, imrValue);
                            return OrderParamEnums.HOLDING.getValue();
@@ -205,12 +211,22 @@
                    }else {
                        if (uplValue.compareTo(imrValue)  >= 0) {
                            log.info("当前未实现盈亏:{}大于预计收益>{},赚钱咯", uplValue, imrValue);
                            WsMapBuild.saveStringToMap(InstrumentsWs.INSTRUMENTSWSMAP, CoinEnums.STATE.name(), OrderParamEnums.STATE_4.getValue());
                                boolean stateFlag = WsMapBuild.saveStringToMap(InstrumentsWs.INSTRUMENTSWSMAP, CoinEnums.STATE.name(), OrderParamEnums.STATE_4.getValue());
                                if (stateFlag){
                                    log.info("减仓参数准备成功......");
                            return OrderParamEnums.SELL.getValue();
                                }else{
                                    log.error("减仓参数准备失败......");
                                    return null;
                                }
                        }else{
                            log.info("当前未实现盈亏:{}没有大于预计收益>{},钱在路上了", uplValue, imrValue);
                            return OrderParamEnums.HOLDING.getValue();
                        }
                        }
                    }else{
                        log.error("减仓参数准备失败......");
                        return null;
                    }
                } else {
                    log.info("未触发减仓......,等待");
@@ -218,10 +234,10 @@
            } else {
                log.info("价格波动较小......,等待");
            }
            return OrderParamEnums.HOLDING.getValue();
            return null;
        } catch (NumberFormatException e) {
            log.error("解析价格失败,请检查Redis中的值是否合法", e);
            return OrderParamEnums.HOLDING.getValue();
            return null;
        }
    }