Справка по MetaTrader 5Алгоритмический трейдинг, торговые роботыТипы оптимизации

Типы оптимизации

В тестере стратегий предусмотрено два режима оптимизации, переключение между которыми происходит на вкладке "Настройка".

Медленная (полный перебор параметров)

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

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

Быстрая (генетический алгоритм)

В основу данного типа оптимизации заложен генетический алгоритм подбора наилучших значений входных параметров. Данный тип оптимизации значительно быстрее полного перебора параметров и практически не уступает ему в качестве. Оптимизация полным перебором, которая заняла бы несколько лет, выполняется за несколько часов при использовании генетического алгоритма.

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

  • Из общего числа возможных комбинаций параметров случайным образом выбираются две популяции (множества);
  • Проводится тестирование обоих множеств, и из них оставляется только одно множество, имеющее наилучшие результаты (по критерию оптимизации);
  • Члены данного множества случайным образом скрещиваются между собой, претерпевая случайные мутации и инверсии параметров;
  • Потомки сортируются по наилучшим результатам и скрещивание повторяется;
  • Операции сортировки и скрещивания продолжаются до тех пор, пока есть улучшение результатов (наилучший результат среди потомков превышает наилучший результат среди родителей). Для окончания оптимизации необходимо отсутствие улучшения критерия оптимизации на протяжении нескольких скрещиваний (поколений).

Количество проходов тестирования

При генетической оптимизации количество проходов тестирования значительно ниже, за счет этого достигается быстрота оптимизации. После запуска генетической оптимизации на вкладке "Настройки" показывается оценочное количество предстоящих проходов тестирования. Оно рассчитывается по следующей формуле:

Размер популяции * (Безусловное количество поколений + Число поколений для оценки сходимости)

где:

  • Размер популяции — рассчитывается на основе количества возможных комбинаций оптимизируемых параметров, может принимать значение от 64 до 256;
  • Безусловное количество поколений — может принимать значение от 15 до 31. Определяется наличием улучшения критерия оптимизации. 15 поколений проходят тестирование всегда. Если на одном из поколений в промежутке от 15 до 31 не наблюдаются улучшения критерия оптимизации, начинается дополнительной тестирование последующих поколений для оценки сходимости.
  • Число поколений для оценки сходимости — число таких поколений рассчитывается как треть от безусловного количества поколений. Если безусловное количество поколений равно 18 (на 17 поколении был лучший результат, а на 18 улучшений не было), то дополнительно тестируются 5 поколений: на 18 поколении уже не было улучшений, а для проверки сходимости необходимо отсутствие улучшений на 18/3 = 6 поколениях. Если на протяжении условного количества поколений не будет выявлено улучшение, то тестирование прекращается.
  • Если общее количество шагов оптимизации превышает 1 000 000 в 32-х битной системе или 100 000 000 в 64-х битной системе, то автоматически включается режим быстрой оптимизации.
  • При генетической оптимизации промежуточные результаты сохраняются в кэше после расчета каждого поколения (файл папка_данных_платформы/tester/cache/*.gen). Таким образом, процесс генетической оптимизации можно прерывать в любой момент. Даже если процесс генетической оптимизации будет прерван из-за внешних причин (например, отключения электричества), оптимизация будет автоматически продолжена с последнего рассчитанного поколения при последующем запуске. Кэш генетической оптимизации хранится до изменения настроек оптимизации или до полного завершения процесса оптимизации.
  • При штатной остановке оптимизации (кнопкой "Стоп") сохраняются все ранее рассчитанные проходы. При возобновлении оптимизации, процесс будет продолжен с места остановки.

Критерий оптимизации #

Критерий оптимизации — некий показатель, значение которого определяет качество тестируемого набора входных параметров. Чем больше значение критерия оптимизации, тем лучше оценивается результат тестирования с данным набором параметров. Выбор данного показателя осуществляется на вкладке "Настройки" справа от поля "Оптимизация".

Критерий оптимизации необходим только для генетического алгоритма.

Доступны следующие критерии оптимизации:

  • Максимальный баланс — показателем оптимизированности является максимальное значение баланса.
  • Максимальная прибыльность —  показателем является максимальное значение прибыльности.
  • Максимальное матожидание выигрыша — показателем является матожидание выигрыша.
  • Минимальная просадка — в данном случае учитывается относительная просадка баланса в процентах.
  • Максимальный фактор восстановления — показателем является фактор восстановления.
  • Максимальный коэффициент Шарпа — показателем является коэффициент Шарпа.
  • Пользовательский критерий оптимизации — при выборе данного параметра в качестве критерия оптимизации будет учитываться значение функции OnTester() в советнике. Данный параметр позволяет пользователю использовать любой собственный показатель для оптимизации.

Также доступен "Максимум комплексного критерия". Это интегральный, комплексный показатель качества прохода тестирования. Он учитывает сразу несколько параметров:

  • Количество сделок
  • Просадка
  • Фактор восстановления
  • Мат. ожидание выигрыша
  • Коэффициент Шарпа

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

Все символы, выбранные в окне "Обзор рынка"

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

Оптимизация проходит только на тех символах, которые в текущий момент выбраны в окне "Обзор рынка". Таким образом, регулируя набор выбранных символов, можно управлять оптимизацией.

  • Закачка необходимых ценовых данных с сервера может занимать продолжительное время. Однако замедление процесса оптимизации в результате закачки данных происходит только при первом ее запуске на символе, в последующем докачиваются лишь недостающие данные.
  • При оптимизации по символам используются текущие значения входных параметров, указанные в колонке "Значение".
  • Для этого режима оптимизации не поддерживается MQL5 Cloud Network.