| | |
| | | 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); |
| | |
| | | |
| | | 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) { |
| | |
| | | } |
| | | |
| | | 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) { |
| | |
| | | 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); |