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

 

Приветствую.


У меня уже сформированные алго-процессы - рисеч, оптимизация, интерпретация результатов. Переделывать их не хочется ибо они закалены боями и эволюцией. В MT5 недавно, хочется наименьшими усилиями реализовать свой стандартный флоу. Материал очень много, сложновато ориентироваться. Сможете подсказать как лучше подобное организовать?


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


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


Для начала я не смог ни из одного события записать в файл ( OnTesterPass, OnTesterInit, OnTester и т.д.) - видимо, система подавляет запись, не знаю.


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


Заранее спасибо.

 
Документация по MQL5: Работа с результатами оптимизации
Документация по MQL5: Работа с результатами оптимизации
  • www.mql5.com
Работа с результатами оптимизации - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Спасибо. Если честно подобные статьи немного пугающи). 

В концепт фреймов пока не въехал (статья как белый шум проскочила :)) ). Продолжу вникать.

 

Вы точно хотите использовать встроенный тестер?

Если у вас свой проверенный лучше его использовать

 
Rorschach #:
Вы точно хотите использовать встроенный тестер?

Не знаю, а какие варианты есть?

То что я точно хочу - тестировать стратегию в том виде, в каком её потом можно будет торговать. Т.е. тестировать её в рамках MT5. Это и предполагает встроенный тестер? Или встроенный тестер это что-то уже?

 
Rorschach #:

Если у вас свой проверенный лучше его использовать

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

 
Replikant_mih #:

Встроенный тестер очень скурпулезный, поэтому считать будет дольше. В своем коде вы знаете что где подкрутить/пофиксить, работа с фреймами это задача со звездочкой.

Посмотрите этот профиль для начала

В справке про ограничения записи в файл не нашел, поисчите в папке Tester
 
Replikant_mih:

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

Вот здесь https://www.mql5.com/ru/code/36058  просто в  OnDeinit  записывал результаты прогона оптимизации в файл.

Здесь  https://www.mql5.com/ru/articles/9922  всё то же самое но с помощью фреймов.

Возможно как пример подойдёт.

 
Rorschach #:

Встроенный тестер очень скурпулезный, поэтому считать будет дольше. В своем коде вы знаете что где подкрутить/пофиксить, работа с фреймами это задача со звездочкой.

Посмотрите этот профиль для начала

В справке про ограничения записи в файл не нашел, поисчите в папке Tester

Спасибо.

Да, тестер небыстрый. Готов к этому.

 
Aleksandr Slavskii #:

Вот здесь https://www.mql5.com/ru/code/36058  просто в  OnDeinit  записывал результаты прогона оптимизации в файл.

Здесь  https://www.mql5.com/ru/articles/9922  всё то же самое но с помощью фреймов.

Возможно как пример подойдёт.

Спасибо.

Пока вопросов по-прежнему больше чем ответов)). Но уже что-то начинает проявляться из тумана неопределенности). Осознал что по событию Trade или TradeTransaction могу отлавливать закрытие сделки и соответственно пометить себе все что надо в плане результатов сделки - ну там тикер, профит, объем. В MqlTradeRequest в поле comment могу упаковать входящие данные (например, значения параметров прогона), дальше соответственно у меня будет входящие параметры сделки и её результаты. За время прогона накопил данные. Дальше в каком-то методе их надо сохранить. Лучше после каждого прогона, какое событие или обработчик или триггер лучше для этого подойдет? OnDeInit() это, я так понимаю, когда все прогоны прошли. Т.е. это в любом случае запись после прогона, потому что хочу поставить условно-бесконечную оптимизацию, она будет дампиться, а я периодически руками или каким-то скриптом буду чекать что там наоптимизировалось. Ну и пойду ещё покопаюсь с записью, если MT5 не подавляет запись в файл в режиме оптимизации, может это я где-то накосячил.

 
Replikant_mih #:

 OnDeInit() это, я так понимаю, когда все прогоны прошли.

OnDeInit()             когда один прогон прошёл.

OnTesterDeinit()   когда все прогоны прошли.

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