Administrator
2025-12-17 fa7d25e98db0e6cb763d304b95e6a943f43ac240
fix(okxNewPrice): 修复持仓为零时返回值并增加日志输出

- 修改持仓为零时的返回值为 INIT 枚举值
- 在加仓逻辑中增加关键计算步骤的日志输出
- 提高策略执行过程的可观测性与调试能力
1 files modified
8 ■■■■ changed files
src/main/java/com/xcong/excoin/modules/okxNewPrice/celue/CaoZuoServiceImpl.java 8 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/okxNewPrice/celue/CaoZuoServiceImpl.java
@@ -130,7 +130,7 @@
        BigDecimal pos = PositionsWs.getAccountMap(positionAccountName).get("pos");
        if (BigDecimal.ZERO.compareTo( pos) >= 0) {
            log.error("持仓数量为零,进行初始化订单");
            return null;
            return OrderParamEnums.INIT.getValue();
        }
        // 判断是否保证金超标
        if (PositionsWs.getAccountMap(positionAccountName).get("imr") == null){
@@ -370,8 +370,11 @@
    private boolean buyCntTimeLongEvent(String accountName, BigDecimal avgPx, BigDecimal markPx){
        //判断当前价格和开仓价格直接间隔除以间距,取整,获取的数量是否大于等于0,如果大于0,则下单基础张数*倍数
        String buyCntTime = InstrumentsWs.getAccountMap(accountName).get(CoinEnums.BUY_CNT_TIME.name());
        log.info("倍数次数间隔{}", buyCntTime);
        BigDecimal subtract = avgPx.subtract(markPx);
        log.info("倍数价格差距{}", subtract);
        BigDecimal divide = subtract.divide(new BigDecimal(buyCntTime), 0, RoundingMode.DOWN).add(BigDecimal.ONE);
        log.info("倍数次数{}", divide);
        if (divide.compareTo(BigDecimal.ZERO) <= 0){
            log.warn("加仓次数间隔时间小于0,不加仓");
            return false;
@@ -382,8 +385,11 @@
    private boolean buyCntTimeShortEvent(String accountName, BigDecimal avgPx, BigDecimal markPx){
        //判断当前价格和开仓价格直接间隔除以间距,取整,获取的数量是否大于等于0,如果大于0,则下单基础张数*倍数
        String buyCntTime = InstrumentsWs.getAccountMap(accountName).get(CoinEnums.BUY_CNT_TIME.name());
        log.info("倍数次数间隔{}", buyCntTime);
        BigDecimal subtract = markPx.subtract(avgPx);
        log.info("倍数价格差距{}", subtract);
        BigDecimal divide = subtract.divide(new BigDecimal(buyCntTime), 0, RoundingMode.DOWN).add(BigDecimal.ONE);
        log.info("倍数次数{}", divide);
        if (divide.compareTo(BigDecimal.ZERO) <= 0){
            log.warn("加仓次数间隔时间小于0,不加仓");
            return false;