川哥财经 发表于 2024-3-14 14:20
double DynamicMA(const int position, const double N, const double prev_value, const double &price[]) ...
大神你好,可以帮忙用这个函数改吗,用之前那个改的函数是固定的值
DynamicMA(MA10,500,30,0,MODE_SMA,i);
MODE_SMA这个项目要删除,因为平滑方式不是用SMA,最终函数为DynamicMA(MA10,500,5,0,i);
double DynamicMA(const double &Array[],int total,const int iMAPeriod,const int ma_shift,ENUM_MA_METHOD ma_method,const int Shift)
{
double buf[];
if(total==0) total=ArraySize(Array);
if(ArrayResize(buf,total)<0) return(0);
switch(ma_method)
{
case MODE_SMMA :
{
double sum=0;
int i,k,pos;
pos=1-iMAPeriod;
while(pos>=0)
{
if(pos==1-iMAPeriod)
{
for(i=0,k=pos;i<iMAPeriod;i++,k++)
{
sum+=Array[k];
buf[k]=0;
}
}
else sum=buf[pos+1]*(iMAPeriod-1)+Array[pos];
buf[pos]=sum/iMAPeriod;
pos--;
}
return(buf[Shift+ma_shift]);
}
default: return(0);
}
return(0);
} |