你可以参考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); //.......省略 }
谢谢,我试试。
目前,我正在学习尝试把其他软件上使用的指标移植到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则从第一个有效周期开始计算。