Новая версия платформы MetaTrader 5 build 4620: исправления ошибок в MQL5 и новые методы OpenBLAS - страница 19

 
Aleksey Vyazmikin #:

Финам, GAZP, режим тестирования "Каждый тик на основе реальных тиков", на чарте видим нормальные минутные бары, а вот в визуальном режиме бары с одним тиком, и ясно, что всё считается неверно.

Ошибка в платформе или происки брокера?

При этом тики из истории отображаются

В других режимах тестирования та же картина. На иных инструментах бывает нормально. Да и при тестировании за 08.11.2024 так же нормально все рисуется.

Причем такое на любом инструменте, если попытаться закачать более-менее глубокую историю тиков (от месяца). После этого даже текущая история тиков портится.

 
   Здравствуйте, уважаемые разработчики!

   Добавьте пожалуйста горячую клавишу "Отменить выделение всех объектов", чтобы не искать мышкой менюшку+делать два клика чтобы нажать "Отменить выделение всех объектов"! Спасибо!


 

Прилетело обновление, но проблема осталась

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия платформы MetaTrader 5 build 4620: исправления ошибок в MQL5 и новые методы OpenBLAS

Alexey Viktorov, 2024.11.09 13:25

Может кто ответить на такой вопрос:

Параметры компа и терминала

2024.11.09 13:09:09.734 Terminal        MetaTrader 5 x64 build 4668 started for MetaQuotes Ltd.
2024.11.09 13:09:09.734 Terminal        Windows 10 build 19045, 4 x AMD FX-4170 Quad-Core, AVX, 8 / 11 Gb memory, 701 / 953 Gb disk, admin, GMT+3

И вот проблема


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

  printf("TERMINAL_MEMORY_USED = %d",TerminalInfoInteger(TERMINAL_MEMORY_USED));
  return(INIT_SUCCEEDED);

После выхода из инициализации попадаем в OnTimer() где на первой строке поставлена точка останова. И вот что показывает диспетчер…

Но если запустить по f5 на текущих данных, то получаем вот такую картинку.

Получается, что совсем невозможно тестировать советник на исторических данных.

Настройки отладчика



Теперь такой результат


 
Ihor Herasko #:

Причем такое на любом инструменте, если попытаться закачать более-менее глубокую историю тиков (от месяца). После этого даже текущая история тиков портится.

получается это массовая проблема

 
Alexey Viktorov #:

Прилетело обновление, но проблема осталась


Теперь такой результа

Не вижу связи с выводом "невозможно тестировать советник на исторических данных".

Вы смотрите на потребление памяти тестером стратегий:

  • в визуальном режиме, который по факту несет в себе почти весь терминал и требует копий данных
  • на мультивалютных парах, что видно по USDCAD в противовес EURUSD за 4 года
  • на потиковых данных для максимально быстрого доступа и переиспользования
  • ну и конечно кеши данных под все, что можно

Вы считаете, что этой памяти слишком много? Вы неправы.

И нельзя забывать, то тестер между вызовами может находиться в горячем активном состоянии в фоне, ожидая следующей сессии подключения. То есть, он может держать данные прошлой сессии, чтобы сэкономить на повторных обращениях.


С замерами TERMINAL_MEMORY_USED вы явно напутали, печатая в одном месте (OnInit без всех поднятых данных), а отслеживая в другом (OnTimer, где данные уже подняты).

Замеры нужно производить с максимальной точностью и доказательствами. Многократно проверяясь и на чистых данных.

 
Renat Fatkhullin #:

Не вижу связи с выводом "невозможно тестировать советник на исторических данных".

Вы смотрите на потребление памяти тестером стратегий:

  • в визуальном режиме, который по факту несет в себе почти весь терминал и требует копий данных
  • на мультивалютных парах, что видно по USDCAD в противовес EURUSD за 4 года
  • на потиковых данных для максимально быстрого доступа и переиспользования
  • ну и конечно кеши данных под все, что можно

Вы считаете, что этой памяти слишком много? Вы неправы.

И нельзя забывать, то тестер между вызовами может находиться в горячем активном состоянии в фоне, ожидая следующей сессии подключения. То есть, он может держать данные прошлой сессии, чтобы сэкономить на повторных обращениях.


С замерами TERMINAL_MEMORY_USED вы явно напутали, печатая в одном месте (OnInit без всех поднятых данных), а отслеживая в другом (OnTimer, где данные уже подняты).

Замеры нужно производить с максимальной точностью и доказательствами. Многократно проверяясь и на чистых данных.

Если не затруднит, скажите почему при запуске по f5 нет такого потребления памяти.

И почему вы говорите 4 года? Ведь тест запускается с середины 2022… Получается около 2.5 лет всего. И это всего 4 валютных пары. Если включить 1-2, то как-то работает, если больше, то комп просто сходит в ума, ему не хватает памяти. Я понимаю, что комп слабоват, мягко выражаясь, но ………

Ещё может быть важно, перед повторным запуском я закрываю тестер.

 
b4673, столкнулся с отсутствием инлайна по факту.
  bool IsPosition( void ) const
  {
    return(this.Type <= ORDER_TYPE_SELL);
  }

  double GetCalcProfit( void ) const
  {
    return((this.Type <= ORDER_TYPE_SELL) ? (this.ClosePrice - this.OpenPrice) * this.TickValue : 0);
//    return(this.IsPosition() ? (this.ClosePrice - this.OpenPrice) * this.TickValue : 0); // Такой вариант гораздо медленнее.

Видимо, на какой-то вложенности инлайн перестает работать. Не смог создать лаконичную демонстрацию. Если нужны исходники тормозов - готов в ЛС.

 
Alexey Viktorov #:

Если не затруднит, скажите почему при запуске по f5 нет такого потребления памяти.

И почему вы говорите 4 года? Ведь тест запускается с середины 2022… Получается около 2.5 лет всего. И это всего 4 валютных пары. Если включить 1-2, то как-то работает, если больше, то комп просто сходит в ума, ему не хватает памяти. Я понимаю, что комп слабоват, мягко выражаясь, но ………

Ещё может быть важно, перед повторным запуском я закрываю тестер.

Надо многократно и чисто проверять, чтобы делать выводы. У вас очень мало информации и нет возможности воспроизвести.


4 года написано в логах скачки с 2020.01 - тестер ведь обеспечивает наличие предварительной истории, чтобы вы не с нулем баров стартовали.

Памяти, конечно, надо больше, таковы реалии текущих потребностей. Память сейчас стоит экстремально дешево.

 
fxsaber #:
b4673, столкнулся с отсутствием инлайна по факту.

Видимо, на какой-то вложенности инлайн перестает работать. Не смог создать лаконичную демонстрацию. Если нужны исходники тормозов - готов в ЛС.

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

Инлайнинг хотя и работает очень агрессивно, но зависит от всей цепочки вызовов и каждого места встраивания. В реальных местах банально в недостаток/занятость регистров можно упереться и код становится не таким быстрым.

 
Renat Fatkhullin #:

По ситуации с Финамом дадите комментарий?