Administrator
2025-12-13 7686f46464a24caa6a50092931741f64612389f7
src/main/java/com/xcong/excoin/modules/okxNewPrice/celue/CaoZuoServiceImpl.java
@@ -114,8 +114,12 @@
        BigDecimal pos = PositionsWs.POSITIONSWSMAP.get("pos");
        if (BigDecimal.ZERO.compareTo( pos) >= 0) {
            log.error("持仓数量为零,进行初始化订单");
            WsMapBuild.saveStringToMap(InstrumentsWs.INSTRUMENTSWSMAP, CoinEnums.STATE.name(), OrderParamEnums.STATE_4.getValue());
            return OrderParamEnums.INIT.getValue();
            boolean flag = WsMapBuild.saveStringToMap(InstrumentsWs.INSTRUMENTSWSMAP, CoinEnums.STATE.name(), OrderParamEnums.STATE_4.getValue());
            if ( flag){
                return OrderParamEnums.INIT.getValue();
            }else{
                return null;
            }
        }
        // 判断是否保证金超标
        if (PositionsWs.POSITIONSWSMAP.get("imr") == null){
@@ -155,10 +159,16 @@
                DescBigDecimal kaiCang = queueKaiCang.peek();
                if (kaiCang != null && markPx.compareTo(kaiCang.getValue()) <= 0 && avgPx.compareTo(kaiCang.getValue()) >= 0) {
                    log.info("开始加仓...开仓队列价格大于当前价格{}>{}", kaiCang.getValue(), markPx);
                    WsMapBuild.saveStringToMap(OrderInfoWs.ORDERINFOWSMAP, "orderPrice",String.valueOf(markPx));
                    WsMapBuild.saveStringToMap(InstrumentsWs.INSTRUMENTSWSMAP, CoinEnums.STATE.name(), OrderParamEnums.STATE_4.getValue());
                    buyCntTimeEvent(avgPx,markPx);
                    return OrderParamEnums.BUY.getValue();
                    boolean orderPriceFlag = WsMapBuild.saveStringToMap(OrderInfoWs.ORDERINFOWSMAP, "orderPrice", String.valueOf(markPx));
                    boolean stateFlag = WsMapBuild.saveStringToMap(InstrumentsWs.INSTRUMENTSWSMAP, CoinEnums.STATE.name(), OrderParamEnums.STATE_4.getValue());
                    boolean buyCntTimeFlag = buyCntTimeEvent(avgPx, markPx);
                    if (orderPriceFlag && stateFlag && buyCntTimeFlag){
                        log.info("加仓参数准备成功......");
                        return OrderParamEnums.BUY.getValue();
                    }else{
                        log.error("加仓参数准备失败......");
                        return null;
                    }
                } else {
                    log.info("未触发加仓......,等待");
                    return OrderParamEnums.HOLDING.getValue();
@@ -215,12 +225,12 @@
        }
    }
    private void buyCntTimeEvent(BigDecimal avgPx, BigDecimal markPx){
    private boolean buyCntTimeEvent(BigDecimal avgPx, BigDecimal markPx){
        //判断当前价格和开仓价格直接间隔除以间距,取整,获取的数量是否大于等于0,如果大于0,则下单基础张数*倍数
        String buyCntTime = InstrumentsWs.INSTRUMENTSWSMAP.get(CoinEnums.BUY_CNT_TIME.name());
        BigDecimal subtract = avgPx.subtract(markPx);
        BigDecimal divide = subtract.divide(new BigDecimal(buyCntTime), 0, RoundingMode.DOWN).add(BigDecimal.ONE);
        WsMapBuild.saveStringToMap(TradeOrderWs.TRADEORDERWSMAP, "buyCntTime",String.valueOf(divide));
        return WsMapBuild.saveStringToMap(TradeOrderWs.TRADEORDERWSMAP, "buyCntTime",String.valueOf(divide));
    }
    /**