From 782bebb2e734e1782e875fc2f45cbef71cb07712 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Fri, 05 Jun 2026 11:56:13 +0800
Subject: [PATCH] fix(okxNewPrice): 解决网格交易价格精度计算问题
---
src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxGridTradeService.java | 8 ++++++--
1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxGridTradeService.java b/src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxGridTradeService.java
index d0bc3b9..b8a94ce 100644
--- a/src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxGridTradeService.java
+++ b/src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxGridTradeService.java
@@ -563,7 +563,9 @@
BigDecimal triggerPrice = newEntryGrid.getGridPrice();
BigDecimal priceDiff = longEntryPrice.subtract(triggerPrice).abs();
- int count = priceDiff.divide(config.getStep(), 0, RoundingMode.DOWN).intValue();
+ // 精度补偿:步长被setScale截断,priceDiff/step可能产生1.99998→Down截断为1的问题
+ BigDecimal epsilon = new BigDecimal("0.00000001");
+ int count = priceDiff.add(epsilon).divide(config.getStep(), 0, RoundingMode.DOWN).intValue();
count = Math.max(1, count);
int entryQty = count * Integer.parseInt(config.getQuantity());
String size = String.valueOf(entryQty);
@@ -605,7 +607,9 @@
BigDecimal triggerPrice = newEntryGrid.getGridPrice();
BigDecimal priceDiff = shortEntryPrice.subtract(triggerPrice).abs();
- int count = priceDiff.divide(config.getStep(), 0, RoundingMode.DOWN).intValue();
+ // 精度补偿:步长被setScale截断,priceDiff/step可能产生1.99998→Down截断为1的问题
+ BigDecimal epsilon = new BigDecimal("0.00000001");
+ int count = priceDiff.add(epsilon).divide(config.getStep(), 0, RoundingMode.DOWN).intValue();
count = Math.max(1, count);
int entryQty = count * Integer.parseInt(config.getQuantity());
String size = String.valueOf(entryQty);
--
Gitblit v1.9.1