d9e5a92d

Виктор Неустроев -Оптимизация торговых советников в МТ4

Виктор Неустроев -Оптимизация торговых советников в МТ4


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

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

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

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

Визуально он выглядит так:

Виктор Неустроев -Оптимизация торговых советников в МТ4


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

I-R

При настройке оптимизации можно выбрать один из трех методов моделирования исторических данных:

• По ценам открытия (быстрый метод на сформировавшихся барах)

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

• Контрольные точки (используется ближайший тайм-фрейм + фрактальная интерполяция)

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

• Все тики (на основе всех наименьших доступных периодов с фрактальной интерполяцией каждого тика)

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

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

При подборке оптимальных параметров советника после оптимизации мы руководствуемся следующими критериями:

1) Количество сделок достаточное, чтобы можно было сделать вывод о достоверности результатов, а также, чтобы было комфортно торговать.

2) Прибыль за период оптимизации больше определенной величины.

3) Максимальное значение фактора восстановления (отношение прибыли к максимальной просадке) за период оптимизации.

4) Хорошие результаты форвард-теста (длина форвард-теста не менее 1/8 длины оптимизируемого временного отрезка). Монотонно возрастающая линия баланса (эквити).

5) Хорошие результаты бэктеста. Монотонно возрастающая линия баланса (эквити).

6) Неплохие результаты на истории до оптимизируемого временного отрезка.

7) Трендовый советник не сливает во флете. Флетовый не сливает во время тренда на рынке.

Бэктест - это результат оптимизации на определенном участке исторических данных, его еще называют «подгонкой под историю».

Чтобы убедиться, что бэктест не подгоночный или узнать, насколько он является подгоночным, прогоняют форвард-тесты, т.е. тесты советников с такими же входными параметрами, как и в бэктесте, но на других исторических данных.

Например, мы оптимизировали советник на котировках за 2007 г. Это бэктест. Чтобы убедиться, что результаты оптимизации - не явная подгонка, не меняя входных параметров советника, проводим также тесты на котировках других периодов: 2008 г., 2006 г., 2009 г. - это уже форвард-тесты.

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

Если советник сливает - это значит, что в его стратегии содержится нечто, способное давать профит только при подгонке, например, фильтры торговых сигналов. Такой советник уже никуда не годится, так как он будет сливать даже на демо.

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

Суть стратегии описана ниже:

• Сигнал на покупку образуется, когда RSI(6)<30 или RSIM1(20)<36 & SMA(8)>Ask (RSIM1(20) - значение индикатора RSI с периодом 20 на ТФ M1).

• Сигнал на продажу образуется, когда RSI(6)>70 или RSIM1(20)>64 & SMA(8)<Bid.

• Закрытие позиций осуществляется либо по тейк-профиту, либо по стоп-лоссу, либо по времени: в зависимости от того, сколько прошло времени с момента открытия позиции, выбирается цель в пунктах.

• Одновременно может быть открыта только одна позиция.

Данный советник является флетовым, поэтому имеет смысл использовать его на такой флетовой паре как EUR/CAD в ночное и/или утреннее время. Именно в это время по этой паре наблюдается флет.

Виктор Неустроев -Оптимизация торговых советников в МТ4


Поскольку советник является скальпером (фиксирует профит всего в несколько пунктов и старается не держать позиции слишком долго), то имеет смысл использовать его на ТФ M15.

В нашем понимании оптимизировать нужно именно торговую стратегию, а не метод управления капиталом. К тому же, при оптимизации с включенным блоком мани-менеджмента любая достаточно длинная серия прибыльных сделок приведет к запредельной прибыли, что может серьезно затруднить выбор оптимальных параметров. Поэтому имеет смысл оптимизировать настройки советника при использовании фиксированного лота 0,1.

Рассмотрим параметры, которые необходимо оптимизировать:

Hour_Start_Trade - время начала торговли;

Hour_Stop_Trade - время, после которого советник не открывает больше позиций в этот день; StopLoss - стоп-лосс в пунктах;

TakeProfit - тейк-профит в пунктах.

Также в советнике имеются такие настройки как период индикатора RSI, уровни RSI для открытия сделок, ограничения прибыли в пунктах по времени и т.д. Но эти настройки не вынесены во внешние переменные советника для оптимизации. Для тех, кто владеет азами программирования на MQL4, имеет смысл их вынести во внешние и тоже прооптимизировать. Но в данном примере мы пока ограничимся оптимизацией указанных четырех переменных.

Выделяем галочками данные переменные, определяем диапазоны значений переменных, в которых и будем оптимизировать:

Виктор Неустроев -Оптимизация торговых советников в МТ4


Виктор Неустроев -Оптимизация торговых советников в МТ4


Как можно видеть на графике EUR/CAD, стабильный флет по этой паре наблюдается с 22-00 до 01-00 (GMT+2). Поскольку у нас уже имеется опыт оптимизации подобных советников по паре EUR/CAD, то интервал для стоп-лосса задается от 65 до 90, а для тейк-профита от 10 до 15 пунктов. Для каждого оптимизируемого советника данные параметры индивидуальны и зависят от стратегии, заложенной в советника. После ряда экспериментов вы сможете сами определять, какие диапазоны лучше подходят для того или иного советника.

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

Виктор Неустроев -Оптимизация торговых советников в МТ4


Задаем даты для оптимизации (2007.08.01 - 2009.03.01). Ставим галочку «Оптимизация», нажимаем Старт. В случае, если тестер показывает, что оптимизация займет очень много времени (несколько суток, например) имеет смысл оптимизировать не все параметры одновременно, а объединять их в группы и искать локальные максимумы прибыли для каждой отдельной группы. В таком случае оптимизация будет вестись в несколько этапов.

Прождав несколько часов, получаем результаты:

Так как основным критерием для выбора оптимальных настроек, по нашему мнению, является максимальное значение фактора восстановления, перенесем полученные результаты в Excel и посчитаем факторы восстановления для каждого набора параметров.

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

Сравнив несколько результатов, определяем, что самый лучший из них оказался при прогоне №236:

Виктор Неустроев -Оптимизация торговых советников в МТ4


Примечательно то, что в период с мая по июль 2009 года, когда большинство скальперских стратегий по EUR/CAD сливали, наш советник торговал в ноль. Просмотрев результаты торговли этого советника с полученным набором параметров, убеждаемся, что данный советник можно

запускать на реальном счете (перед установкой советника на реал мы рекомендуем запустить его для тестирования на микро- или центовых счетах в течение пары месяцев).

Теперь проведем имитацию реальной торговли по данным советником за период с 2009.07.01 до текущего момента:

Виктор Неустроев -Оптимизация торговых советников в МТ4


Присутствуют, конечно, просадки, но в целом вполне достойный результат.

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





Содержание раздела