Справка по 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() в советнике. Данный параметр позволяет пользователю использовать любой собственный показатель для оптимизации.