double iMA(string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift)
对于打包的标准指标“移动平均线”,“Shift”字段修改了“ma_shift”参数。
对于打包的自定义指标“移动平均线”,“MA_Shift”字段修改了“ma_shift”参数。
这两个指标中的任何内容都不允许您修改最后一个“shift”参数。
从图形上看,对于标准指标“移动平均线”,更改“移位”字段会使 MA 线向右(带有 +ve 数字)和向左(带有 -ve 数字)移动整数值定义的周期数。
ma_shift = 0:
ma_shift = 4:
ma_shift = -4:
代码方面,当轮询 iMA() 并将 ma_shift 设置为 4 时,例如
double iMA("EURUSD", PERIOD_H1, 8, 4, MODE_SMA, PRICE_CLOSE, 0)
您将获得 4 个周期的移动平均值。
这是一个简单的文本指示器,显示 iMA() 值,其中 period、ma_shift 和 shift 参数可编辑。使用它并对照“移动平均线”指标进行验证(打开数据窗口):
#property indicator_chart_window
extern int period = 8;
extern int ma_shift = 0;
extern int shift = 0;
void start(){
string A1=StringConcatenate("Stat: ", DoubleToStr(MA(),5));
Comment(A1);
return (0);
}
double MA(){
return(iMA(NULL, 0, period, ma_shift, 0, 0, shift));
}
iMA() 函数中的最后一个 'shift' 参数移动用于计算的周期,并且只能是 +ve 数字。-ve 数字将请求未来不存在的期间。您可以尝试在上面的文本指示器中输入 -ve 数字以查看您得到的结果。(0.00000) 如上所述,指标不允许编辑此参数,因为它们实际上是相同的。
double iMA("EURUSD", PERIOD_H1, 8, 4, MODE_SMA, PRICE_CLOSE, 0)
如同
double iMA("EURUSD", PERIOD_H1, 8, 0, MODE_SMA, PRICE_CLOSE, 4)
那么它为什么会存在呢?最有可能作为与其他指标的标准化,例如http://docs.mql4.com/indicators/iAlligator
其中“shift”参数是计算周期的总体决定因素,并且单独的颚移位、牙齿移位、嘴唇移位是独立的参数以图形方式移动绘制的线条。