我已经使用下面的代码来计算线性加权移动平均线的值,但是当我尝试通过创建新类重新计算新的数据集时,结果是错误的。
第一次打电话我得到了正确的价值但是第二次打电话是错误的。
public class LWMA
{
BarChart barChart;
int maPeriod;
public double value[];
public LWMA(int mp,BarChart bc){
barChart = bc;
maPeriod = mp;
value = new double[barChart.barCount];
for (int i = 0; i < barChart.barCount - 1; i++){
value[i] = 0;
}
calculateIndicator();
} // Ending L
public boolean calculateIndicator(){
double sumPrice;
double sumDivider;
sumPrice = 0;
sumDivider = 0;
for ( int i = 1; i <= maPeriod; i++)
sumDivider += i;
for (int i = 0; i < barChart.barCount; i++){
value[i] = 0f;
if (i >= maPeriod){
sumPrice = 0f;
for (int j = 0; j < maPeriod; j++){
sumPrice += (barChart.barChartItem[i-j].getClosePrice()*(maPeriod-j));
} // loop j
value[i] = sumPrice/sumDivider;
}
else{
value[i] = 0f;
}
} //loop i
return true;
}