Java 编写的技术分析代码(记录)

这段代码定义了一个TechnicalAnalysis类,包含计算简单移动平均线(SMA)、指数移动平均线(EMA)和相对强弱指数(RSI)的静态方法。calculateSMA计算最近period个元素的平均值,calculateEMA使用指数加权移动平均法,calculateRSI则根据涨跌幅计算RSI值。
摘要由CSDN通过智能技术生成
public class TechnicalAnalysis {
  public static double calculateSMA(List<Double> values, int period) {
    double sum = 0;
    for (int i = 0; i < period; i++) {
      sum += values.get(i);
    }
    return sum / period;
  }
  
  public static double calculateEMA(List<Double> values, int period) {
    double alpha = 2.0 / (period + 1);
    double ema = values.get(0);
    for (int i = 1; i < values.size(); i++) {
      ema = alpha * values.get(i) + (1 - alpha) * ema;
    }
    return ema;
  }
  
  public static double calculateRSI(List<Double> values, int period) {
    double upSum = 0;
    double downSum = 0;
    double lastValue = values.get(0);
    for (int i = 1; i < values.size(); i++) {
      double diff = values.get(i) - lastValue;
      if (diff > 0) {
        upSum += diff;
      } else {
        downSum += Math.abs(diff);
      }
      lastValue = values.get(i);
    }
    double rs = upSum / downSum;
    return 100 - 100 / (1 + rs);
  }
}

这段代码定义了一个 TechnicalAnalysis 类,其中包含了三个静态方法,分别用于计算简单移动平均线(SMA)、指数移动平均线(EMA)和相对强弱指数(RSI)。

calculateSMA 方法中,通过一个 for 循环计算给定 values 列表中最近 period 个元素的平均值,该平均值即为 SMA 值。

calculateEMA 方法中,通过给定的 period 计算出平滑系数 alpha,然后利用一个 for 循环,使用指数加权移动平均的方法计算给定 values 列表中最近 period 个元素的 EMA 值。

calculateRSI 方法中,使用一个 for 循环遍历 values 列表,依次计算每个时间段的涨跌幅,并根据涨跌幅计算出相应的上涨值 upSum 和下跌值 downSum,最终通过这两个值计算出相对强弱指数 RSI 值。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术支持在线

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值