【发布时间】:2019-02-17 16:38:03
【问题描述】:
谁能解释一下iMA函数的两个shift参数有什么区别?
根据MQL4文档:
ma_shift- 移动平均线移动。指标线偏移按时间范围与图表相关。
shift- 从指标缓冲区获取的值的索引 (相对于当前柱移动给定的周期数之前)
标准 MA 指标采用哪些参数?
【问题讨论】:
标签: mql4
谁能解释一下iMA函数的两个shift参数有什么区别?
根据MQL4文档:
ma_shift- 移动平均线移动。指标线偏移按时间范围与图表相关。
shift- 从指标缓冲区获取的值的索引 (相对于当前柱移动给定的周期数之前)
标准 MA 指标采用哪些参数?
【问题讨论】:
标签: mql4
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' 参数是计算周期的总体决定因素,而单独的jaw_shift、tooth_shift、lips_shift 是用于以图形方式移动绘制的线条的独立参数。
【讨论】:
“ma_shift”是显示的“线”的图形移位。这仅与显示数组值有关。与编码 EAs 没有太大关系。
"shift" 是元素的值,被计算在内。默认情况下,偏移值为零(零柱(最后一个柱))。 MQL4 中的任何条形变化都是从最后一个条形向后移动。
示例:
你比较两个SMA。一种是 20 周期/0 班,另一种是 10 周期/4 班。 SMAs 之间的每次比较都将在数组中最后一个柱上的 20 个周期 SMA 和阵列中的 10 个周期 SMA 4 个周期之间进行。
在数字中...
假设最后一个栏中的 20 SMA 是 1.1000。
假设 10 SMA 如下:1.1050 位于 0 柱(最后一根柱)1.1000 位于 1 柱(前一根柱)1.0950 位于 2 柱(后两根柱) )1.0900 上 3 条(后部 3 条)
结果:
是20SMA( shift0 ) > 10SMA( shift0 ) => 否
是20SMA( shift0 ) > 10SMA( shift3 ) => 是
总结。 MA_shift 是向前/向后移动线。 shift 是一个 barvalue 向后移动(从 0/最后一个 bar)。
意思是,一个 4 的 shift 代表了 MA 值向后 4 个小节。出于算法构造的目的,此选项仅在编码中可用。 ma_shift 与 EAs 无关,因为当计算机计算 MA 交叉时,它使用数组值,而不是线本身。
祝你好运!
【讨论】: