Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Yurij Izyumov
54052
Yurij Izyumov  

МТ5 билд 1875

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

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

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

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

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

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

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

Благодарю

Sergey Savinkin
1822
Sergey Savinkin  
Yurij Izyumov:

МТ5 билд 1875

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

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

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

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

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

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

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

Благодарю

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

Yurij Izyumov
54052
Yurij Izyumov  
Sergey Savinkin:

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

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

Sergey Savinkin
1822
Sergey Savinkin  
Yurij Izyumov:

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

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

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

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

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

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

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

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

Sergey Savinkin
1822
Sergey Savinkin  
Yurij Izyumov:

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

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

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

Yurij Izyumov
54052
Yurij Izyumov  
Sergey Savinkin:

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

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


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

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


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

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий