新版仿ok交易所-后端
1
zj
2025-10-30 14c1946eae86a86f8d1edee6cf3bdaf7572fc966
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);