public class MAUtils {
private void test(int dayCount) {
//算法公式:MA(C,X)=(X1+X2+…+XX)/X.
//MA(C,1)=C/1=1(这里C=1,X=1);
//MA(C,2)=(1+2)/2=1.5;
//MA(C,3)=(1+2+3)/3=2;
//MA(C,4)=(1+2+3+4)/4=2.5;
//MA(C,5)=(1+2+3+4+5)/5=3.
List<Data> dataList = new ArrayList<>();
for (int i = 0; i < dayCount; i++) {
Data data = new Data();
data.setClosePrice(i + 1);
data.setOpenPrice(i + 1);
dataList.add(data);
}
List<Double> maResults = new ArrayList<>();
for (int days = 0; days < dayCount; days++) {
double sum = 0;
for (int dataIdx = 0; dataIdx < dataList.size(); dataIdx++) {
if (dataIdx > days) {
break;
}
sum += dataList.get(dataIdx).getOpenPrice();
}
maResults.add(sum / (days + 1));
}
System.out.println("=============");
System.out.println(maResults);
}
public static void main(String[] args) {
new MAUtils().test(5);
}
class Data {
Data() {
}
double closePrice;
double openPrice;
public double getClosePrice() {
return closePrice;
}
public void setClosePrice(double closePrice) {
this.closePrice = closePrice;
}
public double getOpenPrice() {
return openPrice;
}
public void setOpenPrice(double openPrice) {
this.openPrice = openPrice;
}
@Override
public String toString() {
return "Data{" +
"closePrice=" + closePrice +
", openPrice=" + openPrice +
'}';
}
}
注:自行BigDecimal处理