【问题标题】:What do the shift parameters of iMA() function mean?iMA() 函数的移位参数是什么意思?
【发布时间】:2019-02-17 16:38:03
【问题描述】:

谁能解释一下iMA函数的两个shift参数有什么区别?
根据MQL4文档:

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

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

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

【问题讨论】:

    标签: mql4


    【解决方案1】:
    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 是用于以图形方式移动绘制的线条的独立参数。

    【讨论】:

      【解决方案2】:

      “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 交叉时,它使用数组值,而不是线本身。

      祝你好运!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-09
        • 1970-01-01
        • 2020-05-15
        相关资源
        最近更新 更多