【问题标题】:Getting the Max and min price range for a chart ADX using MQL5使用 MQL5 获取图表 ADX 的最高和最低价格范围
【发布时间】:2018-04-04 19:33:28
【问题描述】:

我尝试了以下方法:

adx_output = iADX(_Symbol,TimePeriod,Candles_for_adx);
Print(ChartGetDouble(0,CHART_PRICE_MAX,2));
Print(ChartGetDouble(0,CHART_PRICE_MIN,2));
Print(ChartGetDouble(0,CHART_POINTS_PER_BAR,2));

但上面的代码为我提供了当前或基于刻度的时间序列的中间值。我想访问以前蜡烛的范围。但找不到任何有用的东西。
请让我知道对此问题的建议。

【问题讨论】:

    标签: mql5 metatrader5


    【解决方案1】:

    你没有检查正确的值

    嗯,
    使用 MetaTrader 的 GUI 图表的属性 { CHART_PRICE_MIN, CHART_PRICE_MAX } 是可能的,但图表的布局由 aPriceDOMAIN 事件 ( QUOTE-s ) 和一些可配置选项控制,而不是由 ADX 技术指标值本身控制,因此,从 GUI 状态接收到的此类检索到的数字几乎与实际寻找的 { min, MAX }-ADX 值无关。

    方法:

    • 一种智能但复杂的方法是创建一个 CustomIndicator 或一个类,执行此确切的服务。

    • 一种简单但实用的方法是检查并重新检查所需的iADX()-{ MAIN, +DI, -DI } 值:


    /* -----------------------------------------------//
    int  iADX(                                        // MQL5-call-inteface:
               string           symbol,               //      symbol name
               ENUM_TIMEFRAMES  period,               //      period
               int              adx_period            //      averaging period
               );
    */
    
    #define currentChartID         0
    #define currentChartMainWINDOW 0
    
    int    nBARsVISIBLE = ChartGetInteger( currentChartID, CHART_VISIBLE_BARS,
                                           currentChartMainWINDOW
                                           ); 
    double iADX_VISIBLE[nBARsVISIBLE];
    double iADX_VISIBLE_min,
           iADX_VISIBLE_MAX;
    int    iADX_IndicatorHANDLE = iADX( _Symbol,
                                         TimePeriod,
                                         Candles_for_adx
                                         );
    /* -----------------------------------------------//
    int  CopyBuffer(                                  // MQL5-call-inteface:
                      int       indicator_handle,     // indicator handle
                      int       buffer_num,           // indicator buffer number
                      int       start_pos,            // start position
                      int       count,                // amount to copy
                      double    buffer[]              // target array to copy
                      );
    */
    int RetCODE = CopyBuffer( iADX_IndicatorHANDLE,
                              MODE_MAIN,              // { 0: MODE_MAIN | 1: MODE_PLUSDI | 2: MODE_MINUSDI }
                              0,
                              nBARsVISIBLE,
                              iADX_VISIBLE
                              );
     if ( RetCODE == -1 ) {...}
     else {
           iADX_VISIBLE_min = iADX_VISIBLE[ ArrayMinimum( iADX_VISIBLE ) ];
           iADX_VISIBLE_MAX = iADX_VISIBLE[ ArrayMaximum( iADX_VISIBLE ) ];
           ...
     }
    

    鉴于last comment

    嗯,这可能是我问题的答案,但是先生,我想要图表限制而不是 ADX 最小值最大值。我可以稍后计算它,但目前想要有图形限制。我正在尝试使用 ADX 图进行一些实验。 – Jaffer Wilson1 hour ago

       #define currentChartID          0       // adapt to fit your current setup
       #define currentChartSubWinID    0       // adapt to fit your current setup
    
       double priceMin = ChartGetDouble( currentChartID,
                                         CHART_PRICE_MIN,
                                         currentChartSubWinID
                                         );
       double priceMax = ChartGetDouble( currentChartID,
                                         CHART_PRICE_MAX,
                                         currentChartSubWinID
                                         );
       Print( "INF:: Chart(", currentChartID, ":", currentChartSubWinID, ").CHART_PRICE_MAX = ", priceMin );
       Print( "INF:: Chart(", currentChartID, ":", currentChartSubWinID, ").CHART_PRICE_MAX = ", priceMax );
    

    【讨论】:

    • 实际上,我正在尝试访问图表 Y 轴值的最小值和最大值。我猜上面的代码没有这样做。我还是会检查的。
    • 对不起,如果误解了您的问题叙述。图表本身会自动格式化。此代码试图找到您在上面的问题中发布的 ADX 指标的 { min, MAX } 值。指标线很容易超出当前图表限制,因此检查图表-(min,MAX) 不会反映同一可见周期的 ADX-{min,MAX}-值。没关系。
    • 嗯,这可能是我的问题的答案,但先生,我想要图表限制而不是 ADX 最小值最大值。我可以稍后计算它,但目前想要有图形限制。我正在尝试使用 ADX 图进行一些实验。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    • 1970-01-01
    • 2016-01-26
    • 2013-07-21
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    相关资源
    最近更新 更多