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

时间:2013-08-19 09:08:40

标签: mql4

有人可以解释一下示例中shift函数的 iMA 参数之间有什么区别吗?
根据MQL4文档:

  

ma_shift - 移动平均线转换。指标线偏移与时间框架相关。

     

shift - 从指标缓冲区获取的值的索引                   (相对于当前柱的转移给定的前一段时间)

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

2 个答案:

答案 0 :(得分:14)

double iMA(string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift)

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

Indicator

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

Custom Indicator

任何一个指标都没有允许你修改最后一个'shift'参数。

comparison


图形上,对于标准指标“移动平均线”,更改“移位”字段会将MA线向右移动(带有+ ve数字),向左移动(带有-ve数字)移动的周期数由整数值。

ma_shift = 0: default

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)

您将获得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'参数是一个总体确定器,用于计算哪些周期,而单独的jaw_shift,teeth_shift,lips_shift是独立的参数,以图形方式移动绘制的线。

答案 1 :(得分:1)

ma_shift ”是显示的“行”的图形转换。这仅与显示数组值有关。与编码 EA 的编码无关。

shift ”是元素的值,用于计算。默认情况下,shift的值为零(零条(最后一个条))。 MQL4 中条形图的任何变化均为,从最后一个条形向后。

示例
你比较两个SMA。一个是20个周期/ 0个班次,另一个是10个周期/ 4个班次。 SMA之间的每次比较都将在数组中最后一个条形的20个句点SMA和数组中的10个句点SMA 4个句点之间完成。
< strong>数量......

可以说最后一个栏中的SMA1.1000。{。} 可以说10 SMA如下:
0栏上的1.1050(最后一栏)
1栏上的1.1000(上一个栏)
{2}栏上的1.0950(两个酒吧后面)
3栏上的1.0900(三个酒吧后面)

<强>结果:
20SMA( shift0 ) > 10SMA( shift0 ) =&gt; NO
20SMA( shift0 ) > 10SMA( shift3 ) =&gt;是

总结。 MA_shift是前进/后退线的移位。 shift是向后移动的barvalue(从0 / last栏开始)。

意思是,4班代表{4}的MA值。出于算法构造的目的,此选项仅在编码中可用。 ma_shiftEA无关,因为当计算机计算MA个十字时,它会使用数组值,而不是行本身。

祝你好运!