Планы развития тестера торговых стратегий MetaTrader 5

 

Не пугайтесь полуразобранного состояния тестера в бета-версиях. Мы специально выкатыванием в беты все промежуточные версии, чтобы быстрее получать результаты.


Как мы реформируем тестер стратегий:

  1. Чтобы облегчить понимание новичков, мы вводим новый вид стартовой страницы тестера, где видны варианты исследований:




  2. Большой упор делаем на хранение всех результатов предыдущих тестов, когда легкий поиск позволит вернуться к просмотре предыдущих тестов

    С помощью поисковой строки можно легко найти прошлые результаты в дополнение к прямой загрузке из файла.

  3. Среди предыдущих тестов сделаем возможность сравнения






  4. Скорее всего добавим новые варианты оптимизаций

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

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

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

  6. Перепишем механизмы подготовки исходных данных, чтобы снизить расходы на синхронизацию агентов

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

  7. Новый  движок 3D визуализации и показ результатов тестов в полноценных окнах

  8. Реформируем клаудную сеть с более детальным контролем условий каждого эксперта, чтобы подбирать индивидуально группу агентов

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


Кроме того, сам язык MQL5 активно развивается, мы включили в него области видимости(scopes), расширили поддержку шаблонов, работу с неявно создаваемыми классами и тд.

Скорее всего скоро включим новые функции:

  • SQLite базы данных
  • расширение графической библиотеки, включая 3D


Позже мы перейдем на революционную задачу по включению в язык модулей.

Это C++ библиотеки, перекомпилированные в EX5 формат и доступные для прямого использования из MQL5 кода. То есть, мы начнем работу по перекомпилированию опенсорсных библиотек, когда их низкоуровневые/опасные вызовы полностью мапятся в наш безопасный рантайм и для MQL5 кода делаются безопасные врапперы.

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

Этот механизм уже работает.

Например, часть функционала среды MQL5 уже давно во время компиляции нативно встраивается прямо в EX5 код, что дает возможность очень хорошей оптимизации на уровне сборки.

 

Renat Fatkhullin:

Кардинально расширим детальные настройки тестирования с комиссиями, условиями срабатывания ордеров, проскальзываниями и тд

Это дополнение хотелось бы увидеть в числе первых.

 

Сравнение прогонов - отличная штука.

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

Т.е. запускается "одновременно" несколько ТС, но строится их общая история и эквити.

 

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

Библиотеки: MultiTester

fxsaber, 2019.07.22 01:54

Тестер становится очень сильной молотилкой, когда наделяется возможностью автоматизации.

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

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


TesterSetInfo, TesterGetInfo.

 
fxsaber:

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

Т.е. запускается "одновременно" несколько ТС, но строится их общая история и эквити.

Поддерживая коллегу. Приходится это реализовывать на стороне, но с другой стороны, как это организовать в тестере? Хм, добавить какой то признак к такому проходу типа "Портфель №" - может так?

 
Aleksey Vyazmikin:

Поддерживая коллегу. Приходится это реализовывать на стороне, но с другой стороны, как это организовать в тестере? Хм, добавить какой то признак к такому проходу типа "Портфель №" - может так?

В ручную назначаем агентов для каждой одновременно тестируемой программы.
Например имеем 8 агентов, 4 назначаем одному эксперту, 4 другому. В итоге одновременно могут тестироваться только две mql программы.
Или каждому эксперту выделяем по 2 агента, тогда на тех же 8 агентах уже тестируется 4 программы и т.д.

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

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

 
Roman:

В ручную назначаем агентов для каждой одновременно тестируемой программы.
Например имеем 8 агентов, 4 назначаем одному эксперту, 4 другому. В итоге одновременно могут тестироваться только две mql программы.
Или как то автоматически выделять агентов, по типу гонки, кто первый забрал агента, того и тапки.
Агент выполнив одну задачу, снова ждёт когда его заберут на выполнение из очереди задач. и т.д.
Таким образом количество одновременно тестируемых программ увеличивается.

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

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

 
Aleksey Vyazmikin:

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

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

p.s. MetaQuotes - мечты иногда сбываются.

 

Ренат, пожалуйста, добавьте в выбор стилей стилизатора МЕ еще один вариант - MQ Old. Тот, что был раньше. Для вас - мелочь, а для многих пользователей сэкономит много нервов.

Очень не хочется привыкать к новому стилю... Меня старый вполне устраивает.

Спасибо.

 

А что такое stress test?

(ну то есть какой функционал подразумевается)

 

Отличная новость! 

Это подтолкнет к переходу на МТ5. 

Ведь все будут переписывать программы под мт5, чтобы там тестировать..  

Причина обращения: