iMA()函数的移位参数是什么意思?

ale*_*555 6 mql4

有人可以解释一下shift这个iMA函数的两个参数之间的区别是什么?
根据MQL4文件:

ma_shift - 移动平均移动.指标线偏移与时间范围的图表相关.

shift - 从指标缓冲区获取的值的索引(相对于当前条的转移给定的前期数)

标准MA指标采用哪些参数?

Rai*_*den 15

double iMA(string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift)
Run Code Online (Sandbox Code Playgroud)

对于打包的标准指标'移动平均线','移位'字段修改'ma_shift'参数.

指示符

对于打包的自定义指标'移动平均线','MA_Shift'字段修改'ma_shift'参数.

自定义指标

两个指标中的任何内容都不允许您修改最后一个"shift"参数.

对照


在图形上,对于标准指标"移动平均线",更改"移位"字段将MA线向右移动(带有+ ve数字)并向左移动(带有-ve数字)移位由整数值定义的周期数.

ma_shift = 0: 默认

ma_shift = 4: ma_shift +4

ma_shift = -4: ma_shift -4

代码方面,当轮询iMA()并将ma_shift设置为4时,例如

double iMA("EURUSD", PERIOD_H1, 8, 4, MODE_SMA, PRICE_CLOSE, 0)
Run Code Online (Sandbox Code Playgroud)

你会得到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));
}
Run Code Online (Sandbox Code Playgroud)

iMA()函数中的最后一个'shift'参数会移动用于计算的周期,并且只能是+ ve编号.-ve号将要求将来不存在的时段.您可以尝试在上面的文本指示器中添加-ve数字,以查看您获得的内容.(0.00000)如上所述,指标不允许编辑此参数,只是因为它们实际上是相同的.

double iMA("EURUSD", PERIOD_H1, 8, 4, MODE_SMA, PRICE_CLOSE, 0)
Run Code Online (Sandbox Code Playgroud)

与...一样

double iMA("EURUSD", PERIOD_H1, 8, 0, MODE_SMA, PRICE_CLOSE, 4)
Run Code Online (Sandbox Code Playgroud)

那为什么呢?最有可能作为其他指标的标准化,例如http://docs.mql4.com/indicators/iAlligator ,其中'shift'参数是一个总体确定器,用于计算从哪个时间段开始,并且单独的jaw_shift,teeth_shift,lips_shift是独立的参数以图形方式移动绘制的线条.