关于<MovingAverages.mqh>内置函数的调用问题

 

目前,我正在学习尝试把其他软件上使用的指标移植到MT5,但由于对MQL5还不够了解,所以遇到很多问题。

比如下面两个指标,在其他软件上调用非常简单,但在MQL5上却无从下手。

虽然找到<MovingAverages.mqh> ,其内置函数应该可以满足要求,但没找到相关的实例,不知具体参数如何使用。

所以请教,关于以下两个算法MQL5的调用方法。

 

 求指数平滑移动平均。

用法:EMA(X,N)

参数:X为变量,N为变量或常数。

说明:计算X最近N周期的指数平滑移动平均,若N为0则从第一个有效周期开始计算。

求移动平均。

用法:SMA(X,N,M)

参数:X为变量,N、M为变量或常数。

说明:计算X最近N周期的移动平均,M为权重。若N为0则从第一个有效周期开始计算。 

 

你可以参考MACD指标中计算 MACD DEA时的用法:

//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence                           |
//+------------------------------------------------------------------+
int OnCalculate (const int rates_total,
                 const int prev_calculated,
                 const datetime& time[],
                 const double& open[],
                 const double& high[],
                 const double& low[],
                 const double& close[],
                 const long& tick_volume[],
                 const long& volume[],
                 const int& spread[])
  {
   int i,limit;
   
   ArraySetAsSeries(ExtDIFFBuffer,false);
   ArraySetAsSeries(ExtDEABuffer,false);
   ArraySetAsSeries(ExtMacdRBuffer,false);
   ArraySetAsSeries(ExtMacdGBuffer,false);

//.........省略

//--- calculate DIFF
   for(i=limit;i<rates_total;i++)
      ExtDIFFBuffer[i]=iMA(NULL,0,InpFastEMA,0,MODE_EMA,PRICE_CLOSE,rates_total-i-1)-
                    iMA(NULL,0,InpSlowEMA,0,MODE_EMA,PRICE_CLOSE,rates_total-i-1);

//--- calculate DEA
   SimpleMAOnBuffer(rates_total,prev_calculated,0,InpSignalSMA,ExtDIFFBuffer,ExtDEABuffer);

//.......省略
}
 
谢谢,我试试。