Ошибки, баги, вопросы - страница 3034

 

Сегодня на страницах работ фриланса появилась ошибка:

Браузер хром. С чем это связано?

 
Aleksey Vyazmikin:

Я правильно понимаю, что если советник, работающий на M1, использует индикатор на M1(или любом ином ТФ?), который берет данные с верхнего ТФ, то на первом тике нового бара он не сможет вернуть актуальное значение в любом случае, так как очередь до расчета верхнего ТФ дойдет через n тиков?


Вообще-то OnTick не синхронизирован с OnCalculate по одному и тому же символу. Теоретически OnTick может  запаздать и к его началу уже все индики на всех ТФ будут рассчитаны?

 
Slava:

С другого таймфрейма возьмутся те данные, которые готовы на данный момент. То есть, в выходной все данные будут прекрасно синхронизированы

Почему тогда индикатор не может их получить при первом запросе?

Как сделать нормальный мульти-ТФ (а в идеале — и мульти-символьный) индикатор без применения таймера?

 
Andrey Khatimlianskii:

Почему тогда индикатор не может их получить при первом запросе?

Как сделать нормальный мульти-ТФ (а в идеале — и мульти-символьный) индикатор без применения таймера?

+

переживаю за то, что задержки получения сигнала советником будут неизбежны при текущей архитектуре, к сожалению

 
Здравствуйте 

При оптимизации с использованием Mql Cloud появляется ошибка: 

2021.05.31 18:24:57.348 MQL5 Cloud Europe pass 34 tested with error "critical runtime error 0 in OnInit function (error code 0, module Experts\Advisors\123 expert.ex5, file 65535, line 1, col 1)" in 0:00:00.001 (PR 274)


подскажите пожалуйста в чем может быть проблема?  

При оптимизации без Mql Cloud все работает. Проблема появилась 29.05. До этого все было ок

 
Marat Bayburin:
Здравствуйте 

При оптимизации с использованием Mql Cloud появляется ошибка: 

2021.05.31 18:24:57.348 MQL5 Cloud Europe pass 34 tested with error "critical runtime error 0 in OnInit function (error code 0, module Experts\Advisors\123 expert.ex5, file 65535, line 1, col 1)" in 0:00:00.001 (PR 274)


подскажите пожалуйста в чем может быть проблема?  

При оптимизации без Mql Cloud все работает. Проблема появилась 29.05. До этого все было ок

Мне кажется проблема в билде компилятора. У меня такие же ошибки выскакивают. 
Т.е. мы компмлировали новым билдом , а агенты ещё на старых,.... как то так. 
 
Marat Baiburin:
То есть просто ждать когда агенты обновятся? 

Если это ошибки из-за разных билдов агентов и Вашего настольного ПК - то, да, ждать. У меня например агенты всё ещё 2949, на 2950 не обновились.

 
Andrey Khatimlianskii:

Почему тогда индикатор не может их получить при первом запросе?

Как сделать нормальный мульти-ТФ (а в идеале — и мульти-символьный) индикатор без применения таймера?

При первом запросе индикатор может не получить данные со своего символа но другого таймфрейма только по одной причине - нужная таймсерия ещё не построена или уже уничтожена по прошествии какого-то времени, когда не было обращений.

После неудачного запроса просто пошлите своему графику команду на обновление и тут же завершайте работу OnCalculate. Гарантированно будет вызвана OnCalculate и гарантированно нужные таймсерии к этому моменту будут подготовлены

Документация по MQL5: Операции с графиками / ChartSetSymbolPeriod
Документация по MQL5: Операции с графиками / ChartSetSymbolPeriod
  • www.mql5.com
ChartSetSymbolPeriod - Операции с графиками - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Slava:

При первом запросе индикатор может не получить данные со своего символа но другого таймфрейма только по одной причине - нужная таймсерия ещё не построена или уже уничтожена по прошествии какого-то времени, когда не было обращений.

После неудачного запроса просто пошлите своему графику команду на обновление и тут же завершайте работу OnCalculate.
Гарантированно будет вызвана OnCalculate и гарантированно нужные таймсерии к этому моменту будут подготовлены


Подскажите, на первом вызове индикатора, к примеру расчёт пробегается в цикле по всем данным.

//Расчёт количества просчитываемых баров
int limit = rates_total-prev_calculated;
   
//Если первый запуск
if(limit > 1)
{
   //какая нибудь инициализация
   
}

//================================================================
for(int i=limit; i>=0 && !IsStopped(); i--)
{
   ...  

И если в этом цикле был неудачный запрос, что возвращать в return ?
limit+1 на котором был неудачный запрос?
Или что? Что то не могу понять этот момент.

 
Roman:


Подскажите, на первом вызове индикатора, к примеру расчёт пробегается в цикле по всем данным.

И если в этом цикле был неудачный запрос, что возвращать в return ?
limit+1 на котором был неудачный запрос?
Или что? Что то не могу понять этот момент.

Самостоятельно проверить не можете?