有人可以解释一下示例中shift
函数的 iMA
参数之间有什么区别吗?
根据MQL4
文档:
ma_shift
- 移动平均线转换。指标线偏移与时间框架相关。
shift
- 从指标缓冲区获取的值的索引 (相对于当前柱的转移给定的前一段时间)
标准MA指标采用哪些参数?
答案 0 :(得分:14)
double iMA(string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int 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'参数是一个总体确定器,用于计算哪些周期,而单独的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>数量......
可以说最后一个栏中的SMA
为1.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_shift
与EA
无关,因为当计算机计算MA
个十字时,它会使用数组值,而不是行本身。
祝你好运!