Optimization - самостоятельная оптимизация торгового советника.

26 марта 2024, 18:52
fxsaber
1
139

После появления своего тикового тестера логичным продолжением было применить его на множестве алгоритмов оптимизации. Другими словами, научиться оптимизировать торговые советники самостоятельно - без использования 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-Тестера не превзошел ранее полученный. Найден практически тот же локальный экстремум ФФ.


Вывод.

Самостоятельная оптимизация торговых советников на множестве алгоритмов оптимизации - это нетрудно.

Виртуальный Тестер - возможность автооптимизации в советниках и других сценариев.


Ссылка на блог автора.

Файлы:
Поделитесь с друзьями: