Administrator
2025-12-12 3cd5191a2840d770a166c937da1b3c8493285c47
fix(okx): 更新账户占用保证金字段为imr并调整相关逻辑

- 将 AccountWs 中的 ordFroz 字段替换为 imr
- 修改 CaoZuoServiceImpl 中对占用保证金的判断逻辑
- 更新日志输出中的字段描述
- 调整满仓判断条件中的字段引用
2 files modified
14 ■■■■ changed files
src/main/java/com/xcong/excoin/modules/okxNewPrice/celue/CaoZuoServiceImpl.java 6 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/AccountWs.java 8 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/okxNewPrice/celue/CaoZuoServiceImpl.java
@@ -102,14 +102,14 @@
            }
        }
        BigDecimal ordFroz = WsMapBuild.parseBigDecimalSafe(AccountWs.ACCOUNTWSMAP.get("ordFroz"));
        if (BigDecimal.ZERO.compareTo( ordFroz) >= 0) {
        BigDecimal ordFrozImr = WsMapBuild.parseBigDecimalSafe(AccountWs.ACCOUNTWSMAP.get("imr"));
        if (BigDecimal.ZERO.compareTo( ordFrozImr) >= 0) {
            log.error("占用保证金为零,进行初始化订单");
            return OrderParamEnums.INIT.getValue();
        }
        // 判断是否保证金超标
        BigDecimal totalOrderUsdt = WsMapBuild.parseBigDecimalSafe(CoinEnums.TOTAL_ORDER_USDT.name());
        if (ordFroz.compareTo(totalOrderUsdt) >= 0){
        if (ordFrozImr.compareTo(totalOrderUsdt) >= 0){
            log.error("已满仓......");
            return OrderParamEnums.HOLDING.getValue();
        }
src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/AccountWs.java
@@ -85,7 +85,7 @@
                        String availBalKey = "availBal";
                        String cashBalKey = "cashBal";
                        String eqKey = "eq";
                        String ordFrozKey = "ordFroz";
                        String imrKey = "imr";
                        String ccy = WsMapBuild.parseStringSafe( detail.getString(ccyKey));
                        WsMapBuild.saveStringToMap(ACCOUNTWSMAP, ccyKey, ccy);
@@ -99,8 +99,8 @@
                        String eq = WsMapBuild.parseStringSafe(detail.getString(eqKey));
                        WsMapBuild.saveStringToMap(ACCOUNTWSMAP, eqKey, eq);
                        String ordFroz = WsMapBuild.parseStringSafe(detail.getString(ordFrozKey));
                        WsMapBuild.saveStringToMap(ACCOUNTWSMAP, ordFrozKey, ordFroz);
                        String imr = WsMapBuild.parseStringSafe(detail.getString(imrKey));
                        WsMapBuild.saveStringToMap(ACCOUNTWSMAP, imrKey, imr);
                        BigDecimal cashBalDecimal = WsMapBuild.parseBigDecimalSafe(cashBal);
                        if (cashBalDecimal.compareTo(BigDecimal.ZERO) == 0) {
@@ -116,7 +116,7 @@
                        log.info(
                                "账户详情-币种: {}, 可用余额: {}, 现金余额: {}, 余额: {}, 占用保证金: {}, 下单总保证金: {}",
                                ccy, availBal, cashBal, eq, ordFroz, totalOrderUsdt
                                ccy, availBal, cashBal, eq, imr, totalOrderUsdt
                        );
                    }
                } catch (Exception innerEx) {