Новая версия платформы MetaTrader 5 build 3510: улучшения веб-терминала - страница 2

 
Тестер стратегий MetaTrader 5: ошибки, баги, предложения по улучшению работы
Тестер стратегий MetaTrader 5: ошибки, баги, предложения по улучшению работы
  • 2022.11.11
  • www.mql5.com
В настоящий момент тестер стратегий MetaTrader 5 подвергается глубокой переработки командой MQ...
 
traveller00 #:
Возможно, не совсем в нужный топик, но этот хотя бы точно читается.
В календаре https://www.mql5.com/ru/economic-calendar стоят
Решение Резервного Банка Новой Зеландии по процентной ставке
и
Пресс-конференция Резервного Банка Новой Зеландии
Как на 23, так и на 24 ноября. Где-то явно лишнее, похоже 23.

Была ошибка в парсинге раписания. Сегодня выложим, собыия на 24 будут удалены. Спасибо за внимательность.

 

Столкнулся с некорректной работой времени в тестере стратегий.

Сделал для демонстрации проблемы простейшего робота, по порядку. Тестер и его настройка.


код робота TestDate.mq5

int OnInit()
  {
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   int rates_total=iBars(_Symbol,0);
   datetime tmDate=iTime(_Symbol,PERIOD_D1,30);
   datetime   tmDateFirst=iTime(_Symbol,0,rates_total-1);
   Comment(TimeToString(tmDate)," ",TimeToString(tmDateFirst));
  }

Из логики мы должны получить в tmDate дату -30 дней ?

Вторая дата глубина истории. 

Вывожу простым способом через Comment

Получаем:

Тестер выдает дату на 1 год назад, вместо 30 дней. Это как так? iTime неверно работает?


Запускаем на графике. Сегодня 21.11.2022

Тут наблюдаем, что 30 дней отмотано корректно.

 
Alexandr Gavrilin #:

Столкнулся с некорректной работой времени в тестере стратегий.

Сделал для демонстрации проблемы простейшего робота, по порядку. Тестер и его настройка.


код робота TestDate.mq5

Из логики мы должны получить в tmDate дату -30 дней ?

Вторая дата глубина истории. 

Вывожу простым способом через Comment

Получаем:

Тестер выдает дату на 1 год назад, вместо 30 дней. Это как так? iTime неверно работает?



Вы должны получить дату 30-го справа бара. А история у вас закончилась в январе 2022 года, а если отсчитать 30 дневных баров, то аккурат в конец ноября 2021 попадёте.

 
PapaYozh #:


Вы должны получить дату 30-го справа бара. А история у вас закончилась в январе 2022 года, а если отсчитать 30 дневных баров, то аккурат в конец ноября 2021 попадёте.

вы не правы. 

счет баров идет справа - налево.  .. 3 2 1 0

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

А тестер получает дату неправильную, 30 дней от 1 января 2022, он получает 22 ноября 2021. Где тут 30 дней между этими датами?  От по факту от текущей даты вычел 30 дней (от даты текущего времени), а нужно от даты из тестера вычитать. На факт неверно работающая функция iTime в мт5

 
Alexandr Gavrilin #:

вы не правы. 

счет баров идет справа - налево.  .. 3 2 1 0

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

А тестер получает дату неправильную, 30 дней от 1 января 2022, он получает 22 ноября 2021. Где тут 30 дней между этими датами?  От по факту от текущей даты вычел 30 дней (от даты текущего времени), а нужно от даты из тестера вычитать. На факт неверно работающая функция iTime в мт5

Вы запустили тест в январе 2022 - отняли 30 дней и вышел ноябрь 2021 - где ошибка то?

 
Alexandr Gavrilin #:

А тестер получает дату неправильную, 30 дней от 1 января 2022, он получает 22 ноября 2021. Где тут 30 дней между этими датами?  От по факту от текущей даты вычел 30 дней (от даты текущего времени), а нужно от даты из тестера вычитать. На факт неверно работающая функция iTime в мт5


Не 30 дней, а 30 баров. Если в какой-то день не было торгов, то и бара нет.
 
Aleksey Vyazmikin #:

Вы запустили тест в январе 2022 - отняли 30 дней и вышел ноябрь 2021 - где ошибка то?

Хорошо пойдем другим путем, показывает 

22.11.2021 +30 дней ? какую дату получаем? 

Если с математикой все ок, то 22.12.2021  Где потеряли еще 9 дней? До меня дошло, она же не календарный день выдает ((( а в барах с пропусками... сори.

 
Alexandr Gavrilin #:

Хорошо пойдем другим путем, показывает 

22.11.2021 +30 дней ? какую дату получаем? 

Если с математикой все ок, то 22.12.2021  Где потеряли еще 9 дней?

Так показывает дату баров, а не календарную дату.

 
Aleksey Vyazmikin #:

Вы запустили тест в январе 2022 - отняли 30 дней и вышел ноябрь 2021 - где ошибка то?

От первого января - 30 дней будет 2 декабря включительно. Видимо бары не дни, и выходные и рождество в барах не отражаются, поэтому плюсуются еще 8 или 9 дней без баров.