java 写 macd
时间: 2023-10-09 09:10:34 浏览: 37
MACD(Moving Average Convergence Divergence)是一种常用的技术指标,用于股票价格的分析和预测。下面是 Java 代码实现 MACD:
```java
public class MACD {
public static void main(String[] args) {
double[] closePrice = {10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
int shortEMA = 3;
int longEMA = 7;
int signalEMA = 5;
double[] emaShort = calculateEMA(closePrice, shortEMA);
double[] emaLong = calculateEMA(closePrice, longEMA);
double[] macdLine = calculateMACDLine(emaShort, emaLong);
double[] signalLine = calculateEMA(macdLine, signalEMA);
System.out.println("MACD Line: " + Arrays.toString(macdLine));
System.out.println("Signal Line: " + Arrays.toString(signalLine));
}
private static double[] calculateEMA(double[] closePrice, int period) {
double[] ema = new double[closePrice.length];
double multiplier = 2.0 / (period + 1);
ema[0] = closePrice[0];
for (int i = 1; i < closePrice.length; i++) {
ema[i] = (closePrice[i] - ema[i - 1]) * multiplier + ema[i - 1];
}
return ema;
}
private static double[] calculateMACDLine(double[] emaShort, double[] emaLong) {
double[] macdLine = new double[emaShort.length];
for (int i = 0; i < emaShort.length; i++) {
macdLine[i] = emaShort[i] - emaLong[i];
}
return macdLine;
}
}
```
在上面的代码中,我们使用了 `calculateEMA` 方法来计算指数移动平均线(Exponential Moving Average,EMA),并使用 `calculateMACDLine` 方法计算 MACD 线。最后,我们使用 `calculateEMA` 方法计算信号线。
以上代码仅作为参考,具体的实现可能因为数据来源和计算方法的不同而有所差异。