Administrator
7 days ago b70f32814aa9dc23ad284b43e91bbc6c96c70366
src/main/java/com/xcong/excoin/modules/okxNewPrice/indicator/macdAndMatrategy/EMACalculator.java
@@ -86,4 +86,22 @@
    public static List<BigDecimal> calculateEMA(List<BigDecimal> prices, int period) {
        return calculateEMA(prices, period, true);
    }
    /**
     * 计算单个EMA值(递归计算方式)
     *
     * @param currentPrice 当前价格
     * @param prevEMA 前一个EMA值
     * @param period EMA周期
     * @return 当前EMA值
     */
    public static BigDecimal calculateSingleEMA(BigDecimal currentPrice, BigDecimal prevEMA, int period) {
        // 计算权重因子alpha = 2 / (period + 1)
        BigDecimal alpha = BigDecimal.valueOf(2.0).divide(BigDecimal.valueOf(period + 1), 10, RoundingMode.HALF_UP);
        // EMA(today) = Price(today) * alpha + EMA(yesterday) * (1 - alpha)
        return currentPrice.multiply(alpha)
                .add(prevEMA.multiply(BigDecimal.ONE.subtract(alpha)))
                .setScale(10, RoundingMode.HALF_UP);
    }
}