Торговая платформа MetaTrader 5 до недавних пор совершенно не пользовалась популярностью среди форекс трейдеров. А все потому, что она изначально была заточена под биржевую торговлю с неттинговым учетом позиций, то есть по одному финансовому инструменту можно было иметь только одну позицию, — все дальнейшие операции по нему вели к изменению объема открытой позиции, закрытию или развороту существующей позиции. Следовательно, трейдер не имел возможности торговать сетками, доливаться, использовать замки и применять прочие подобные методы управления позицией.
Но в марте этого года ситуация кардинально изменилась — в платформу была таки добавлена вторая система учета – хеджинг. Та самая система, что используется в четвертой версии терминала. Теперь по инструменту можно иметь множество позиций, в том числе — разнонаправленных. Итак, все те недостатки, что ранее отталкивали форекс трейдеров от платформы MetaTrader 5, убраны, и настало время приглядеться к ней повнимательней. Дает ли какие-то преимущества использование пятой платформы при оптимизации торговых советников? Стоит ли переходить на новую платформу любителям автоматизированной торговли или лучше остаться со старым добрым MT4? Сегодня мы научимся оптимизировать советники на платформе MetaTrader 5 и рассмотрим основные преимущества и недостатки оптимизации советников с ее помощью.
Оптимизация советников
Как тестировать советники и какие бывают режимы тестирования в МТ5 мы уже разобрались в предыдущей статье. Также вы уже знаете, как устанавливать советники в терминал. Поэтому сразу перейдем к основной теме этой статьи – оптимизации торговых экспертов в платформе МТ5.
Суть оптимизации сводится к подбору оптимальных параметров для работы советника на определенном отрезке исторических данных. При этом по завершении оптимизации тестер стратегий выдает большой список различных удачных вариантов, из которых трейдер выбирает наилучший.
Тестер стратегий в МТ5 является многопоточным и позволяет задействовать все доступные ресурсы компьютера. Тестирование и оптимизация осуществляются при помощи специальных вычислительных агентов, которые работают независимо и позволяют проводить параллельные вычисления проходов оптимизации. К тестеру стратегий может быть подключено неограниченное количество агентов, работающих удаленно. Помимо этого, в тестере стратегий доступна для использования огромная сеть облачных вычислений MQL5 Cloud Network. Она объединяет тысячи агентов по всему миру, и эта вычислительная мощь доступна любому пользователю торговой платформы.
Подготовка к оптимизации
Тестер позволяет проводить проверку на истории стратегий, торгующих на нескольким инструментах. Такие эксперты условно называют мультивалютными. История по используемым инструментам закачивается тестером из торговой платформы (не с торгового сервера) автоматически при первом обращении к данному инструменту. С торгового сервера докачивается только недостающая история. Таким образом, для тестирования и оптимизации советников используется в основном история, специально подготовленная компанией MetaQuotes, а не реальная история котировок конкретного брокера.
Перед началом оптимизации мультивалютного эксперта включите требуемые для тестирования инструменты в «Обзоре рынка». В контекстном меню выполните команду » Символы» и включите показ необходимых инструментов.
Выбор настроек оптимизации
Перед началом оптимизации выберите, на каком финансовом инструменте будет проведено исследование работы советника, за какой период и в каком режиме.
- Выберите советник, который необходимо оптимизировать.
- Выберите валютную пару, на которой будет проводится оптимизация. Для мультивалютных советников это пара, на графике которой будет «висеть» советник.
- Таймфрейм для работы советника. Как вы уже знаете, в МТ5 появилось множество дополнительных периодов и на каждом из них можно протестировать и оптимизировать советника. И хотя полезность появления таких периодов, как М3, М12 или Н2 довольно сомнительна, радует, что теперь можно тестировать долгосрочные советники на периодах W1 или MN
При выборе «вся история» оптимизация пройдет на всей доступной истории котировок. Следующие два интервала, конечно же, совершенно бесполезны.
- Также можно задать явные даты начала и окончания периода оптимизации («выбор периода»)
Особенностью тестера является то, что он загружает некоторое количество дополнительных данных до указанного периода (для формирования как минимум 100 баров). Например, при тестировании на недельном таймфрейме загружаются два дополнительных года. Это необходимо для более точного тестирования и оптимизации – на этой истории строятся индикаторы, используемые советником, например. Если при этом для формирования дополнительных 100 баров недостаточно исторических данных (для недельных и месячных периодов например), дата начала тестирования будет автоматически передвинута, а в журнале тестера стратегий появится соответствующая запись.
Все мы знаем, как грустно было отсеивать прогоны в четвертом терминале, вручную сотни и тысячи раз гоняя форвард тесты по каждой оптимизации. Боги смилостивились над нами и метаквоты снизошли до нужд рядовых трейдеров. Теперь прогоны при оптимизации автоматически отсеиваются, если не проходят форвард тесты. У нас есть выбор – использовать половину выделенной истории, треть или четверть под форвард тест. Также есть возможность указать конкретную дату начала периода форвард теста самостоятельно. Результаты лучших прогонов при оптимизации на обоих периодах затем можно сравнить на вкладках «Результаты оптимизации» и «Результаты форвард тестирования». Бэквард тест, к сожалению, по-прежнему приходится гонять вручную. И тем не менее, это большой шаг навстречу.
- Режим торговли
На данный момент предусмотрены два режим торговли: «Обычный» и «Произвольная задержка». В обычном режиме все ордера исполняются по запрошенным ценам, отсутствуют реквоты и т.д. – то есть то же, что и в четвертом терминале (идеальное исполнение).
Режим произвольных задержек предусмотрен для тестирования экспертов в условиях, приближенных к реальным. С момента отсылки приказа и до его исполнения цена может измениться. В зависимости от отклонения (Slippage), установленного в ордере, может произойти его исполнение по текущей цене (если она в пределах отклонения) или реквотирование. Тестирование в данном режиме позволяет разработчику правильно запрограммировать обработку подобных ситуаций, а так же приблизит тесты советника к реальным условиям. Имитация задержки осуществляется для всех торговых запросов, отсылаемых из терминала (выставление ордеров, изменение стоп-уровней, и т.д.). Задержка исполнения осуществляется по следующему принципу: случайным образом выбирается число от 0 до 9, и на такое число секунд осуществляется задержка; если выбранное число равно 9, то случайным образом выбирается еще одно число из такого же диапазона и прибавляется к первому. Таким образом, вероятность задержки исполнения на 0-8 секунд составляет 90%, а вероятность задержки на 9-18 секунд составляет 10%.
- Режим генерации тиков
Можно выбрать один из режимов генерации тиков:
- Все тики — наиболее точный, но и наиболее медленный режим моделирования. В нем моделируются все тики.
- Каждый тик на основе реальных тиков — максимально приближенный к реальным условиям режим. Используются реальные тики, накопленные брокером по финансовым инструментам. Моделирование не осуществляется. Тиковые данные имеют большой размер, при первом запуске тестирования их скачивание с сервера брокера может занять продолжительное время.
- OHLC на М1 — в данном режиме моделируются лишь 4 цены каждого минутного бара — цены Open, High, Low и Close.
- Только цены открытия — в данном режиме моделируются также цены OHLC, однако для тестирования/оптимизации используется лишь цена открытия.
- Математические вычисления — в данном режиме тестер не будет подкачивать исторические данные, информацию о символах и не будет генерировать тики. Будут вызваны только функции OnInit(), OnTester() и OnDeinit(). Таким образом тестер можно использовать для различных математических вычислений, где требуется подбор параметров.
- Начальный депозит
Укажите объем начального депозита для тестирования и оптимизации советника. Валюта зависит от валюты депозита счета, который в данный момент подключен.
- Плечо.
Выберите кредитное плечо для тестирования и оптимизации. Это особенно актуально для сеточников и мартышек.
- Оптимизация
Во вкладке «Настройки» Тестера стратегий нас интересует только строка Оптимизация (со всеми остальными функциями вы уже знакомы). В тестере стратегий предусмотрено два режима оптимизации.
Отключена – оптимизация параметров отключена, происходит работа в режиме тестера стратегий.
Медленная (полный перебор параметров). В этом режиме тестер перебирает все возможные комбинации параметров эксперта, выбранных для оптимизации на соответствующей вкладке:
Этот метод – наиболее точный, но прогоны советника со всеми комбинациями параметров может занять слишком много времени.
Быстрая (генетический алгоритм). Данный тип оптимизации использует генетический алгоритм подбора наилучших значений параметров. Он намного быстрее полного перебора параметров и не сильно уступает ему в качестве. Оптимизация полным перебором, которая заняла бы несколько лет, выполняется за несколько часов при использовании генетического алгоритма. Несмотря на то, что эта функция присутствует и в МТ4, все же скажу пару слов про принцип работы генетического алгоритма.
Каждая особь имеет определенный набор генов, который соответствует набору ее параметров. Генетическая оптимизация основана на постоянном отборе наиболее приспособленных параметров (значения, которые дают наилучший итоговый результат).
В общем виде алгоритм может быть представлен следующим образом:
- Из общего числа возможных комбинаций параметров случайным образом выбираются две популяции (множества).
- Проводится тестирование обоих множеств, и из них оставляется только одно множество, имеющее наилучшие результаты (по критерию оптимизации).
- Члены данного множества случайным образом скрещиваются между собой, претерпевая случайные мутации и инверсии параметров.
- Потомки сортируются по наилучшим результатам и скрещивание повторяется.
- Операции сортировки и скрещивания продолжаются до тех пор, пока есть улучшение результатов (наилучший результат среди потомков превышает наилучший результат среди родителей). Для окончания оптимизации необходимо отсутствие улучшения критерия оптимизации на протяжении нескольких скрещиваний (поколений).
После запуска генетической оптимизации на вкладке «Настройки» показывается оценочное количество предстоящих проходов тестирования. Если общее количество шагов оптимизации превышает 1 000 000 в 32х битной системе или 100 000 000 в 64х битной системе, то автоматически включается режим быстрой оптимизации.
Промежуточные результаты сохраняются в кэше после расчета каждого поколения (файл папка_данных_платформы/tester/cache/*.gen). Таким образом, процесс генетической оптимизации можно прерывать в любой момент. Даже если процесс генетической оптимизации будет прерван из-за внешних причин (например, отключения электричества), оптимизация будет автоматически продолжена с последнего рассчитанного поколения при последующем запуске. Кэш генетической оптимизации хранится до изменения настроек оптимизации или до полного завершения процесса оптимизации. При штатной остановке оптимизации (кнопкой «Стоп») сохраняются все ранее рассчитанные проходы. При возобновлении оптимизации, процесс будет продолжен с места остановки.
Все символы, выбранные в окне «Обзор рынка». В отличие от двух предыдущих, данный режим оптимизации позволяет испытать советника с одинаковыми входными параметрами, но на различных символах. При каждом проходе оптимизации изменяется только основной символ тестирования советника. Оптимизация проходит только на тех символах, которые в текущий момент выбраны в окне «Обзор рынка». Таким образом, регулируя набор выбранных символов, можно управлять оптимизацией. Закачка необходимых ценовых данных с сервера может занимать продолжительное время, но это происходит только при первом ее запуске на символе, в последующих докачиваются лишь недостающие данные. При оптимизации по символам, используются текущие значения входных параметров, указанные в колонке «Значение».
Выбор данного показателя осуществляется на вкладке «Настройки» справа от поля «Оптимизация». Критерий оптимизации необходим только для генетического алгоритма. Доступны следующие критерии оптимизации:
Максимальный баланс — показателем оптимизированности является максимальное значение баланса.
Баланс + максимальная прибыльность — показателем является максимальное значение произведения баланса на прибыльность.
Баланс + максимальное матожидание выигрыша — показателем является произведение баланса на матожидание выигрыша.
Баланс + минимальная просадка — в данном случае помимо значения баланса учитывается уровень просадки: Баланс/Просадка по эквити.
Баланс + максимальный фактор восстановления — показателем является произведение баланса на фактор восстановления.
Баланс + максимальный коэффициент Шарпа — показателем является произведение баланса на коэффициент Шарпа.
Пользовательский критерий оптимизации — при выборе данного параметра в качестве критерия оптимизации будет учитываться значение функции OnTester() в советнике. Данный параметр позволяет пользователю использовать любой собственный показатель для оптимизации.
Выбор входных параметров для оптимизации
Входные параметры позволяют управлять поведением советника, адаптируя его под различные рыночные условия, в том числе под конкретный финансовый инструмент. Так, например, можно исследовать работу советника с различными расстоянием выставления ордеров стоп-лосс и тейк-профит, с различными периодами скользящей средней, которая используется для анализа рынка и принятия решений и т.д.
Оптимизация заключается в переборе различных значений и комбинаций входных параметров для получения наилучшего результата.
Чтобы включить оптимизацию по параметру, выберите его галочкой. Далее задайте начало и конец диапазона значений, а также шаг перебора. Можно выбрать один или несколько параметров. Общее количество возможных комбинаций будет показано под списком параметров.
Запуск оптимизации
Чтобы начать оптимизацию, нажмите «Старт» на вкладке «Настройки». Левее при этом будет показываться ход ее выполнения.
Подробные результаты по каждому проходу выводятся на вкладке «Оптимизация». Здесь представлены общие результаты тестирования, такие как прибыль и количество торговых операций, а также множество статистических показателей, которые помогут оценить качество работы робота.
Подробная информация о показателях представлена в разделе «Отчет о тестировании». Отчет об оптимизации можно отсортировать по любому параметру, кликнув мышью на заголовке колонки. Так, вы можете найти наиболее прибыльную комбинацию параметров и сразу же запустить ее одиночное тестирование для получения более подробного отчета.
Для каждого прохода оптимизации выводятся следующие показатели:
Проход — номер прохода.
Результат — итоговое значение параметра, являющегося критерием оптимизации, по которому отбираются наилучшие проходы.
Прибыль — полученная прибыль/убыток по результатам прохода.
Всего трейдов — общее количество трейдов (сделок, которые привели к фиксации прибыли или убытка), совершенных за данный проход.
Прибыльность — отношение общей прибыли к общему убытку в процентах. Единица означает, что сумма прибылей равна сумме убытков.
Матожидание выигрыша — этот статистически рассчитываемый показатель отражает среднюю прибыльность/убыточность одной сделки.
Просадка — относительная просадка средств, наибольший убыток в процентах от максимального значения средств. Снятие средств(Withdrawal) советником во время оптимизации учитывается при расчете просадки.
Фактор восстановления — данный показатель отображает рискованность стратегии
Коэффициент Шарпа — данный показатель характеризует эффективность и стабильность стратегии. Он отображает соотношение среднеарифметической прибыли за время удержания позиции к стандартному отклонению от нее. В дополнение, здесь учитывается значение безрисковой ставки, являющейся прибылью по вкладу соответствующей суммы на банковский депозит.
Оптимизируемый параметр(ы) — в дополнение к общим статистическим показателям здесь отображаются значения входных переменных, установленные для данного прохода.
При помощи команд контекстного меню можно скрывать/показывать некоторые из вышеуказанных столбцов.
Если оптимизация проходила с форвард тестированием, то в данной вкладке отображаются соответствующие значения параметра оптимизации (критерия оптимизации) для бэктеста и форвард теста. Переключение между режимами просмотра результатов тестирования и форвард тестирования осуществляется с помощью контекстного меню. Двойное нажатие левой кнопкой мыши на одном из результатов оптимизации запускает тестирование советника с параметрами этого прогона (при условии, что оптимизация закончена).
Во время генетической оптимизации возможна ситуация, когда очередной проход (член популяции) имеет абсолютно идентичные входные параметры (гены) с ранее протестированным проходом. В таком случае на вкладке результатов данный проход не отображается, поскольку имеет идентичный результат тестирования.
Для анализа в сторонних программах, например, в экселе, отчет оптимизации можно сохранить в виде файла командой «Экспортировать в XML» в контекстном меню. Также, численные значения всех параметров и характеристик, полученные в результате оптимизации, по ее завершении сохраняются в XML файл, расположенный в папке папка_данных_платформы/tester/cache/. Файлу присваивается имя по следующему правилу: ExpertName.Symbol.Period.GenerationMode.xml. Здесь:
ExpertName — наименование оптимизируемого эксперта.
Symbol — символ.
Period — таймфрейм (M1,H1,…).
GenerationMode — режим генерации тиков (0 — «Все тики», 1 — «OHLC на M1», 2 — «Только цены открытия»).
При генетической оптимизации промежуточные результаты сохраняются в кэше после расчета каждого поколения (файл папка_данных_платформы/tester/cache/*.gen). Таким образом, процесс генетической оптимизации можно прерывать в любой момент. Даже если процесс генетической оптимизации будет прерван из-за внешних причин (например, отключения электричества), оптимизация будет автоматически продолжена с последнего рассчитанного поколения при последующем запуске. Кэш генетической оптимизации хранится до изменения настроек оптимизации или до завершения процесса оптимизации. При штатной остановке оптимизации (кнопкой «Стоп») сохраняются все ранее рассчитанные проходы. При возобновлении оптимизации, процесс будет продолжен с места остановки.
Визуальное представление результатов оптимизации
Тестер стратегий в торговой платформе обладает мощной системой визуализации результатов оптимизации. На вкладке «График оптимизации» доступно несколько видов графиков, переключаться между ними можно через контекстное меню.
Нулевая линия (плоскость)
На всех видах графиков, за исключением плоского, отображается нулевая линия (или плоскость, в случае с трехмерным графиком). Если в качестве критерия оптимизации используется значение баланса, данная линия обозначает величину начального депозита, позволяя таким образом визуально отделить убыточные проходы от прибыльных. Во всех остальных случаях данная линия рисуется по нулевому значению критерия оптимизации.
График с результатами и Линейный график (1D)
График с результатами оптимизации открывается по умолчанию. Каждый проход эксперта с определенными входными параметрами отображается на графике в виде точки. На горизонтальной оси графика откладывается номер прохода, а на вертикальной — значения параметра, который является критерием оптимизации.
На линейном графике (1D) отображается изменение параметра, являющегося критерием оптимизации (вертикальная ось) в зависимости от одного из оптимизируемых параметров, выбранного для отображения на горизонтальной оси. Чтобы выбрать параметр для отображения на горизонтальной оси, используйте команду «Ось X» в контекстном меню.
Плоский график (2D) и Объемный график (3D)
В режиме двухмерного отображения на обоих осях откладываются изменения выбранных параметров, по которым проходила оптимизация. Изменение критерия оптимизации отображается при помощи цветового градиента. Чем насыщеннее цвет, тем выше значение критерия оптимизации.
В трехмерном режиме просмотра на осях X и Y откладываются изменения выбранных параметров, по которым проходила оптимизация. Изменения критерия оптимизации отображаются по вертикальной оси Z, а также при помощи цветового градиента.
Чтобы выбрать параметры для отображения на горизонтальной и вертикальной осях, используйте команды «Ось X» и «Ось Y» в контекстном меню.
Управление 3D графиком:
G – включение/отключение координатной сетки
Пробел – переключение между сплошной заливкой и заливкой с помощью линий
Стрелки вверх/вниз/влево/вправо – перемещение графика
Плюс/минус – приближение/отдаление от графика
Home, Page Up, Page Dn, End – вращение графика
Заключение
Инструменты, доступные пользователям терминала МТ5, действительно стали более удобными и продуманными по сравнению с предыдущей версией терминала. Оптимизация советников стала более простым и при этом более точным занятием. Лично меня очень вдохновили два нововведения: возможность при оптимизации автоматического отсева прогонов, не прошедших форвард тесты и наличие объемного графика оптимизации, по которому не составляет особого труда находить наиболее устойчивые и прибыльные сеты по вершинным точкам 3D плоскости.
С уважением, Дмитрий аkа Silentspec
TradeLikeaPro.ru