那你可以将平均周期N设置成输入参数啊。
double ExponentialMA(const int position,const int period,const double prev_value,const double &price[]) { //--- double result=0.0; //--- calculate value if(period>0) { double pr=2.0/(period+1.0); result=price[position]*pr+prev_value*(1-pr); } //--- return(result); }
调用这个函数一样要定义平均周期啊
已解。在调用ExponentialMA()函数时, 可加一个N周期的循环进行 嵌套赋值
Documentation on MQL5: Math Functions / MathExp
- www.mql5.com
Math Functions / MathExp - Documentation on MQL5
在编写自定义指标时,如果不想利用CopyBuffer()函数操作iMA()的句柄,而是想只获取某K线上的均线值,该如何操作?
例如:当前货币对 当前时间表 平均周期MA_Priod=N 求某柱上加权移动平均线的值 bar[i]=? (ema)
如果利用 MQL5的一个库文件<MovingAverages.mqh> 调用EMA函数 :double ExponentialMA(const int position,const int period,const double prev_value,const double &price[]) 是否可行? 该如何调用?请热心朋友帮忙解说,尤其是其中的
参数 const double prev_value 即上期均线的值 该如何传递?
我试着如此写代码: myEMA[i]=ExponentialMA(i,N,NULL,close) 但不成功,其中close是指标中的收盘数组,已设置时间序列,我把Prev_value 这个参数 用NULL代替了,不成功。
难道要自己编写一个循环?或 EMA()函数? 如果是,该怎么编写? 望同好帮忙,不胜感谢!
之所以不拷贝数组,是因为平均周期N 的数值不固定。