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

 

wBarShift работает со всеми тф? При первом переключении на М1 wBarShift показывает только 0, но если переключиться с М1 на какой-нибудь тф и обратно на М1, wBarShift показывает верный индекс.

--

Увидел следующее: если наводить курсор мышки на Toolbox и обратно на график, будет ошибка

2024.04.29 18:49:17.932 TestBarShift (EURUSD,H1)        Error - iBarShift = 6209, fBarShift = 6210

и на графике выводы


 
Andrei Iakovlev #:

wBarShift работает со всеми тф? При первом переключении на М1 wBarShift показывает только 0, но если переключиться с М1 на какой-нибудь тф и обратно на М1, wBarShift показывает верный индекс.

--

Увидел следующее: если наводить курсор мышки на Toolbox и обратно на график, будет ошибка

и на графике выводы


сам давно не использую  wBarShift, т.к. для нее всегда нужен свежий массив времени открытия баров. Эту функцию целесообразно использовать только при поиске баров в пределах видимого окна, т.е. для всяких GUI. Если массива не хватает то обращается к стандартной функции iBarShift
Используйте fBarShift. Лично я ее использую только в случае, если iBarShift вернула -1

 
Nikolai Semko #:

сам давно не использую  wBarShift, т.к. для нее всегда нужен свежий массив времени открытия баров. Эту функцию целесообразно использовать только при поиске баров в пределах видимого окна, т.е. для всяких GUI. Если массива не хватает то обращается к стандартной функции iBarShift
Используйте fBarShift. Лично я ее использую только в случае, если iBarShift вернула -1

Понятно, буду использовать fBarShift. В настоящее время, когда iBarShift возвращает -1, я включаю EventSetMillisecondTimer и жду, пока iBarShift вернёт не -1, попробую альтернативу, спасибо.

А из-за чего ошибка и разные значения между iBarShift и fBarShift в моём сообщении выше?

 
Carl Schreiber # :

Is there an explanation for this?

During the period when the US has already switched to daylight saving time, but the EU has not yet, the weekends in the MQ demo account data are 1 hour longer, and the next week's currency session is 1 hour shorter?

Is there an explanation for this?

In the period when the USA has already changed to summer time, but the EU has not yet, is the weekend break in the MQ demo account data 1 hour longer and the FX session of the following week 1 hour shorter?

Weekly sessions start at 00:00 but end at 22:59 instead of 23:59?

The sessions of the week start at 00:00 but end at 22:59 and not at 23:59??

PS. This applies to MQ-Demo, RoboForex-Demo and RoboForex-Real! / This is the case with MQ-Demo, RoboForex-Demo and RoboForex-Real!

https://www.mql5.com/en/forum/463955#comment_53124920
 
Andrei Iakovlev #:

Понятно, буду использовать fBarShift. В настоящее время, когда iBarShift возвращает -1, я включаю EventSetMillisecondTimer и жду, пока iBarShift вернёт не -1, попробую альтернативу, спасибо.

А из-за чего ошибка и разные значения между iBarShift и fBarShift в моём сообщении выше?

Не знаю. Надо смотреть и дебажить код. Возможно проблемы с закачкой datetime массивов во время. Это очень специфическая функция для специфических задач, и возвращает она double.
Повторюсь, чо wBarShift зависит от актуального состояния массива времени. А при переключении ТФ может происходить что угодно             
 
Nikolai Semko #:
Повторюсь, чо wBarShift зависит

Почему Вы говорите про wBarShift? Я спрашивал про iBarShift и fBarShift, 2-ая часть этого сообщения: https://www.mql5.com/ru/forum/1111/page3520#comment_53212967

 
Andrei Iakovlev #:

Почему Вы говорите про wBarShift? Я спрашивал про iBarShift и fBarShift, 2-ая часть этого сообщения: https://www.mql5.com/ru/forum/1111/page3520#comment_53212967

а, ну это вина выхода из окна указателя мыши.
правильнее будет добавить проверку на выход указателя миши из окна, и ошибок не будет

if(id==CHARTEVENT_MOUSE_MOVE)
     {
      if (lparam<0 || lparam>=W.Width || dparam<0 || dparam>=W.Height) return;
      jj++;
      double y;
      datetime t;
      int win=0;
      ChartXYToTimePrice(0,(int)lparam,(int)dparam,win,t,y);
      Canv.Erase(0x00FFFFFF); 

Как вижу и wBarShift работает корректно при переключении ТФ. Но, не зря эта функция интегрирована в iCanvas, т.к. ее использование оправдано с барами в окне. Получается неплохой выйгрыш в производительности, если использовать это для управления GUI



Файлы:
iCanvas_CB.mqh  73 kb
iBars.mqh  21 kb
 
Carl Schreiber #:

Есть ли этому объяснение?

В период, когда США уже перешли на летнее время, а ЕС еще нет, выходные дни в данных демо-счета MQ длиннее на 1 час, а валютная сессия следующей недели на 1 час короче?

Is there an explanation for this?

In the period when the USA has already changed to summer time, but the EU has not yet, is the weekend break in the MQ demo account data 1 hour longer and the FX session of the following week 1 hour shorter?

Сеансы недели начинаются в 00:00, но заканчиваются в 22:59, а не в 23:59?

The sessions of the week start at 00:00 but end at 22:59 and not at 23:59??

PS. Это касается MQ-Demo, RoboForex-Demo и RoboForex-Real! / This is the case with MQ-Demo, RoboForex-Demo and RoboForex-Real!

У LiteFinance начало в 23:00 в Воскресенье. /  At LiteFinance the beginning at 23:00 on Sunday.

Зависит от брокера.

 

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


 

Тут открыт H1 а пытался брать данные с M30.

 
Andrei Sokolov # :

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


 

Тут открыт H1 а пытался брать данные с M30.

Все в норме, работает согласно документации.

https://www.mql5.com/ru/docs/runtime/testing#ticks

Документация по MQL5: Программы MQL5 / Тестирование торговых стратегий
Документация по MQL5: Программы MQL5 / Тестирование торговых стратегий
  • www.mql5.com
Идея автоматической торговли привлекательна тем, что торговый робот может без устали работать 24 часа в сутки и семь дней в неделю. Робот не знает...
Причина обращения: