请问高手,如何计算一个自定义数组的移动平均?

 

void sma()
{
double sum=0;
int i,pos=Bars-ExtCountedBars-1;
//---- initial accumulation
if(pos<MA_Period) pos=MA_Period;
for(i=1;i<MA_Period;i++,pos--)
sum+=Close[pos];
//---- main calculation loop
while(pos>=0)
{
sum+=Close[pos];
ExtMapBuffer[pos]=sum/MA_Period;
sum-=Close[pos+MA_Period-1];
pos--;
}
//---- zero initial bars
if(ExtCountedBars<1)
for(i=1;i<MA_Period;i++) ExtMapBuffer[Bars-i]=0;
}

============================
以上为一个简单移动平均函数,但是是以收盘价为基准的,比如我有数组分别叫TR[]、DMM[]、DMP[],如何代入上面的函数,分别求出他们的移动平均呢?

 

刚改了一下,但并不划线,也就是说TR[]这个数组并没有被代入sma函数,请高手指点:

sma(PDI,TR,12);

void sma(double &ExtMapBuffer[],double &Into_Array[],int MA_period)
{
double sum=0;
ExtCountedBars=IndicatorCounted();
int ma_i,pos=Bars-ExtCountedBars-1;
//---- initial accumulation
if(pos<MA_period) pos=MA_period;
for(ma_i=1;ma_i<MA_period;ma_i++,pos--)
sum+=Into_Array[pos];
//---- main calculation loop
while(pos>=0)
{
sum+=Into_Array[pos];
ExtMapBuffer[pos]=sum/MA_period;
sum-=Into_Array[pos+MA_period-1];
pos--;
}
//---- zero initial bars
if(ExtCountedBars<1)
for(ma_i=1;ma_i<MA_period;ma_i++) ExtMapBuffer[Bars-ma_i]=0;
}

 

最简单的办法,多写几遍sma()函数。每一个sma()中的Close[],用你的数组去替换。

 
新手路过,还在学习中