Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 991

 
kopeyka2:

Ок. Спасибо за ответ 


Исправил сам себя 

Думал может так

Но если Вы меня переубедите, что можно по первому способу получить значение технического индикатора (iMA) , подожду. Но пока непонимаю… 

Я же Выше показал, что число баров на разных TF разное, и соответственно запрашивать надо разное число баров для копирования, в зависимости от ТФ на котором должен считаться индикатор. Проверяйте через BarsCalculated() число посчитанных индикатором баров и от этого исходите, вот кусок примера такой реализации для MTF

//+------------------------------------------------------------------+
//| 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[])
  {
   if(rates_total==prev_calculated) return(rates_total);
//---
   int    i;
   double diff;
//--- check for rates count
   if(rates_total<=ExtPeriodRSI)
      return(0);
//---
   if(TF!=PERIOD_CURRENT)
   {
      if(handle==INVALID_HANDLE)
        {
         handle=iCustom(Symbol(),TF,ind_name,Variant,RSIPeriod,Levl_Up,Levl_Down,PERIOD_CURRENT);
         return(0);
        }
      else
        {
         int bars_calculated=BarsCalculated(handle);
                  //Print("Начнем расчет - " , bars_calculated);
         if(bars_calculated<=0) return(0);
         if(Bars(Symbol(),TF)!=bars_calculated)
           {
            for(i=rates_total-prev_calculated-1;i>=0;i--)
              {
               Delta[i]=0.0;   
              }
            return(prev_calculated);
           } 
        }
 
Aleksey Vyazmikin:

Я же Выше показал, что число баров на разных TF разное, и соответственно запрашивать надо разное число баров для копирования, в зависимости от ТФ на котором должен считаться индикатор. Проверяйте через BarsCalculated() число посчитанных индикатором баров и от этого исходите, вот кусок примера такой реализации для MTF

Спасибо. Попробую. Но как указал ранее массив пустой вообще. Сдиги я по массиву делал руками. Он пустой весь
 
kopeyka2:
Спасибо. Попробую. Но как указал ранее массив пустой вообще. Сдиги я по массиву делал руками. Он пустой весь
Вы игнорируете что обязательно нужно дождаться погрузку данных с иного таймфрейма? Примеры я приводил. В показанном индикаторе данные берутся только со старших таймфреймов. Если задать тф меньше или равным текущему, то данные берутся с текущего. Все это есть в коде, но поглядеть вы не удосужились. Зато делаете заявления.
 
Artyom Trishkin:
Вы игнорируете что обязательно нужно дождаться погрузку данных с иного таймфрейма? Примеры я приводил. В показанном индикаторе данные берутся только со старших таймфреймов. Если задать тф меньше или равным текущему, то данные берутся с текущего. Все это есть в коде, но поглядеть вы не удосужились. Зато делаете заявления.
Не только смотрел, а разобрал Ваш индикатор по винтику. Вот мысль по поводу задержки передачи данных была с самого начала. И сразу, с первого просмотра, увидел у Вас Timer. Поищу в этом направлении
 
kopeyka2:
Не только смотрел, а разобрал Ваш индикатор по винтику. Вот мысль по поводу задержки передачи данных была с самого начала. И сразу, с первого просмотра, увидел у Вас Timer. Поищу в этом направлении
Последний цикл с преобразованием данных в текущий тф закоментируйте, и в любой графический буфер передайте данные от расчётный буферов МАшек, и увидите на графике то, что хотите увидеть. 
 

пока так 

другой (не родной) таймфрейм 


 
kopeyka2:

пока так 

другой (не родной) таймфрейм 


Вы нарочно закоментировали строку возврата в случае, если данные не получены? Зачем? Если открутить колеса и говорить что мотор гудит, руль поворачивается, но машина не едет, а значит не исправна, это как-то жёстко. 
 
kopeyka2:
Спасибо. Попробую. Но как указал ранее массив пустой вообще. Сдиги я по массиву делал руками. Он пустой весь

Ранее я Вам давал кусок кода Вашего индикатора с принтом, Вы его пробовали скопировать? В логе прям ничего не выводится, не ошибки не цифры?

 
kopeyka2:

пока так 

другой (не родной) таймфрейм 


А общем, помощь вы игнорируете. Я выхожу из диалога. Дальше без меня - все данные для правильной работы кода я дал, но слышать вы не желаете, и делаете что-то по-своему. Время жаль.
 
Artyom Trishkin:
А общем, помощь вы игнорируете. Я выхожу из диалога. Дальше без меня - все данные для правильной работы кода я дал, но слышать вы не желаете, и делаете что-то по-своему. Время жаль.

Спасибо, что уделили внимание и потратили время.... Наверное до меня еще не дошло что то... Про колеса и мотор согласен.

Скорее всего откажусь от хэндэла и рассчитаю среднее значение по iClose за период средней.