From 14c1946eae86a86f8d1edee6cf3bdaf7572fc966 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Thu, 30 Oct 2025 19:44:38 +0800
Subject: [PATCH] 1
---
trading-order-admin/src/main/java/com/yami/trading/admin/controller/data/AdminKlineController.java | 2
trading-order-admin/src/main/java/com/yami/trading/admin/task/KineTask.java | 65 +++++++++++++
trading-order-admin/src/main/java/com/yami/trading/api/controller/RealtimeController.java | 16 +-
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiMoneyLogController.java | 4
trading-order-service/src/main/java/com/yami/trading/service/etf/KlineConfigService.java | 2
trading-order-service/src/main/java/com/yami/trading/service/future/FuturesParaService.java | 2
trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/XueQiuDataServiceImpl.java | 12 +-
trading-order-bean/src/main/java/com/yami/trading/bean/data/domain/Realtime.java | 4
trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderService.java | 10 +-
trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/HobiDataServiceImpl.java | 12 +-
trading-order-admin/src/main/java/com/yami/trading/admin/facade/MarketQuotationsFacade.java | 2
trading-order-service/src/main/java/com/yami/trading/service/contract/ContractApplyOrderService.java | 11 ++
trading-order-huobi/src/main/java/com.yami.trading.huobi/data/job/AbstractGetDataJob.java | 8
trading-order-admin/src/main/java/com/yami/trading/api/controller/KlineController.java | 8
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiAssetsController.java | 2
trading-order-service/src/main/java/com/yami/trading/service/impl/UserServiceImpl.java | 6
trading-order-bean/src/main/java/com/yami/trading/bean/contract/dto/ContractOrderDTO.java | 10 +-
trading-order-service/src/main/java/com/yami/trading/service/impl/StrongLevelCalculationServiceImpl.java | 8
trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/XinLangDataServiceImpl.java | 10 +-
trading-order-admin/src/main/java/com/yami/trading/admin/task/RealtimePushJob.java | 12 +-
trading-order-admin/src/main/java/com/yami/trading/admin/task/robot/RobotModelTask.java | 4
trading-order-service/src/main/java/com/yami/trading/service/etf/MarketService.java | 30 +++---
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractApplyOrderController.java | 8
trading-order-admin/src/main/java/com/yami/trading/admin/task/summary/SummaryCrawl.java | 2
trading-order-bean/src/main/java/com/yami/trading/bean/future/dto/FuturesParaDTO.java | 6
trading-order-service/src/main/java/com/yami/trading/service/exchange/impl/ExchangeApplyOrderServiceImpl.java | 32 +++---
26 files changed, 181 insertions(+), 107 deletions(-)
diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/data/AdminKlineController.java b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/data/AdminKlineController.java
index 43d4969..3fea91e 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/data/AdminKlineController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/data/AdminKlineController.java
@@ -45,7 +45,7 @@
*/
@ApiOperation(value = "kline初始化")
@GetMapping(value = {"klineInit.action", "klineInitConfig.action"})
- public Result<String> klineInit(@RequestParam(required = true) String paraInitSymbol ) throws Exception {
+ public Result<String> klineInit(@RequestParam(required = false) String paraInitSymbol ) throws Exception {
diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/facade/MarketQuotationsFacade.java b/trading-order-admin/src/main/java/com/yami/trading/admin/facade/MarketQuotationsFacade.java
index 5dc7e7c..174bb13 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/admin/facade/MarketQuotationsFacade.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/facade/MarketQuotationsFacade.java
@@ -113,7 +113,7 @@
if (currentValue == null) {
marketQuotationsAdjust.setNewPrice(Arith.str(realtime.getClose(), decimal));
} else {
- marketQuotationsAdjust.setNewPrice(realtime.getClose().subtract(currentValue).setScale(decimal, RoundingMode.HALF_UP).toPlainString());
+ marketQuotationsAdjust.setNewPrice(realtime.getClose().subtract(currentValue).setScale(decimal, RoundingMode.DOWN).toPlainString());
}
marketQuotationsAdjust.setPips(Arith.str(item.getPips(), decimal));
marketQuotationsAdjust.setAfterValue(Arith.str(realtime.getClose(), decimal));
diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/task/KineTask.java b/trading-order-admin/src/main/java/com/yami/trading/admin/task/KineTask.java
new file mode 100644
index 0000000..1df27b5
--- /dev/null
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/task/KineTask.java
@@ -0,0 +1,65 @@
+package com.yami.trading.admin.task;
+
+import com.yami.trading.bean.item.domain.Item;
+import com.yami.trading.common.domain.Result;
+import com.yami.trading.common.exception.YamiShopBindException;
+import com.yami.trading.huobi.data.internal.KlineInitService;
+import com.yami.trading.huobi.data.internal.KlineService;
+import com.yami.trading.service.item.ItemService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
+import java.util.stream.Collectors;
+
+/**
+ * @program: trading-order-master
+ * @description:
+ * @create: 2025-10-30 15:49
+ **/
+@Component
+public class KineTask {
+
+ private final AtomicBoolean syncINStockData = new AtomicBoolean(false);
+
+ private final Lock syncINStockDataLock = new ReentrantLock();
+
+
+ @Autowired
+ private KlineInitService klineInitService ;
+ @Autowired
+ private ItemService itemService;
+
+
+
+ /**
+ * 同步系统所需要的股票
+ */
+ @Scheduled(cron = "0 0 0/1 * * ?")
+ public void syncINStockData() {
+ if (syncINStockData.get()) { // 判断任务是否在处理中
+ return;
+ }
+ if (syncINStockDataLock.tryLock()) {
+ try {
+ syncINStockData.set(true); // 设置处理中标识为true
+
+ String symbols = itemService.list().stream().map(Item::getSymbol).collect(Collectors.joining(","));
+ try {
+ klineInitService.klineInit(symbols);
+ }catch (Exception e){
+ throw new YamiShopBindException("定时任务k线图初始化失败");
+ }
+ } finally {
+ syncINStockDataLock.unlock();
+ syncINStockData.set(false); // 设置处理中标识为false
+ }
+ }
+ }
+
+
+}
diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/task/RealtimePushJob.java b/trading-order-admin/src/main/java/com/yami/trading/admin/task/RealtimePushJob.java
index d76ee20..bfdd3de 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/admin/task/RealtimePushJob.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/task/RealtimePushJob.java
@@ -120,12 +120,12 @@
map.put("high", realtime.getHigh());
map.put("low", realtime.getLow());
if( realtime.getVolume() != null){
- map.put("volume", realtime.getVolume().setScale(2, RoundingMode.HALF_UP));
+ map.put("volume", realtime.getVolume().setScale(2, RoundingMode.DOWN));
}else{
map.put("volume", realtime.getVolume());
}
if( realtime.getAmount() != null){
- map.put("amount", realtime.getAmount().setScale(2, RoundingMode.HALF_UP));
+ map.put("amount", realtime.getAmount().setScale(2, RoundingMode.DOWN));
}else{
map.put("amount", realtime.getAmount());
}
@@ -157,13 +157,13 @@
if (!map.containsKey(key)) {
map.put(key, stringObjectMap.get(key));
BigDecimal open = realtime.getClose();
- map.put("open", open != null ? open.setScale(decimal, RoundingMode.HALF_UP) : null);
+ map.put("open", open != null ? open.setScale(decimal, RoundingMode.DOWN) : null);
BigDecimal close = realtime.getClose();
- map.put("close", close != null ? close.setScale(decimal, RoundingMode.HALF_UP) : null);
+ map.put("close", close != null ? close.setScale(decimal, RoundingMode.DOWN) : null);
BigDecimal high = realtime.getHigh();
- map.put("high", high != null ? high.setScale(decimal, RoundingMode.HALF_UP) : null);
+ map.put("high", high != null ? high.setScale(decimal, RoundingMode.DOWN) : null);
BigDecimal low = realtime.getLow();
- map.put("low", low != null ? low.setScale(decimal, RoundingMode.HALF_UP) : null);
+ map.put("low", low != null ? low.setScale(decimal, RoundingMode.DOWN) : null);
}
}
diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/task/robot/RobotModelTask.java b/trading-order-admin/src/main/java/com/yami/trading/admin/task/robot/RobotModelTask.java
index 5dc4ae3..b7504b7 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/admin/task/robot/RobotModelTask.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/task/robot/RobotModelTask.java
@@ -100,7 +100,7 @@
percent = BigDecimal.ZERO;
} else {
chg = close.subtract(open);
- percent = chg.divide(open, 10, RoundingMode.HALF_UP).multiply(new BigDecimal(100)).setScale(2, RoundingMode.DOWN);
+ percent = chg.divide(open, 10, RoundingMode.DOWN).multiply(new BigDecimal(100)).setScale(2, RoundingMode.DOWN);
;
}
model.setKLineData(JSONObject.toJSONString(klines));
@@ -314,7 +314,7 @@
percent = BigDecimal.ZERO;
} else {
chg = close.subtract(open);
- percent = chg.divide(open, 10, RoundingMode.HALF_UP).multiply(new BigDecimal(100)).setScale(2, RoundingMode.DOWN);
+ percent = chg.divide(open, 10, RoundingMode.DOWN).multiply(new BigDecimal(100)).setScale(2, RoundingMode.DOWN);
;
}
robotModel.setKLineData(JSONObject.toJSONString(klines));
diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/task/summary/SummaryCrawl.java b/trading-order-admin/src/main/java/com/yami/trading/admin/task/summary/SummaryCrawl.java
index d98ce15..0117349 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/admin/task/summary/SummaryCrawl.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/task/summary/SummaryCrawl.java
@@ -751,7 +751,7 @@
if(content.contains("null")){
return "-";
}
- return new BigDecimal(content).setScale(scale, RoundingMode.HALF_UP).toPlainString();
+ return new BigDecimal(content).setScale(scale, RoundingMode.DOWN).toPlainString();
}
public static String formatMoney(String moneyStr) {
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiAssetsController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiAssetsController.java
index a8857bd..0d54b75 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiAssetsController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiAssetsController.java
@@ -49,7 +49,7 @@
Map<String, String> data = new HashMap<String, String>();
DecimalFormat df2 = new DecimalFormat("#.##");
// 向下取整
- df2.setRoundingMode(RoundingMode.HALF_UP);
+ df2.setRoundingMode(RoundingMode.DOWN);
String partyId = SecurityUtils.getCurrentUserId();
if ("".equals(partyId) || null == partyId) {
// 当前外汇资产
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractApplyOrderController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractApplyOrderController.java
index bb144e5..c6c9b23 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractApplyOrderController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractApplyOrderController.java
@@ -422,14 +422,14 @@
map.put("price", order.getPrice());
map.put("stop_price_profit", order.getStopPriceProfit());
if( order.getStopPriceLoss() !=null) {
- map.put("stop_price_loss", order.getStopPriceLoss().setScale(4, RoundingMode.HALF_UP));
+ map.put("stop_price_loss", order.getStopPriceLoss().setScale(4, RoundingMode.DOWN));
}else{
map.put("stop_price_loss", null);
}
map.put("price_type", order.getOrderPriceType());
map.put("state", order.getState());
- map.put("amount", order.getVolume().multiply(order.getUnitAmount()).setScale(4, RoundingMode.HALF_UP));
+ map.put("amount", order.getVolume().multiply(order.getUnitAmount()).setScale(4, RoundingMode.DOWN));
map.put("amount_open", order.getVolumeOpen().multiply(order.getUnitAmount()));
map.put("fee", order.getFee());
map.put("deposit", order.getDeposit());
@@ -606,9 +606,9 @@
Realtime realtime = realtimeMap.get(data.getSymbol());
BigDecimal mark_price = realtime.getClose();
if(data.getDirection().equalsIgnoreCase("buy")){
- expectedProfitAndLoss += data.getVolume().multiply(data.getLeverRate()).multiply(data.getUnitAmount()).multiply(mark_price.subtract(data.getPrice()).divide(data.getPrice(), 4, RoundingMode.HALF_UP)).doubleValue();
+ expectedProfitAndLoss += data.getVolume().multiply(data.getLeverRate()).multiply(data.getUnitAmount()).multiply(mark_price.subtract(data.getPrice()).divide(data.getPrice(), 4, RoundingMode.DOWN)).doubleValue();
}else{
- expectedProfitAndLoss -= data.getVolume().multiply(data.getLeverRate()).multiply(data.getUnitAmount()).multiply(mark_price.subtract(data.getPrice()).divide(data.getPrice(), 4, RoundingMode.HALF_UP)).doubleValue();
+ expectedProfitAndLoss -= data.getVolume().multiply(data.getLeverRate()).multiply(data.getUnitAmount()).multiply(mark_price.subtract(data.getPrice()).divide(data.getPrice(), 4, RoundingMode.DOWN)).doubleValue();
}
//手续费
double fee = Double.parseDouble(data.getFee().toString());
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiMoneyLogController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiMoneyLogController.java
index 376f533..6e528f9 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiMoneyLogController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiMoneyLogController.java
@@ -78,8 +78,8 @@
for (MoneyLog log : (List<MoneyLog>) page.getRecords()) {
log.setContent_type(log.getContentType());
log.setWallet_type(log.getWalletType());
- log.setAmount_after(log.getAmountAfter().setScale(4, RoundingMode.HALF_UP));
- log.setAmount_before(log.getAmountBefore().setScale(4, RoundingMode.HALF_UP));
+ log.setAmount_after(log.getAmountAfter().setScale(4, RoundingMode.DOWN));
+ log.setAmount_before(log.getAmountBefore().setScale(4, RoundingMode.DOWN));
if (Constants.MONEYLOG_CONTENT_FINANCE_PROFIT.equals(log.getContentType())) {
log.setAmount(log.getAmount().add(new BigDecimal(amount)));
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/KlineController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/KlineController.java
index ff8aea6..d3261fe 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/KlineController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/KlineController.java
@@ -126,10 +126,10 @@
map.put("decimals", decimal);
map.put("ts", ts);
map.put("current_time", kline.getCurrentTime());
- map.put("open", open.setScale(decimal, RoundingMode.HALF_UP));
- map.put("close", close.setScale(decimal, RoundingMode.HALF_UP));
- map.put("high", high.setScale(decimal, RoundingMode.HALF_UP));
- map.put("low", low.setScale(decimal, RoundingMode.HALF_UP));
+ map.put("open", open.setScale(decimal, RoundingMode.DOWN));
+ map.put("close", close.setScale(decimal, RoundingMode.DOWN));
+ map.put("high", high.setScale(decimal, RoundingMode.DOWN));
+ map.put("low", low.setScale(decimal, RoundingMode.DOWN));
map.put("volume", kline.getVolume());
list.add(map);
}
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/RealtimeController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/RealtimeController.java
index e403aa1..6c90e9c 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/RealtimeController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/RealtimeController.java
@@ -66,18 +66,18 @@
d.setType(bySymbol.getType());
d.setName(bySymbol.getName());
Integer decimals = bySymbol.getDecimals();
- d.setClose(d.getClose().setScale(decimals, RoundingMode.HALF_UP));
- d.setOpen(d.getOpen().setScale(decimals, RoundingMode.HALF_UP));
- d.setHigh(d.getHigh().setScale(decimals, RoundingMode.HALF_UP));
- d.setLow(d.getLow().setScale(decimals, RoundingMode.HALF_UP));
+ d.setClose(d.getClose().setScale(decimals, RoundingMode.DOWN));
+ d.setOpen(d.getOpen().setScale(decimals, RoundingMode.DOWN));
+ d.setHigh(d.getHigh().setScale(decimals, RoundingMode.DOWN));
+ d.setLow(d.getLow().setScale(decimals, RoundingMode.DOWN));
BigDecimal bigDecimal = BigDecimal.valueOf(1, decimals);
- d.setAsk(d.getClose().add(bigDecimal).setScale(decimals, RoundingMode.HALF_UP));
- d.setBid(d.getClose().subtract(bigDecimal).setScale(decimals, RoundingMode.HALF_UP));
+ d.setAsk(d.getClose().add(bigDecimal).setScale(decimals, RoundingMode.DOWN));
+ d.setBid(d.getClose().subtract(bigDecimal).setScale(decimals, RoundingMode.DOWN));
if(d.getVolume()!=null){
- d.setVolume(d.getVolume().setScale(2, RoundingMode.HALF_UP));
+ d.setVolume(d.getVolume().setScale(2, RoundingMode.DOWN));
}
if(d.getAmount()!=null){
- d.setAmount(d.getAmount().setScale(2, RoundingMode.HALF_UP));
+ d.setAmount(d.getAmount().setScale(2, RoundingMode.DOWN));
}
d.setSymbolData(bySymbol.getSymbolData());
diff --git a/trading-order-bean/src/main/java/com/yami/trading/bean/contract/dto/ContractOrderDTO.java b/trading-order-bean/src/main/java/com/yami/trading/bean/contract/dto/ContractOrderDTO.java
index ff33664..93811cd 100644
--- a/trading-order-bean/src/main/java/com/yami/trading/bean/contract/dto/ContractOrderDTO.java
+++ b/trading-order-bean/src/main/java/com/yami/trading/bean/contract/dto/ContractOrderDTO.java
@@ -207,7 +207,7 @@
if(unitAmount == null){
unitAmount = BigDecimal.ZERO;
}
- BigDecimal bigDecimal1 = volume.multiply(unitAmount).setScale(2, RoundingMode.HALF_UP);
+ BigDecimal bigDecimal1 = volume.multiply(unitAmount).setScale(2, RoundingMode.DOWN);
return bigDecimal1.toPlainString();
}
@@ -219,7 +219,7 @@
if(unitAmount == null){
unitAmount = BigDecimal.ZERO;
}
- BigDecimal bigDecimal2 = volumeOpen.multiply(unitAmount).setScale(2, RoundingMode.HALF_UP);
+ BigDecimal bigDecimal2 = volumeOpen.multiply(unitAmount).setScale(2, RoundingMode.DOWN);
return bigDecimal2.toPlainString();
}
@@ -237,8 +237,8 @@
if(unitAmount == null){
unitAmount = BigDecimal.ZERO;
}
- BigDecimal bigDecimal1 = volume.multiply(unitAmount).setScale(2, RoundingMode.HALF_UP);
- BigDecimal bigDecimal2 = volumeOpen.multiply(unitAmount).setScale(2, RoundingMode.HALF_UP);
+ BigDecimal bigDecimal1 = volume.multiply(unitAmount).setScale(2, RoundingMode.DOWN);
+ BigDecimal bigDecimal2 = volumeOpen.multiply(unitAmount).setScale(2, RoundingMode.DOWN);
return bigDecimal1.toPlainString()+"/"+bigDecimal2.toPlainString();
}
@@ -249,6 +249,6 @@
if(depositOpen == null){
depositOpen = BigDecimal.ZERO;
}
- return deposit.setScale(2, RoundingMode.HALF_UP).toPlainString()+"/"+depositOpen.setScale(2, RoundingMode.HALF_UP).toPlainString();
+ return deposit.setScale(2, RoundingMode.DOWN).toPlainString()+"/"+depositOpen.setScale(2, RoundingMode.DOWN).toPlainString();
}
}
diff --git a/trading-order-bean/src/main/java/com/yami/trading/bean/data/domain/Realtime.java b/trading-order-bean/src/main/java/com/yami/trading/bean/data/domain/Realtime.java
index 53a008f..0bd120b 100644
--- a/trading-order-bean/src/main/java/com/yami/trading/bean/data/domain/Realtime.java
+++ b/trading-order-bean/src/main/java/com/yami/trading/bean/data/domain/Realtime.java
@@ -172,7 +172,7 @@
return BigDecimal.ZERO;
}
- BigDecimal changeRatio = close.subtract(open).divide(open, 10, RoundingMode.HALF_UP);
+ BigDecimal changeRatio = close.subtract(open).divide(open, 10, RoundingMode.DOWN);
changeRatio = changeRatio.multiply(new BigDecimal(100)).setScale(2, RoundingMode.DOWN);
return changeRatio;
@@ -180,7 +180,7 @@
}
public BigDecimal getNetChange() {
- BigDecimal netChange = close.multiply(getChangeRatio()).divide(new BigDecimal(100), 10, RoundingMode.HALF_UP);
+ BigDecimal netChange = close.multiply(getChangeRatio()).divide(new BigDecimal(100), 10, RoundingMode.DOWN);
netChange = netChange.setScale(4, RoundingMode.DOWN);
return netChange;
}
diff --git a/trading-order-bean/src/main/java/com/yami/trading/bean/future/dto/FuturesParaDTO.java b/trading-order-bean/src/main/java/com/yami/trading/bean/future/dto/FuturesParaDTO.java
index 1024c89..4fa7c4e 100644
--- a/trading-order-bean/src/main/java/com/yami/trading/bean/future/dto/FuturesParaDTO.java
+++ b/trading-order-bean/src/main/java/com/yami/trading/bean/future/dto/FuturesParaDTO.java
@@ -73,9 +73,9 @@
public void divide(){
- this.setProfitRatio(profitRatio.divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP));
- this.setProfitRatioMax(profitRatioMax.divide(BigDecimal.valueOf(100),2, RoundingMode.HALF_UP));
- this.setUnitFee(unitFee.divide(BigDecimal.valueOf(100),2, RoundingMode.HALF_UP));
+ this.setProfitRatio(profitRatio.divide(BigDecimal.valueOf(100), 2, RoundingMode.DOWN));
+ this.setProfitRatioMax(profitRatioMax.divide(BigDecimal.valueOf(100),2, RoundingMode.DOWN));
+ this.setUnitFee(unitFee.divide(BigDecimal.valueOf(100),2, RoundingMode.DOWN));
}
}
diff --git a/trading-order-huobi/src/main/java/com.yami.trading.huobi/data/job/AbstractGetDataJob.java b/trading-order-huobi/src/main/java/com.yami.trading.huobi/data/job/AbstractGetDataJob.java
index df096f9..4266d87 100644
--- a/trading-order-huobi/src/main/java/com.yami.trading.huobi/data/job/AbstractGetDataJob.java
+++ b/trading-order-huobi/src/main/java/com.yami.trading.huobi/data/job/AbstractGetDataJob.java
@@ -76,7 +76,7 @@
AdjustmentValueCache.getDelayValue().remove(symbol);
} else {
// 本次调整值
- BigDecimal currentValue_frequency = delayValue.getValue().divide(new BigDecimal(frequency), decimal, RoundingMode.HALF_UP);
+ BigDecimal currentValue_frequency = delayValue.getValue().divide(new BigDecimal(frequency), decimal, RoundingMode.DOWN);
if (currentValue == null) {
AdjustmentValueCache.getCurrentValue().put(symbol, currentValue_frequency);
@@ -99,14 +99,14 @@
currentValue = AdjustmentValueCache.getCurrentValue().get(realtime.getSymbol());
if (currentValue != null && currentValue.compareTo(BigDecimal.ZERO) != 0) {
- realtime.setClose(realtime.getClose().add(currentValue).setScale(decimal, RoundingMode.HALF_UP));
+ realtime.setClose(realtime.getClose().add(currentValue).setScale(decimal, RoundingMode.DOWN));
BigDecimal ask = realtime.getAsk();
if(ask!=null){
- realtime.setAsk(ask.add(currentValue).setScale(decimal, RoundingMode.HALF_UP));
+ realtime.setAsk(ask.add(currentValue).setScale(decimal, RoundingMode.DOWN));
}
BigDecimal bid = realtime.getBid();
if(bid!=null){
- realtime.setBid(bid.add(currentValue).setScale(decimal, RoundingMode.HALF_UP));
+ realtime.setBid(bid.add(currentValue).setScale(decimal, RoundingMode.DOWN));
}
// realtime.setVolume(Arith.add(realtime.getVolume(), Arith.mul(Arith.div(currentValue, realtime.getClose()), realtime.getVolume())));
// realtime.setAmount(Arith.add(realtime.getAmount(), Arith.mul(Arith.div(currentValue, realtime.getClose()), realtime.getAmount())));
diff --git a/trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/HobiDataServiceImpl.java b/trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/HobiDataServiceImpl.java
index 9aa50b4..4282697 100644
--- a/trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/HobiDataServiceImpl.java
+++ b/trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/HobiDataServiceImpl.java
@@ -569,14 +569,14 @@
realtime.setSymbol(currency);
realtime.setName(currency);
realtime.setTs(realtimeJson.getLong("timestamp"));
- realtime.setOpen(realtimeJson.getBigDecimal("open").setScale(decimal, RoundingMode.HALF_UP));
- realtime.setClose(realtimeJson.getBigDecimal("mid").setScale(decimal, RoundingMode.HALF_UP));
- realtime.setHigh(realtimeJson.getBigDecimal("high").setScale(decimal, RoundingMode.HALF_UP));
- realtime.setLow(realtimeJson.getBigDecimal("low").setScale(decimal, RoundingMode.HALF_UP));
+ realtime.setOpen(realtimeJson.getBigDecimal("open").setScale(decimal, RoundingMode.DOWN));
+ realtime.setClose(realtimeJson.getBigDecimal("mid").setScale(decimal, RoundingMode.DOWN));
+ realtime.setHigh(realtimeJson.getBigDecimal("high").setScale(decimal, RoundingMode.DOWN));
+ realtime.setLow(realtimeJson.getBigDecimal("low").setScale(decimal, RoundingMode.DOWN));
realtime.setAmount(BigDecimal.ZERO);
realtime.setVolume(BigDecimal.ZERO);
- realtime.setAsk(realtimeJson.getBigDecimal("ask").setScale(decimal, RoundingMode.HALF_UP));
- realtime.setBid(realtimeJson.getBigDecimal("bid").setScale(decimal, RoundingMode.HALF_UP));
+ realtime.setAsk(realtimeJson.getBigDecimal("ask").setScale(decimal, RoundingMode.DOWN));
+ realtime.setBid(realtimeJson.getBigDecimal("bid").setScale(decimal, RoundingMode.DOWN));
list.add(realtime);
}
} else {
diff --git a/trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/XinLangDataServiceImpl.java b/trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/XinLangDataServiceImpl.java
index a6e9c70..b379b8d 100644
--- a/trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/XinLangDataServiceImpl.java
+++ b/trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/XinLangDataServiceImpl.java
@@ -118,13 +118,13 @@
realtime.setSymbol(symbol);
realtime.setTs(timestamp);
realtime.setName(symbol);
- realtime.setOpen(BigDecimal.valueOf(Double.parseDouble(split[5])).setScale(decimal, RoundingMode.HALF_UP));
- realtime.setHigh(BigDecimal.valueOf(Double.parseDouble(split[6])).setScale(decimal, RoundingMode.HALF_UP));
- realtime.setLow(BigDecimal.valueOf(Double.parseDouble(split[7])).setScale(decimal, RoundingMode.HALF_UP));
+ realtime.setOpen(BigDecimal.valueOf(Double.parseDouble(split[5])).setScale(decimal, RoundingMode.DOWN));
+ realtime.setHigh(BigDecimal.valueOf(Double.parseDouble(split[6])).setScale(decimal, RoundingMode.DOWN));
+ realtime.setLow(BigDecimal.valueOf(Double.parseDouble(split[7])).setScale(decimal, RoundingMode.DOWN));
if(StringUtils.isNotEmpty(split[1])){
- realtime.setClose(BigDecimal.valueOf(Double.parseDouble(split[1])).setScale(decimal, RoundingMode.HALF_UP));
+ realtime.setClose(BigDecimal.valueOf(Double.parseDouble(split[1])).setScale(decimal, RoundingMode.DOWN));
}else{
- realtime.setClose(BigDecimal.valueOf(Double.parseDouble(split[7])).setScale(decimal, RoundingMode.HALF_UP));
+ realtime.setClose(BigDecimal.valueOf(Double.parseDouble(split[7])).setScale(decimal, RoundingMode.DOWN));
}
realtime.setMarketCapital(0L);
realtime.setFloatMarketCapital(0L);
diff --git a/trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/XueQiuDataServiceImpl.java b/trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/XueQiuDataServiceImpl.java
index aed4a9c..09bea2e 100644
--- a/trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/XueQiuDataServiceImpl.java
+++ b/trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/XueQiuDataServiceImpl.java
@@ -343,10 +343,10 @@
timestamp = timestamp / 1000;
}
realtime.setTs(timestamp);
- realtime.setOpen(jsonObject.getBigDecimal("open").setScale(decimal, RoundingMode.HALF_UP));
- realtime.setClose(jsonObject.getBigDecimal("current").setScale(decimal, RoundingMode.HALF_UP));
- realtime.setHigh(jsonObject.getBigDecimal("high").setScale(decimal, RoundingMode.HALF_UP));
- realtime.setLow(jsonObject.getBigDecimal("low").setScale(decimal, RoundingMode.HALF_UP));
+ realtime.setOpen(jsonObject.getBigDecimal("open").setScale(decimal, RoundingMode.DOWN));
+ realtime.setClose(jsonObject.getBigDecimal("current").setScale(decimal, RoundingMode.DOWN));
+ realtime.setHigh(jsonObject.getBigDecimal("high").setScale(decimal, RoundingMode.DOWN));
+ realtime.setLow(jsonObject.getBigDecimal("low").setScale(decimal, RoundingMode.DOWN));
realtime.setMarketCapital(jsonObject.getLong("market_capital"));
realtime.setFloatMarketCapital(jsonObject.getLong("float_market_capital"));
realtime.setPeForecast(jsonObject.getBigDecimal("pe_forecast"));
@@ -356,12 +356,12 @@
if (amount == null) {
amount = BigDecimal.ZERO;
}
- realtime.setAmount(amount.setScale(decimal, RoundingMode.HALF_UP));
+ realtime.setAmount(amount.setScale(decimal, RoundingMode.DOWN));
BigDecimal volume = jsonObject.getBigDecimal("volume");
if (volume == null) {
volume = BigDecimal.ZERO;
}
- realtime.setVolume(volume.setScale(decimal, RoundingMode.HALF_UP));
+ realtime.setVolume(volume.setScale(decimal, RoundingMode.DOWN));
// realtime.setAsk(realtimeJson.getBigDecimal("ask").setScale(decimal, RoundingMode.HALF_UP));
// realtime.setBid(realtimeJson.getBigDecimal("pb").setScale(decimal, RoundingMode.HALF_UP));
list.add(realtime);
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractApplyOrderService.java b/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractApplyOrderService.java
index d1e99e7..05305bb 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractApplyOrderService.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractApplyOrderService.java
@@ -241,7 +241,8 @@
Wallet wallet = this.walletService.findByUserId(order.getPartyId());
BigDecimal amountBefore = wallet.getMoney();
BigDecimal totalAmountCost = order.getDeposit().add(order.getFee());
-
+ log.info("amountBefore:"+amountBefore);
+ log.info("totalAmountCost:"+totalAmountCost);
if (amountBefore.compareTo(totalAmountCost) < 0) {
throw new YamiShopBindException("not sufficient funds");
}
@@ -378,4 +379,12 @@
return list(queryWrapper);
}
+
+ public static void main(String[] args) {
+ System.out.println();
+ if (new BigDecimal("1432.34").compareTo(new BigDecimal("1432.34")) < 0) {
+ throw new YamiShopBindException("not sufficient funds");
+ }
+
+ }
}
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderService.java b/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderService.java
index 607e3a9..4a56311 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderService.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderService.java
@@ -526,7 +526,7 @@
BigDecimal point = close.subtract(order.getTradeAvgPrice());
BigDecimal profit = point.multiply(new BigDecimal("0.01")).multiply(order.getVolumeOpen()).setScale(4, BigDecimal.ROUND_DOWN);;
BigDecimal rentalProfit = order.getDeposit().add(profit);
- BigDecimal rate = volume.divide(order.getVolumeOpen(), 2, RoundingMode.HALF_UP);
+ BigDecimal rate = volume.divide(order.getVolumeOpen(), 2, RoundingMode.DOWN);
order.setAmountClose(order.getAmountClose().add(profit));
order.setVolume(order.getVolume().subtract(volume));
order.setDeposit(order.getDeposit().subtract(order.getDepositOpen().multiply(rate)));
@@ -803,13 +803,13 @@
map.put("trade_avg_price", order.getTradeAvgPrice());
map.put("close_avg_price", order.getCloseAvgPrice());
if (order.getStopPriceProfit() != null) {
- map.put("stop_price_profit", order.getStopPriceProfit().setScale(4, RoundingMode.HALF_UP));
+ map.put("stop_price_profit", order.getStopPriceProfit().setScale(4, RoundingMode.DOWN));
}else{
map.put("stop_price_profit", order.getStopPriceProfit());
}
if (order.getStopPriceLoss() != null) {
- map.put("stop_price_loss", order.getStopPriceLoss().setScale(4, RoundingMode.HALF_UP));
+ map.put("stop_price_loss", order.getStopPriceLoss().setScale(4, RoundingMode.DOWN));
}else{
map.put("stop_price_loss", order.getStopPriceLoss());
}
@@ -819,10 +819,10 @@
map.put("fee", order.getFee());
map.put("deposit", order.getDeposit());
map.put("deposit_open", order.getDepositOpen());
- map.put("change_ratio", order.getChangeRatio().setScale(2, RoundingMode.HALF_UP));
+ map.put("change_ratio", order.getChangeRatio().setScale(2, RoundingMode.DOWN));
if(order.getProfit()!=null){
- map.put("profit", order.getProfit().setScale(2, RoundingMode.HALF_UP));
+ map.put("profit", order.getProfit().setScale(2, RoundingMode.DOWN));
}else{
map.put("profit", order.getProfit());
}
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/etf/KlineConfigService.java b/trading-order-service/src/main/java/com/yami/trading/service/etf/KlineConfigService.java
index 6e62401..14103f0 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/etf/KlineConfigService.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/etf/KlineConfigService.java
@@ -345,7 +345,7 @@
BigDecimal range = upperBound.subtract(lowerBound);
BigDecimal randomValue = range.multiply(BigDecimal.valueOf(Math.random())).add(lowerBound);
- return randomValue.setScale(3, RoundingMode.HALF_UP);
+ return randomValue.setScale(3, RoundingMode.DOWN);
}
private void printResult(List<Kline> originalSecKline) {
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/etf/MarketService.java b/trading-order-service/src/main/java/com/yami/trading/service/etf/MarketService.java
index 35db422..2c83986 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/etf/MarketService.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/etf/MarketService.java
@@ -90,10 +90,10 @@
realtime.setName(symbol);
realtime.setTs(kline.getTs() / 1000);
- realtime.setOpen(kline.getOpen().setScale(decimal, RoundingMode.HALF_UP));
- realtime.setClose(kline.getClose().setScale(decimal, RoundingMode.HALF_UP));
- realtime.setHigh(kline.getHigh().setScale(decimal, RoundingMode.HALF_UP));
- realtime.setLow(kline.getLow().setScale(decimal, RoundingMode.HALF_UP));
+ realtime.setOpen(kline.getOpen().setScale(decimal, RoundingMode.DOWN));
+ realtime.setClose(kline.getClose().setScale(decimal, RoundingMode.DOWN));
+ realtime.setHigh(kline.getHigh().setScale(decimal, RoundingMode.DOWN));
+ realtime.setLow(kline.getLow().setScale(decimal, RoundingMode.DOWN));
// realtime.setMarketCapital(realtimeJson.getLong("marketCapital"));
// realtime.setFloatMarketCapital(realtimeJson.getLong("floatMarketCapital"));
// realtime.setPeForecast(realtimeJson.getBigDecimal("peForecast"));
@@ -104,11 +104,11 @@
BigDecimal lastAmount = (BigDecimal) Optional.ofNullable(redisTemplate.opsForHash().get(RedisKeys.SYMBOL_AMOUNT_VOLUME + symbol, "amount")).orElse(BigDecimal.ZERO);
BigDecimal amount = Optional.of(kline.getAmount()).orElse(BigDecimal.ZERO);
- realtime.setAmount(lastAmount.add(amount).setScale(decimal, RoundingMode.HALF_UP));
+ realtime.setAmount(lastAmount.add(amount).setScale(decimal, RoundingMode.DOWN));
BigDecimal lastVolume = (BigDecimal) Optional.ofNullable(redisTemplate.opsForHash().get(RedisKeys.SYMBOL_AMOUNT_VOLUME + symbol, "volume")).orElse(BigDecimal.ZERO);
BigDecimal volume = Optional.of(kline.getVolume()).orElse(BigDecimal.ZERO);
- realtime.setVolume(lastVolume.add(volume).setScale(decimal, RoundingMode.HALF_UP));
+ realtime.setVolume(lastVolume.add(volume).setScale(decimal, RoundingMode.DOWN));
realtime.setAsk(BigDecimal.valueOf(KlineConfigService.randomBigDecimal(realtime.getLow(), realtime.getClose(), random)));
realtime.setBid(BigDecimal.valueOf(KlineConfigService.randomBigDecimal(realtime.getHigh(), realtime.getClose(), random)));
@@ -159,10 +159,10 @@
List<Realtime> realtimes = dataService.realtime(IXIC);
if (CollectionUtils.isNotEmpty(realtimes)) {
Realtime realtime = realtimes.get(0);
- BigDecimal ratio = realtime.getClose().divide(realtime.getOpen(), 10, RoundingMode.HALF_UP);
- BigDecimal close = ratio.multiply(kline.getClose()).setScale(2, RoundingMode.HALF_UP);
- BigDecimal low = ratio.multiply(kline.getLow()).setScale(2, RoundingMode.HALF_UP);
- BigDecimal high = ratio.multiply(kline.getHigh()).setScale(2, RoundingMode.HALF_UP);
+ BigDecimal ratio = realtime.getClose().divide(realtime.getOpen(), 10, RoundingMode.DOWN);
+ BigDecimal close = ratio.multiply(kline.getClose()).setScale(2, RoundingMode.DOWN);
+ BigDecimal low = ratio.multiply(kline.getLow()).setScale(2, RoundingMode.DOWN);
+ BigDecimal high = ratio.multiply(kline.getHigh()).setScale(2, RoundingMode.DOWN);
retKline.setClose(close);
retKline.setLow(low);
retKline.setHigh(high);
@@ -286,15 +286,15 @@
buy = new DepthEntry();
// 买
- BigDecimal.valueOf(KlineConfigService.randomBigDecimal(kline.getLow(), kline.getClose(), random)).setScale(item.getDecimals(), RoundingMode.HALF_UP).doubleValue();
- buy.setPrice(BigDecimal.valueOf(KlineConfigService.randomBigDecimal(kline.getLow(), kline.getClose(), random)).setScale(item.getDecimals(), RoundingMode.HALF_UP).doubleValue());
- buy.setAmount(enlarge * volumeSplit.get(i).setScale(item.getDecimals(), RoundingMode.HALF_UP).doubleValue());
+ BigDecimal.valueOf(KlineConfigService.randomBigDecimal(kline.getLow(), kline.getClose(), random)).setScale(item.getDecimals(), RoundingMode.DOWN).doubleValue();
+ buy.setPrice(BigDecimal.valueOf(KlineConfigService.randomBigDecimal(kline.getLow(), kline.getClose(), random)).setScale(item.getDecimals(), RoundingMode.DOWN).doubleValue());
+ buy.setAmount(enlarge * volumeSplit.get(i).setScale(item.getDecimals(), RoundingMode.DOWN).doubleValue());
// 卖
sell = new DepthEntry();
- sell.setPrice(BigDecimal.valueOf(KlineConfigService.randomBigDecimal(kline.getHigh(), kline.getClose(), random)).setScale(item.getDecimals(), RoundingMode.HALF_UP).doubleValue());
+ sell.setPrice(BigDecimal.valueOf(KlineConfigService.randomBigDecimal(kline.getHigh(), kline.getClose(), random)).setScale(item.getDecimals(), RoundingMode.DOWN).doubleValue());
- sell.setAmount(enlarge * volumeSplit.get(i + 5).setScale(item.getDecimals(), RoundingMode.HALF_UP).doubleValue());
+ sell.setAmount(enlarge * volumeSplit.get(i + 5).setScale(item.getDecimals(), RoundingMode.DOWN).doubleValue());
depth.getAsks().add(sell);
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/exchange/impl/ExchangeApplyOrderServiceImpl.java b/trading-order-service/src/main/java/com/yami/trading/service/exchange/impl/ExchangeApplyOrderServiceImpl.java
index a987339..359ca84 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/exchange/impl/ExchangeApplyOrderServiceImpl.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/exchange/impl/ExchangeApplyOrderServiceImpl.java
@@ -262,17 +262,17 @@
toDayProfitLoss = (marketValue - (openPrice * volume));
profitLoss = marketValue - cost;
ExchangeSymbolDto exchangeSymbolDto = new ExchangeSymbolDto();
- exchangeSymbolDto.setVolume(new BigDecimal(volume).setScale(2, RoundingMode.HALF_UP).doubleValue());
- exchangeSymbolDto.setPositionVolume(new BigDecimal(volume).setScale(2, RoundingMode.HALF_UP).doubleValue());
- exchangeSymbolDto.setPrice(new BigDecimal(price).setScale(2, RoundingMode.HALF_UP).doubleValue());
+ exchangeSymbolDto.setVolume(new BigDecimal(volume).setScale(2, RoundingMode.DOWN).doubleValue());
+ exchangeSymbolDto.setPositionVolume(new BigDecimal(volume).setScale(2, RoundingMode.DOWN).doubleValue());
+ exchangeSymbolDto.setPrice(new BigDecimal(price).setScale(2, RoundingMode.DOWN).doubleValue());
exchangeSymbolDto.setName(name);
exchangeSymbolDto.setSymbol(key);
- exchangeSymbolDto.setToDayProfitLoss(new BigDecimal(toDayProfitLoss).setScale(2, RoundingMode.HALF_UP).doubleValue());
+ exchangeSymbolDto.setToDayProfitLoss(new BigDecimal(toDayProfitLoss).setScale(2, RoundingMode.DOWN).doubleValue());
exchangeSymbolDto.setToDayProfitLossPercentage(calculateProfitPercentage(openPrice, currentPrice));
- exchangeSymbolDto.setCurrentPrice(new BigDecimal(currentPrice).setScale(2, RoundingMode.HALF_UP).doubleValue());
- exchangeSymbolDto.setOpenPrice(new BigDecimal(openPrice).setScale(2, RoundingMode.HALF_UP).doubleValue());
- exchangeSymbolDto.setMarketValue(new BigDecimal(marketValue).setScale(2, RoundingMode.HALF_UP).doubleValue());
- exchangeSymbolDto.setProfitLoss(new BigDecimal(profitLoss).setScale(2, RoundingMode.HALF_UP).doubleValue());
+ exchangeSymbolDto.setCurrentPrice(new BigDecimal(currentPrice).setScale(2, RoundingMode.DOWN).doubleValue());
+ exchangeSymbolDto.setOpenPrice(new BigDecimal(openPrice).setScale(2, RoundingMode.DOWN).doubleValue());
+ exchangeSymbolDto.setMarketValue(new BigDecimal(marketValue).setScale(2, RoundingMode.DOWN).doubleValue());
+ exchangeSymbolDto.setProfitLoss(new BigDecimal(profitLoss).setScale(2, RoundingMode.DOWN).doubleValue());
exchangeSymbolDto.setProfitLossPercentage(calculateProfitPercentage(price, currentPrice));
result.add(exchangeSymbolDto);
}
@@ -284,7 +284,7 @@
double profit = currentPrice - buyPrice;
double profitPercentage = (profit / buyPrice) * 100;
System.out.println(profitPercentage);
- return new BigDecimal(profitPercentage).setScale(2, RoundingMode.HALF_UP).doubleValue();
+ return new BigDecimal(profitPercentage).setScale(2, RoundingMode.DOWN).doubleValue();
}
public static void test() {
@@ -315,15 +315,15 @@
}
SumEtfDto sumEtfDto = new SumEtfDto();
- sumEtfDto.setProfitLoss(new BigDecimal(profitLoss).setScale(2, RoundingMode.HALF_UP).doubleValue());
- sumEtfDto.setSumPrice(new BigDecimal(sumPrice).setScale(2, RoundingMode.HALF_UP).doubleValue());
- sumEtfDto.setToDayProfitLoss(new BigDecimal(toDayProfitLoss).setScale(2, RoundingMode.HALF_UP).doubleValue());
+ sumEtfDto.setProfitLoss(new BigDecimal(profitLoss).setScale(2, RoundingMode.DOWN).doubleValue());
+ sumEtfDto.setSumPrice(new BigDecimal(sumPrice).setScale(2, RoundingMode.DOWN).doubleValue());
+ sumEtfDto.setToDayProfitLoss(new BigDecimal(toDayProfitLoss).setScale(2, RoundingMode.DOWN).doubleValue());
// usdt余额
Wallet wallet = new Wallet();
if (!"".equals(userId) && userId != null) {
wallet = walletService.findByUserId(userId.toString());
}
- sumEtfDto.setSumVolume(wallet.getMoney().setScale(2, RoundingMode.HALF_UP).doubleValue());
+ sumEtfDto.setSumVolume(wallet.getMoney().setScale(2, RoundingMode.DOWN).doubleValue());
return sumEtfDto;
}
@@ -579,12 +579,12 @@
}
map.put("create_time", DateUtil.formatDate(order.getCreateTime(), DateUtils.DF_yyyyMMddHHmmss));
- map.put("volume", new BigDecimal(order.getVolume()).setScale(6, RoundingMode.HALF_UP));
+ map.put("volume", new BigDecimal(order.getVolume()).setScale(6, RoundingMode.DOWN));
// 买的时候total 为volume,卖的时候total = volume*closeTime
if("open".equalsIgnoreCase(order.getOffset())){
- map.put("total", new BigDecimal(order.getVolume()).setScale(6, RoundingMode.HALF_UP));
+ map.put("total", new BigDecimal(order.getVolume()).setScale(6, RoundingMode.DOWN));
}else{
- map.put("total", new BigDecimal(order.getVolume()*order.getClosePrice()).setScale(2, RoundingMode.HALF_UP));
+ map.put("total", new BigDecimal(order.getVolume()*order.getClosePrice()).setScale(2, RoundingMode.DOWN));
}
map.put("offset", order.getOffset());
map.put("price", order.getPrice());
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/future/FuturesParaService.java b/trading-order-service/src/main/java/com/yami/trading/service/future/FuturesParaService.java
index c7ea49a..b51f38a 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/future/FuturesParaService.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/future/FuturesParaService.java
@@ -61,7 +61,7 @@
if (profitRatio.compareTo(val) < 0 || profitRatioMax.compareTo(val) < 0) {
scale = 1;
}
- String profitRatioFront = profitRatio.setScale(scale, RoundingMode.HALF_UP) + "-" + profitRatioMax.setScale(scale, RoundingMode.HALF_UP);
+ String profitRatioFront = profitRatio.setScale(scale, RoundingMode.DOWN) + "-" + profitRatioMax.setScale(scale, RoundingMode.DOWN);
futuresPara.setProfitRatioFront(profitRatioFront);
BigDecimal unitMaxAmount = futuresPara.getUnitMaxAmount().compareTo(BigDecimal.ZERO)<= 0?null: futuresPara.getUnitMaxAmount();
futuresPara.setBuyMin(new BigDecimal(futuresPara.getUnitAmount()));
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/impl/StrongLevelCalculationServiceImpl.java b/trading-order-service/src/main/java/com/yami/trading/service/impl/StrongLevelCalculationServiceImpl.java
index 93828f3..cbe3b9e 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/impl/StrongLevelCalculationServiceImpl.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/impl/StrongLevelCalculationServiceImpl.java
@@ -38,7 +38,7 @@
if (result < 0) {
return 0;
}
- return new BigDecimal(result).setScale(2, RoundingMode.HALF_UP).doubleValue();
+ return new BigDecimal(result).setScale(2, RoundingMode.DOWN).doubleValue();
}
@@ -66,7 +66,7 @@
if (result < 0) {
return 0;
}
- return new BigDecimal(result).setScale(2, RoundingMode.HALF_UP).doubleValue();
+ return new BigDecimal(result).setScale(2, RoundingMode.DOWN).doubleValue();
}
@@ -139,7 +139,7 @@
if (result < 0) {
return 0;
}
- return new BigDecimal(result).setScale(2, RoundingMode.HALF_UP).doubleValue();
+ return new BigDecimal(result).setScale(2, RoundingMode.DOWN).doubleValue();
}
@@ -166,7 +166,7 @@
if (result < 0) {
return 0;
}
- return new BigDecimal(result).setScale(2, RoundingMode.HALF_UP).doubleValue();
+ return new BigDecimal(result).setScale(2, RoundingMode.DOWN).doubleValue();
}
}
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/impl/UserServiceImpl.java b/trading-order-service/src/main/java/com/yami/trading/service/impl/UserServiceImpl.java
index defdf3e..37f6804 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/impl/UserServiceImpl.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/impl/UserServiceImpl.java
@@ -611,7 +611,7 @@
throw new YamiShopBindException("操作失败!修正后账户余额小于0。");
}
walletService.updateExtend(walletExtend.getPartyId().toString(), gift_symbol, gift_sum);
- BigDecimal amount = dataService.realtime(gift_symbol).get(0).getClose().multiply(new BigDecimal(gift_sum)).setScale(2, RoundingMode.HALF_UP);
+ BigDecimal amount = dataService.realtime(gift_symbol).get(0).getClose().multiply(new BigDecimal(gift_sum)).setScale(2, RoundingMode.DOWN);
userDataService.saveGiftMoneyHandle(wallet.getUserId(), amount.doubleValue());
/*
@@ -753,7 +753,7 @@
if (Arith.add(gift_sum, walletExtend.getAmount()) < 0.0D) {
throw new YamiShopBindException("操作失败!修正后账户余额小于0。");
}
- BigDecimal amount = dataService.realtime(gift_symbol).get(0).getClose().multiply(new BigDecimal(gift_sum)).setScale(2, RoundingMode.HALF_UP);
+ BigDecimal amount = dataService.realtime(gift_symbol).get(0).getClose().multiply(new BigDecimal(gift_sum)).setScale(2, RoundingMode.DOWN);
userDataService.saveGiftMoneyHandle(wallet.getUserId(), amount.doubleValue()); // 保存账变日志
// MoneyLog moneyLog = new MoneyLog();
// moneyLog.setCategory(Constants.MONEYLOG_CATEGORY_COIN);
@@ -1432,7 +1432,7 @@
if (!walletExtendService.saveOrUpdate(walletExtend)) {
throw new YamiShopBindException("操作钱包失败!");
}
- BigDecimal amount = dataService.realtime(gift_symbol).get(0).getClose().multiply(new BigDecimal(gift_sum)).setScale(2, RoundingMode.HALF_UP);
+ BigDecimal amount = dataService.realtime(gift_symbol).get(0).getClose().multiply(new BigDecimal(gift_sum)).setScale(2, RoundingMode.DOWN);
userDataService.saveGiftMoneyHandle(wallet.getUserId(), amount.doubleValue());
// 保存账变日志
--
Gitblit v1.9.3