После появления своего тикового тестера логичным продолжением было применить его на множестве алгоритмов оптимизации. Другими словами, научиться оптимизировать торговые советники самостоятельно - без использования MT5-Тестера.
Пример.
#include <fxsaber\Virtual\VirtualTester.mqh> // https://www.mql5.com/ru/code/22577 double OnTester() { static VIRTUAL_TESTER VirtualTester(NULL); static const bool IsTester = MQLInfoInteger(MQL_TESTER); static const bool Init = !IsTester && SettingsFromTester(VirtualTester); const double Res = (Init && (VirtualTester.Run(OnTickMulti) != -1)) ? VirtualTester.OnTester() : TesterStatistics(STAT_PROFIT); if (Init) { if (inDetails) Print(VirtualTester.ToString()); VIRTUAL::Delete(); } return(Res); } // Чтобы мог торговать сам MT5-Тестер. void OnTick() { OnTickMulti(_Symbol, 0); } // Сюда прописываем советник. #include "EA.mq4" // https://www.mql5.com/ru/blogs/post/756859 #include <fxsaber\Optimization\Optimization_Addon.mqh> // https://www.mql5.com/ru/blogs/post/755815 sinput bool inDetails = false; // Print details
Исходник показывает, как подключается торговый советник для самостоятельной оптимизации.
Выделил саму ФФ - результат тикового тестера, примененного к торговому советнику.
Пробуем.
Открываем советник в MT5-Тестере, где настраиваем интервал оптимизации, начальный баланс и торговый символ.
Задаем оптимизируемые входные параметры.
И теперь советник запускаем в MT5-ТестереТерминале. Где выбираем алгоритм оптимизации и касающиеся его настройки.
Остальные входные не имеют значения - будут браться из MT5-Тестера.
Результат.
Выполение советника - самостоятельная оптимизация советника, согласно настройкам MT5-Тестера.
В Журнале будут примерно такие записи работы.
OPTIMIZATION_METHOD_PSO PSO[3] created: 15/3 Getting Ticks (2024.03.01 00:00:00 - 2024.03.11 00:00:00)... "TESTER_EURUSD" 1. TESTER_EURUSD: 288061 ticks (2024.03.01 00:00:00 - 2024.03.08 23:59:57) PSO Processing... Pass 0 done, skipped 1 of 15 / -0.25 Pass 1 done, skipped 6 of 15 / -0.25 Pass 2 done, skipped 5 of 15 / -0.25 .... Pass 998 done, skipped 15 of 15 / -0.0799999999999983 Pass 999 done, skipped 15 of 15 / -0.0799999999999983 PSO Finished 1236 of 15000 planned passes: true AmountCycles = 1000, Repeats = 1 BestResult = -0.0799999999999983: LotSize = 0.01, TPdist = 0.35000000000000003, SLdist = 1.62 Check = -0.0799999999999983: TPdist = 0.35000000000000003, SLdist = 1.62
Проверим этот результат в MT5-Тестере - запустим в нем одиночный прогон с этими настройками.
Результаты бэктеста.
Видим, что найденные настройки, действительно, показывают такой результат у торгового советника.
MT5-Тестер-оптимизация.
Сравним результаты своей оптимизации с оптимизацией MT5-Тестера. Для этого просто запустим в нем оптимизацию.
Лучший результат MT5-Тестера не превзошел ранее полученный. Найден практически тот же локальный экстремум ФФ.
Вывод.
Самостоятельная оптимизация торговых советников на множестве алгоритмов оптимизации - это нетрудно.
Виртуальный Тестер - возможность автооптимизации в советниках и других сценариев.
Ссылка на блог автора.