Сценарий оптимизации с обратной связью

 

Предлагаю обсудить возможность создания на MQL5 собственного сценария оптимизации с целью автоматизации процесса и экономии времени.

Представим, что у нас имеется 10 индикаторов, каждый из которых имеет 5 настроек с диапазоном 3, мы знаем что индикаторы 1-2 отвечают за открытие позиции, индикаторы 3-8 за фильтрацию сигнала на открытие позиции, а индикаторы 9-10 за закрытие позиции, при этом нам известны взаимные комбинации настроек индикаторов, которые заведомо нужно исключить.

Оптимизировать сразу такой советник полным перебором или с помощью генетики было бы неоправданно, в первом случае из-за потраченного времени, во втором случае из-за полного рандома.

А вот взять и оптимизировать индикаторы по группам с определенным сценарием было бы продуктивно, к примеру можно использовать такой сценарий:

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

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

3. По результатам п.2 мы имеем базовые настройки(можно оставить группу настроек) для работы уже с фильтрами. Тут можно сделать полный перебор для каждого фильтра по отдельности, при этом остальные фильтры будут отключены, что бы не влиять на результат, соответственно отобрать 10-15% хороший результатов от каждого фильтра с помощью другой фитнес-функции.

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

5. По окончанию п. 4 можно ещё раз поработать со входами и выходами.

6. Алгоритм 1-5 можно повторить несколько раз при желании, главное сохранять промежуточные значения и постоянно исключать уже известные плохие варианты настроек индикаторов.

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

Как это можно реализовать, что бы все корректно работало и при оптимизации с использованием удаленных агентов?

 

Я об этом думал, но, на данный момент, занимаюсь реализацией системы без подгона. А вообще, есть же статьи на эту тему. Например, https://www.mql5.com/ru/forum/39285

Чем не устраивает?

Тестер: Автоматическая оптимизация торгового робота в процессе реальной торговли
Тестер: Автоматическая оптимизация торгового робота в процессе реальной торговли
  • 2007.04.16
  • www.mql5.com
Статьи и техническая библиотека по автоматическому трейдингу: Тестер: Автоматическая оптимизация торгового робота в процессе реальной торговли
 
Viktar Dzemikhau:

Я об этом думал, но, на данный момент, занимаюсь реализацией системы без подгона. А вообще, есть же статьи на эту тему. Например, https://www.mql5.com/ru/forum/39285

Чем не устраивает?

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

 
На мой взгляд,
Aleksey Vyazmikin:
 

Как это можно реализовать, что бы все корректно работало и при оптимизации с использованием удаленных агентов?

На мой взгляд, нужен отдельный скрипт (на том же AutoIt, или на любом языке программирования), который бы в цикле формировал INI-файлы с нужными критериями приближаясь к необходимым для тебя параметрам.

Пакетный запуск МТ5 - поддерживает все нужные режимы, после оптимизации пишет XML-файл отчета (можешь и свой файл создавать при обработке внутри OnTesterPass), причем задействует и удаленных агентов.

Соответственно, этот самый отдельный скрипт будет исследовать файлы отчета, формировать нужные INI-файлы, и запускать MT5 на оптимизацию.

 
Georgiy Merts:
На мой взгляд,

На мой взгляд, нужен отдельный скрипт (на том же AutoIt, или на любом языке программирования), который бы в цикле формировал INI-файлы с нужными критериями приближаясь к необходимым для тебя параметрам.

Пакетный запуск МТ5 - поддерживает все нужные режимы, после оптимизации пишет XML-файл отчета (можешь и свой файл создавать при обработке внутри OnTesterPass), причем задействует и удаленных агентов.

Соответственно, этот самый отдельный скрипт будет исследовать файлы отчета, формировать нужные INI-файлы, и запускать MT5 на оптимизацию.

Мне нужно ещё как то компилировать новый код, так-как надо передавать файлы агентам после их обработки с помощью скрипта.

 
Aleksey Vyazmikin:

Мне нужно ещё как то компилировать новый код, так-как надо передавать файлы агентам после их обработки с помощью скрипта.

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

 
Viktar Dzemikhau:

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

Библиотек оптимизации в инете как грязи, для различных сред.

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