Как в индикаторе получить значение другого индикатора с младшего таймфрейма
Показано с 1 по 2 из 2

Тема: Как в индикаторе получить значение другого индикатора с младшего таймфрейма

  1. #1

    Регистрация
    17.02.2019
    Сообщений
    1
    Благодарности
    Получено: 0
    Отправлено: 0

    Как в индикаторе получить значение другого индикатора с младшего таймфрейма

    Все привет! Как правильно считывать показания МА младшего ТФ (М1) на текущем ТФ(к примеру на Н1) внутри бара? т.е нужно в режиме онлайн видеть изменения МА внутри свечи Н1. В приведенном ниже коде мы видим показания МА только на начало нового бара старшего ТФ. Есть кое какие идеи по этому поводу - но получается очень громоздкий код). Интересует как это правильно делается? Спасибо!
    Код:
    //+------------------------------------------------------------------+
    //|                                                          Ma.mq5  |
    //|                        Copyright 2018, MetaQuotes Software Corp. |
    //|                                             https://www.mql5.com |
    //+------------------------------------------------------------------+
    #property copyright "Copyright 2018, MetaQuotes Software Corp."
    #property link      "https://www.mql5.com"
    #property version   "1.00"
    #property indicator_chart_window
    #property indicator_buffers 1
    #property indicator_plots   1
    //--- plot Ma
    #property indicator_label1  "Ma minute"
    #property indicator_type1   DRAW_LINE
    #property indicator_color1  clrRed
    #property indicator_style1  STYLE_SOLID
    #property indicator_width1  1
    //--- indicator buffers
    double         MaBuffer[];
    //--- MA handles
    int                      MaHandle;
    
    double Ma[1];
    //+------------------------------------------------------------------+
    //| Custom indicator initialization function                         |
    //+------------------------------------------------------------------+
    int OnInit()
      {
    //--- indicator buffers mapping
       SetIndexBuffer(0,MaBuffer,INDICATOR_DATA);
       MaHandle=iMA(NULL,PERIOD_M1,12,0,MODE_EMA,PRICE_CLOSE);
       if(MaHandle==INVALID_HANDLE)
         {
          Print("Invalid handle of Ma indicator");
          return(-1);
         }
    //---
       return(INIT_SUCCEEDED);
      }
    //+------------------------------------------------------------------+
    //| Custom indicator iteration function                              |
    //+------------------------------------------------------------------+
    int OnCalculate(const int rates_total,
                    const int prev_calculated,
                    const datetime &time[],
                    const double &open[],
                    const double &high[],
                    const double &low[],
                    const double &close[],
                    const long &tick_volume[],
                    const long &volume[],
                    const int &spread[])
      {
    //---
       int calculated=BarsCalculated(MaHandle);
       if(calculated<0)
         {
          Print("Not all data of MaHandle is calculated (",calculated,"bars ). Error",GetLastError());
          return(0);
         }
       
       int limit;
       if(prev_calculated==0)
          limit=0;
       else limit=prev_calculated-1;
    //--- calculate Ma
       for(int i=limit;i<rates_total && !IsStopped();i++)
         {
          CopyBuffer(MaHandle,0,time[i],1,Ma);
          MaBuffer[i]=Ma[0];
         }
    //--- return value of prev_calculated for next call
       return(rates_total);
      }
    //+------------------------------------------------------------------+

    Вы не можете благодарить!

  2. #2
    Эксперт
    Регистрация
    16.08.2012
    Адрес
    Челябинск
    Сообщений
    1,899
    Благодарности
    Получено: 685
    Отправлено: 73
    Цитата Сообщение от Tango1 Посмотреть сообщение
    Есть кое какие идеи по этому поводу
    Т.к. в H1 60 баров М1, то увидеть линию МА М1 в размер одного бара не представляется принципиально возможным! Чтобы увидеть МА М1 на H1 нужно показывать линию в отдельном окне для этого #property indicator_chart_window нужно заменить на #property indicator_separate_window.

    Вы не можете благодарить!
    Для заказа кода, напишите в личку - я отвечу на ваше предложение.

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •