Administrator
2025-12-12 3cd5191a2840d770a166c937da1b3c8493285c47
src/main/java/com/xcong/excoin/modules/okxNewPrice/celue/CaoZuoServiceImpl.java
@@ -39,8 +39,8 @@
    @Override
    public String caoZuo() {
        log.info("开始执行操作CaoZuoServiceImpl......");
        BigDecimal cashBal = AccountWs.ACCOUNTWSMAP.get("cashBal");
        BigDecimal availBal = AccountWs.ACCOUNTWSMAP.get("availBal");
        BigDecimal cashBal = WsMapBuild.parseBigDecimalSafe(AccountWs.ACCOUNTWSMAP.get("cashBal"));
        BigDecimal availBal = WsMapBuild.parseBigDecimalSafe(AccountWs.ACCOUNTWSMAP.get("availBal"));
        // 判断账户余额是否充足
        if (cashBal.compareTo(BigDecimal.ZERO) <= 0){
@@ -88,26 +88,28 @@
        log.info("预期抗仓金额: {}", kangYaPercent);
        BigDecimal  kangYaAmount = cashBal.multiply(new BigDecimal(kangYaPercent));
        // 账户预期亏损金额比这个还小时,立即止损
        if (realKuiSunAmount.compareTo(zhiSunAmount) > 0){
            log.error("账户冷静止损......");
            WsMapBuild.saveStringToMap(InstrumentsWs.INSTRUMENTSWSMAP, CoinEnums.OUT.name(),  OrderParamEnums.OUT_YES.getValue());
            return OrderParamEnums.OUT.getValue();
        }
        // 判断抗压
        if (realKuiSunAmount.compareTo(kangYaAmount) > 0 && realKuiSunAmount.compareTo(zhiSunAmount) <= 0){
            log.error("账户紧张扛仓......");
            return OrderParamEnums.HOLDING.getValue();
        if (realKuiSunAmount.compareTo(BigDecimal.ZERO) > 0){
            // 账户预期亏损金额比这个还小时,立即止损
            if (realKuiSunAmount.compareTo(zhiSunAmount) > 0){
                log.error("账户冷静止损......");
                WsMapBuild.saveStringToMap(InstrumentsWs.INSTRUMENTSWSMAP, CoinEnums.OUT.name(),  OrderParamEnums.OUT_YES.getValue());
                return OrderParamEnums.OUT.getValue();
            }
            // 判断抗压
            if (realKuiSunAmount.compareTo(kangYaAmount) > 0 && realKuiSunAmount.compareTo(zhiSunAmount) <= 0){
                log.error("账户紧张扛仓......");
                return OrderParamEnums.HOLDING.getValue();
            }
        }
        BigDecimal ordFroz = 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 = AccountWs.ACCOUNTWSMAP.get(CoinEnums.TOTAL_ORDER_USDT.name());
        if (ordFroz.compareTo(totalOrderUsdt) >= 0){
        BigDecimal totalOrderUsdt = WsMapBuild.parseBigDecimalSafe(CoinEnums.TOTAL_ORDER_USDT.name());
        if (ordFrozImr.compareTo(totalOrderUsdt) >= 0){
            log.error("已满仓......");
            return OrderParamEnums.HOLDING.getValue();
        }