我对如何实施福特收盘价的进口感到有些困惑。目前,我正在使用扫描仪,虽然有下一行,但它应该继续循环。导入行后,我需要将其转换为double。我的问题是我如何将整个文件导入一个字符串数组,然后将其转换为double,然后使用for循环循环通过double数组来计算给定方程的MACD。
division
} }
答案 0 :(得分:2)
为简洁起见,省略了文件读取代码 - 将for循环添加到价格List
,并使用while循环从csv读取收盘价。
import java.util.*;
public class Macd {
private static List<Double> prices;
private final static double EMA_12_AlPHA = 2d / (1d + 12d);
private final static double EMA_26_AlPHA = 2d / (1d + 26d);
public static void main(String []args){
prices = new ArrayList<Double>();
for(int i=0; i<100; i++) {
prices.add(new Double(i));
}
for(int i = 25; i < prices.size(); i++) {
final double macd = getEma12(i) - getEma26(i);
System.out.println(macd);
}
}
public static double getEma12(int day) {
if(day < 11)
System.err.println("Day must be >= 11");
double ema12 = 0d;
for(int i=day-10; i<=day; i++) {
ema12 = EMA_12_AlPHA * prices.get(i) + (1d - EMA_12_AlPHA) * ema12;
}
return ema12;
}
public static double getEma26(int day) {
if(day < 25)
System.err.println("Day must be >= 25");
double ema26 = 0d;
for(int i=day-24; i<=day; i++) {
ema26 = EMA_26_AlPHA * prices.get(i) + (1d - EMA_26_AlPHA) * ema26;
}
return ema26;
}
}