Оптимизация

Процесс тренировки агентов Frankenstein производится
в приложении Тестер - Tester(MetaTrader5).

Пользователь может как проводить оптимизацию вручную для каждого из агентов Frankenstein,
либо делегировать боˈльшую часть работы Optimizator.ex5 - агенту оптимизации.

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

Весь смысл оптимизации заключается в поиске паттерна на рынке и способа его торговли.


Советник Frank

Frankenstein.ex5 является достаточно тяжёлым исполняемым файлом в плане использования ресурсов RAM и CPU.
Frank.ex5 - Легкая Версия Light Weight Version(LWV) - лучше подходит для оптимизации.

Эта версия не обладает некоторыми элементами графического интерфейса GUI, но она быстрее, легче и
работает в Тестере лучше.

Файлы .set для всех версий советника Frankenstein следуют одному стандарту и взаимозаменяемы.
Сначала, Пользователю следует запустить оптимизацию с Frank.ex5,
а позже использовать получившийся .set файл в другом билде советника - Frankenstein.ex5 или FrankPro.ex5.


Тестер - Tester

Широко распространённый подход - использовать Быстрый Генетический Алгоритм Fast Genetic Algorithm на свечном графике M1 OHLC:
tester
tester2
После выполнения генетической оптимизации, Пользователь может откалибровать получившийся .set файл на тиковых данных,
немного подстроив параметры.

Обычно, следует искать результаты со значением Просадки Drawdown
менее 5% для рынков с низкой волатильностью, и менее 10-15% для волатильных рынков.
(*если размер риска 'risk size' = 10 пермилле, для значений риска = 0.2 пермилле, просадка должна не превышать 0.5% или ниже)

Применение других фильтров происходит по усмотрению Пользователя,
высокое значение Прибыли Profit и рациональное значение Матожидания Выигрыша(Expected Payoff) являются хорошими индикаторами:
tester3


Матрицы - Matrices

На странице Optimization отображается
список матриц, зарегистрированных в пуле оптимизации на данный момент(пул оптимизации обсуждается здесь).
Это актуальные матрицы, 24/7 работающие на Ферме Оптимизации Frankenstein.pro.

Матрица - это файл конфигурации, он включает в себя настройки оптимизации и файл параметров .set.
Используется для организации автоматической оптимизации агента.

Матрицы можно обновлять, создавать новые. Обновления происходят автоматически или вручную администратором.

Внимание: только пользователи с правами администратора могут производить изменения на этой странице!

Чтобы скомпилировать вашу собственную уникальную систему на основе оригинальных матриц - используйте Локальную Установку "Local Installation".
(Смотрите главу 'Локальная Установка')...

Пользователь может скачать опубликованные матрицы и результаты оптимизации(.set файлы), чтобы торговать с ними
как есть, или использовать их как строительные блоки для создания оригинальной торговой стратегии.

Для добавления новых матриц, в простой или серийной batch манере, используйте элементы управления сверху:
matrices

Если флаг "Ignite" установлен true, Optimizator(на сервере бэкенда) открывает новое окно и запускает
новый агент Frankenstein.
Флаг будет автоматически возвращён в изначальное значение после успешного запуска советника.

Флаг "On/Off(Activate/Deactivate)" активирует процесс оптимизации для агента.
Если флаг установлен в значение false, оптимизация не проводится.
Если флаг установлен в значение true, Optimizator.ex5 периодически запускает Тестер(с установленным периодом, например 7 дней) и проводит оптимизацию агента.

"Opt_ID" - идентификатор инстанции Optimizator-а, управляющего оптимизацией входных параметров
для агента.

Ниже списка агентов, если пролистать колёсиком мыши вниз, вы увидите список Результатов Оптимизации "Optimization Results":
matrices2
Он содержит результаты всех циклов, совершенных приложением оптимизации Tester.

Флаг "Is_GOOD" сообщает, если фрейм оптимизации успешно прошёл
фильтры "Minimal Profit"(минимальная прибыль), "Minimal Result"(минимальный результат), "Minimal Expected Payoff"(минимальное Матожидание Выигрыша)...:
matrices3

Чтобы загрузить новую матрицу(.set файл), сначала выберите агент, после
выберите .set файл на вашем компьтере и нажмите "Upload matrix":
matrices4

Пользователь(справами администратора) может редактировать значения Матрицы, включать/выключать оптимизацию параметров
в левой части экрана:
matrices5
Справа - значения из .set файла-результата отображаются напротив изначальных значений.

.set файл справа(Optimization Results) содержит текущие зачения параметров, использующиеся агентом.

Для облегчения управления параметрами, могут использоваться дополнительные элементы управления.
Чтобы быстро включить/выключить выбранный паттерн:
matrices6
Для зеркалирования парамтеров из одного паттерна в другой(или ВСЕ, если ввод пустой):
matrices7
Сохранить изменения можно, скачав матрицу(.set файл) или применив изменения к нескольким
агентам в серийной batch-манере:
matrices8

Помните, применяя "Save changes to ALL matrices"(Сохранить изменения во все матрицы) - все матрицы будут обновлены и
это спровоцирует переоптимизацию для всех агентов.
Используйте "Save changes to ALL matrices(keep ctms)", чтобы избежать ненужной переоптимизации.


Optimizator - Оптимизатор

Каждая матрица представляет один агент.
Назначенная инстанция Optimizator.ex5 управляет процессом оптимизации
для агента. Идентификатор Opt_ID ассоциирует их вместе.

Optimizator.ex5 - это служебный советник, работающий в MetaTrader5:
optimizator

Как только матрциа для агента установлена(.set файл с параметрами загружен и выполнена настройка),
Optimizator скачивает конфигурацию и запускает оптимизацию.
Результаты загружаются обратно на сервер Frankentein.pro сразу после завершения оптимизации.

Результаты также могут быть распространены(переданы) локально, при использовании Optimizator.ex5 из "Локальной Установки".
(читайте главу "Локальная Установка")

Когда завершается цикл оптимизации, в зависимости от конфигурации, Optimizator либо закроет и откроет заново существующее
окно с агентом FrankPro или передаст результаты агенту, что позволит агенту FrankPro загрузить параметры самостоятельно.

При загрузке нового агента используется файл Frank_template.tpl, хранящийся в директории C:\Users\UserName\AppData\Roaming\MetaQuotes\Terminal\***\MQL5\Files\.

Если FrankPro загружает новые параметры во время исполнения(run-time), это может занять некоторое время
(периодически происходит проверка состояния, с периодом до 15 минут, поэтому возможна задержка).
Это поведение контролируется параметрами IP_IGNITE_MISSING - Ignite Frankensteins automatically? и IP_ignite_close_EA - close the EA before ignition.

После загрузки на Frankenstein.pro,
результаты и новый .set файл опубликовываются на странице Optimization:
matrices9


Состояние Советника, State

Агенты скачивают новые результаты оптимизации автоматически,
или считывают результаты локально(при Локальной Установке).

Входные параметры Советника буферизируются, чтобы увидеть реальные, актуальные параметры, использующиеся в "Двигателе",
нажмите на кнопку "params" в верхнем-правом углу окна графика:
Params_actual

(параметры на подстранице ввода параметров игнорируются,
они используются только в режиме ENUM_MANUAL_MODE или для standalone installation - Минимальной Установки)


Распространённые Практики

Существуют различные пути организации процесса оптимизации.

Рациональным подходом является использование множественных групп агентов.
Каждая группа настраивается с уникальной комбинацией параметров Optimization Range(Диапазон Оптимизации) и Reoptimization Period(Период Переоптимизации).

Переоптимизируйте некоторые роботы раз в неделю, другие - раз в месяц, и т.д...
Используйте, к примеру, Optimization Range(Диапазон Оптимизации) в 1 месяц, 3 месяца, 6 месяцев и т.д...

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

Ищите паттерны на разных тафмфреймах.

После настройки, нажмите на Update Config(обновить конфигурацию):
matrices10
Вы также можете использовать серийную обработку(batch) для нескольких агентов.
Вставьте "EURUSD,AUDUSD" в Symbols и "1,4,100" в Magics чтобы скопировать конфигурацию для
EURUSD_1,EURUSD_4,EURUSD_100,AUDUSD_1,AUDUSD_4 и AUDUSD_100.
Могут быть использованы сложные запросы, например: "1,2,4,100-110,111,120-129".