Пропадает индикатор MT5 при синхронизации данных

 

МТ5 билд 1875

суть такая ставлю идикатор на м1 к примеру, он собирает данные с м5, м15, h1, h4

при появлении новой свечи на м5 к примеру - в первый тик , получается что это первый тик везде и на м1 и везде, и в первый тик получается что индикатор для м5, м15, h1 , h4 еще не посчитан, я отправляю на пересчет return(0) и жду след. тика типа

на след. тике он уже посчитан и выдается значение со всех ТФ

НО, но в момент вот этого отсутствия посчитанных данных с других ТФ , индикатор полностью гаснет, пропадает с графика до момента след. типа - пересчета

можно ли как то это излечить, 

индикатор пересчитывает только последние бары и по этому для меня не понятно какого хрена он пропадает абсолютно весь - 4 линии данных в других ТФ

как можно грамотно синхронизировать данные индикаторов с разных ТФ чтоб индикатор не пропадал?

Благодарю

 
Yurij Izyumov:

МТ5 билд 1875

суть такая ставлю идикатор на м1 к примеру, он собирает данные с м5, м15, h1, h4

при появлении новой свечи на м5 к примеру - в первый тик , получается что это первый тик везде и на м1 и везде, и в первый тик получается что индикатор для м5, м15, h1 , h4 еще не посчитан, я отправляю на пересчет return(0) и жду след. тика типа

на след. тике он уже посчитан и выдается значение со всех ТФ

НО, но в момент вот этого отсутствия посчитанных данных с других ТФ , индикатор полностью гаснет, пропадает с графика до момента след. типа - пересчета

можно ли как то это излечить, 

индикатор пересчитывает только последние бары и по этому для меня не понятно какого хрена он пропадает абсолютно весь - 4 линии данных в других ТФ

как можно грамотно синхронизировать данные индикаторов с разных ТФ чтоб индикатор не пропадал?

Благодарю

Почему "весь пропадает" - как раз понятно. При возврате 0 (return(0)), индикатор сбрасывается и пересчитывает все ранее рассчитанные данные. То же самое происходит при изменении данных в истории. Вы индикатору принудительно отправляете сообщение prev_calculate = 0. А вот что с этим делать - большой вопрос. Сейчас сам пишу пост на форуме на эту тему. ))))

 
Sergey Savinkin:

Почему "весь пропадает" - как раз понятно. При возврате 0 (return(0)), индикатор сбрасывается и пересчитывает все ранее рассчитанные данные. То же самое происходит при изменении данных в истории. Вы индикатору принудительно отправляете сообщение prev_calculate = 0. А вот что с этим делать - большой вопрос. Сейчас сам пишу пост на форуме на эту тему. ))))

то есть может надо вернуть не 0, а бары минус посчитанные бары

 
Yurij Izyumov:

то есть может надо вернуть не 0, а бары минус посчитанные бары

Попробуйте. Но нужно точно определить точку, на которую данные посчитаны правильно, и есть история по бОльшим таймфреймам. Хотя, если вас интересует только последний бар, то можно пересчитывать только его. Проверку на наличие истории по бОльшим таймфреймам нужно делать дополнительно.

 
не, не понимаю )))) , так давайте объединим темы ))
 
if(prev_calculated==0){ return(0); }else{ return(rates_total-1); }

пока что так решил, тестирую

 
в итоге последний бар не рисуется до след тика
 
Sergey Savinkin:

Попробуйте. Но нужно точно определить точку, на которую данные посчитаны правильно, и есть история по бОльшим таймфреймам. Хотя, если вас интересует только последний бар, то можно пересчитывать только его. Проверку на наличие истории по бОльшим таймфреймам нужно делать дополнительно.

Если решите поделитесь пожалуйста  )))))

пока что не вижу как еще можно решить без дырки в один тик )

 
Yurij Izyumov:

Если решите поделитесь пожалуйста  )))))

пока что не вижу как еще можно решить без дырки в один тик )

Не достаточно кода. Где у Вас делается проверка на наличие истории по большему таймфрейму?

 
Sergey Savinkin:

Не достаточно кода. Где у Вас делается проверка на наличие истории по большему таймфрейму?

в начале самого индикатора 


   if(BarsCalculated(h1)<Bars(_Symbol,TF1)){  if(prev_calculated==0){ return(0); }else{ return(rates_total-1); } }
 
Yurij Izyumov:

в начале самого индикатора 


Не могу точно сказать, нужно тестить. Но зачем возвращать rates_total-1? Возвращайте rates_total. Но отрисовку индикатора не делайте до получения истории. Можно же заполнять пустыми значениями последний бар, пока вся история по бОльшим таймфреймам не загрузится.

Причина обращения: