Administrator
2025-12-09 31f509145fea44380bf314f7740356537c68ee3f
src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/PositionsWs.java
@@ -106,8 +106,9 @@
            String mgnRatio = safeGetString(posData, "mgnRatio");
            String markPx = safeGetString(posData, "markPx");
            String bePx = safeGetString(posData, "bePx");
            String realizedPnl = safeGetString(posData, "realizedPnl");
            boolean setResult = saveToRedis(redisUtils, avgPx, pos, upl, imr, mgnRatio, markPx, bePx);
            boolean setResult = saveToRedis(redisUtils, avgPx, pos, upl, imr, mgnRatio, markPx, bePx,realizedPnl);
            if (setResult) {
                calculateAndSaveBuyCount(redisUtils);
@@ -121,14 +122,15 @@
    private static boolean saveToRedis(RedisUtils redisUtils,
                                       String avgPx, String pos, String upl,
                                       String imr, String mgnRatio, String markPx, String bePx) {
                                       String imr, String mgnRatio, String markPx, String bePx, String realizedPnl) {
        return redisUtils.set(REDIS_KEY_PREFIX + ":avgPx", avgPx, 0)
                && redisUtils.set(REDIS_KEY_PREFIX + ":pos", pos, 0)
                && redisUtils.set(REDIS_KEY_PREFIX + ":upl", upl, 0)
                && redisUtils.set(REDIS_KEY_PREFIX + ":imr", imr, 0)
                && redisUtils.set(REDIS_KEY_PREFIX + ":mgnRatio", mgnRatio, 0)
                && redisUtils.set(REDIS_KEY_PREFIX + ":markPx", markPx, 0)
                && redisUtils.set(REDIS_KEY_PREFIX + ":bePx", bePx, 0);
                && redisUtils.set(REDIS_KEY_PREFIX + ":bePx", bePx, 0)
                && redisUtils.set(REDIS_KEY_PREFIX + ":realizedPnl", realizedPnl, 0);
    }
    private static void calculateAndSaveBuyCount(RedisUtils redisUtils) {
@@ -152,7 +154,7 @@
    }
    private static String safeGetString(JSONObject obj, String key) {
        return Optional.ofNullable(obj.getString(key)).orElse("");
        return Optional.ofNullable(obj.getString(key)).orElse("0");
    }
    private static BigDecimal parseBigDecimal(String value, String defaultValue) {
@@ -185,7 +187,7 @@
            leverage.compareTo(BigDecimal.ZERO) <= 0 ||
            faceValue.compareTo(BigDecimal.ZERO) <= 0 ||
            markPrice.compareTo(BigDecimal.ZERO) <= 0) {
            throw new IllegalArgumentException("所有参数必须大于零");
            return BigDecimal.ZERO;
        }
        BigDecimal divisor = markPrice.divide(leverage, 10, BigDecimal.ROUND_DOWN);