Обсуждение статьи "Пользовательский тестер стратегий на основе быстрых математических вычислений"

 

Опубликована статья Пользовательский тестер стратегий на основе быстрых математических вычислений:

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

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

Рис. 5. Выбор оптимизационного поля параметров

В нашем примере 1000 прогонов оптимизации, каждый из которых обрабатывает 1 год минутной истории. Тем не менее, в данном режиме расчет занимает не так много времени. На компьютере с процессором i7 вся оптимизация заняла около 1 минуты, после чего был построен график:

Рис. 6. График 1000 прогонов в режиме "медленная оптимизация".

Автор: Vasiliy Sokolov

 

Дочитал до исходника ResourceCreator.mqh. Возникли вопросы

  1. Почему решили не использовать штатные FileLoad и FileSave?
  2. Разработчики говорили, что директива tester_file передает на Агенты соответствующий файл только после принудительного сжатия. Поэтому вариант с запихиванием котировок вовнутрь (вроде, Вы так решили - дальше не читал еще) EX5 целесообразен ли или это альтернатива tester_folder? Проводили скоростные исследования этого дела?
  3. Правильно ли понимаю, что на каждом проходе Вы распаковывается внутренний ресурс?
 
Наибольший интерес в этой реализации представляет момент создания позиции. Ее поля защищены от внешнего изменения, однако статический метод CreateOnBarOpen возвращает объект класса с правильно выставленными параметрами. Нельзя создать объект этого класса иначе, кроме как обратившись к этому методу. Таким способом реализуется защита данных от непреднамеренных изменений.

Конструктор, наверное, забыли из public убрать. Не понял только, почему не стали делать через обычный конструктор?

 
Каждый прогон может храниться в виде отдельного файла внутри единственного zip-архива.

Такое решение имеет слабое звено в виды нештатного выхода из терминала. Это повлечет потерю данных прерванной Оптимизации. А, как Вы уже заметили, mqd-файлы повторно не прочесть.

К тому же такое решение не позволяет использовать Анализатор на ходу.

 

Хорошая статья для старта! Замечания

  • Фактически предлагается использовать собственный торговый API. Что почти сводит на нет разработку. Смысл в своем тестере внутри MT5 имеет, когда торговый API для своего тестера совпадает со штатным. Иначе получается, что с той же пользой можно использовать какой-нибудь уже готовый тестер конкурентов или тот же R.
  • С механизмом кастомных символов не совсем понятно, для чего может понадобится такой тестер.
  • Байтовые манипуляции хотелось бы видеть в универсальном виде.
  • Не хватает сравнения скорости своего тестера и штатного.
  • Свой тестер целесообразно использовать еще и для такого

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

Технологическая сингулярность MetaTrader 5

fxsaber, 2017.12.14 14:11

Для кастомных символов есть возможность пробрасывать тики через CustomTicksAdd. Это очень удобная вещь! По аналогии хотелось бы видеть TesterTicksAdd, а также TesterCreate, TesterDestroy. Чтобы можно было пробросить свои тики в тестере и считать торговое окружение текущего состояния тестера.

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

Автору Спасибо!


ЗЫ Почему FrameNext используется без while?

 

Классно, но сверх усложнено как мне кажется.. действительно, можно найти какой-нибудь готовый тестер\оптимизатор на python'е и вызывать его при необходимости в т.ч. и на gpu. Тестеров на питоне должно быть навалом.

кстати, нет ни одной статьи про использование питон скриптов в мт5, а это может быть очень продуктивным.

 
fxsaber:
  • Байтовые манипуляции хотелось бы видеть в универсальном виде.

Не понял. Что такое универсальный вид?

fxsaber:

ЗЫ Почему FrameNext используется без while?

В OnTesterPass передается последний прогон, который и загружает FrameNext. While в данном случае не нужен.
 
fxsaber:

Такое решение имеет слабое звено в виды нештатного выхода из терминала. Это повлечет потерю данных прерванной Оптимизации. А, как Вы уже заметили, mqd-файлы повторно не прочесть.

К тому же такое решение не позволяет использовать Анализатор на ходу.

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

 
Maxim Dmitrievsky:

Классно, но сверх усложнено как мне кажется.. действительно, можно найти какой-нибудь готовый тестер\оптимизатор на python'е и вызывать его при необходимости в т.ч. и на gpu. Тестеров на питоне должно быть навалом.

кстати, нет ни одной статьи про использование питон скриптов в мт5, а это может быть очень продуктивным.

Ну а как Вы будете пользоваться облаком MetaTrader на Питоне? Даже как Вы питон-скрипт хотите запустить на МТ?

 
fxsaber:

Конструктор, наверное, забыли из public убрать. Не понял только, почему не стали делать через обычный конструктор?

Эксперименты.

 
fxsaber:

Дочитал до исходника ResourceCreator.mqh. Возникли вопросы

  1. Почему решили не использовать штатные FileLoad и FileSave?
  2. Разработчики говорили, что директива tester_file передает на Агенты соответствующий файл только после принудительного сжатия. Поэтому вариант с запихиванием котировок вовнутрь (вроде, Вы так решили - дальше не читал еще) EX5 целесообразен ли или это альтернатива tester_folder? Проводили скоростные исследования этого дела?
  3. Правильно ли понимаю, что на каждом проходе Вы распаковывается внутренний ресурс?
Все это варианты для изучения. Возможно в следующей версии многое изменю. Сейчас сделал так, что бы ехало хоть как-то.