Оптимизируем мультивалютный сеточник в МТ4: подбор оптимального шага сетки сразу для всех валютных пар

dreamstime_xs_34882380Некоторое время назад мы уже рассматривали тестирование мультивалютных советников в терминале МТ4 и выяснили, что это вполне возможно сделать (Тестирование мультивалютных советников в МТ4: мифы и реальность). Напомню, что в тот раз мультивалютность тестирования достигалась за счет объединения нескольких прогонов тестера МТ4, в каждом из которых сделки открывались только по одной валютной паре. Такой способ действительно работает, но имеет несколько неудобств. Первая проблема заключается в сложности оптимизации такого советника. Вторая проблема заключается в том, что неизвестной оказывается максимальная открытая просадка – для ее определения придется устраивать дополнительный анализ.

Сегодня я изложу метод мультивалютного тестирования советников в МТ4, который свободен от вышеупомянутых недостатков. Сразу расскажу суть метода. Как мы помним, все проблемы с мультивалютным тестированием в МТ4 происходят из одного технического ограничения тестера стратегий МТ4: тестер может открывать (и модифицировать, закрывать) ордера только по той (одной) валютной паре, по которой запущен тестер стратегий. Решение, как всегда, на поверхности: если тестер не умеет открывать ордера по разным парам, то надо это делать самим! Итак, решено: мы напишем советник, который будет «торговать» виртуально – весь процесс открытия, модификации и закрытия ордеров будет держаться в памяти советника, и там же будет накапливаться информация о результатах торговли (прибыль, просадка, и тп). В конце прогона тестирования мы вычислим показатель эффективности торговли и передадим его в тестер через настраиваемый параметр оптимизации (функцию OnTester). Дополнительная информация о результатах торговли может выводиться советником во внешний файл (если захотеть, можно реализовать запись файла отчета, полностью идентичного тому, что делает тестер). В результате мы сможем использовать штатный режим оптимизации в тестере стратегий МТ4 для отбора вариантов с наилучшими результатами торговли. И это все в полностью мультивалютном режиме!

Теперь надо выбрать достойную задачу для мультивалютной оптимизации. Давайте рассмотрим базовую сеточную стратегию: мы открываем ордер; если цена идет в нашу сторону, мы закрываем сделку по тейк-профиту (ТП); если нет, мы строим сетку усредняющих ордеров с заданным шагом и заданным коэффициентом умножения лота. Когда сетка выходит в безубыток + ТП пунктов, мы закрываем сетку с прибылью и начинаем следующую. Таким образом, в логике всего 4 параметра: тейк-профит, шаг сетки, начальный лот и умножитель лота. Особенность нашего советника в том, что он мультивалютный, поэтому начальный лот и шаг сетки по разным валютным парам будут не произвольными, а жестко связанными между собой. Как? На этот вопрос мы уже по сути ответили в одной из наших предыдущих статей (Сколько весит валютная пара?). Разумно установить начальный лот обратно пропорциональным цене пункта по данной валютной паре, а шаг сетки сделать увеличивать или уменьшать пропорционально волатильности данной пары.

Более конкретно, делаем табличку цены пункта для различных пар:

fig1

Соответственно, начальный лот для каждой пары делим на этот коэффициент. Коэффициент волатильности считаем следующим образом: вычисляем средний размер свечи Д1 (high — low) на протяжении последних 1000 баров (= примерно 3 года) для данной пары и делим его на аналогичный средний размер свечи для пары EURUSD. В результате получаем следующую таблицу коэффициентов:

fig2

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

Для тестирования данной мультивалютной стратегии был написан специальный вспомогательный советник StatCollect MUI 3.4,  который выполняет виртуальную торговлю по описанной логике. Советник доступен для скачивания бесплатно в конце данной статьи.

Настройки советника выглядят так

fig3

Переменная sPairs содержит список инструментов для тестирования, разделенных запятыми. GripStepPips – шаг сетки в пунктах (напомню, что для каждого конкретного инструмента актуальный шаг сетки будет вычисляться с учетом коэффициента волатильности, описанного выше); TPBEPips – тейк-профит в пунтах (от уровня безубытка); LotMult – умножитель лота; LotSize – величина начального лота (напомню, что для каждого конкретного инструмента актуальный начальный лот будет вычисляться с учетом цены пункта, как описано выше); SpreadPips – величина спреда (в данной версии советника спред полагается одинаковым для всех инструментов). В качестве основного показателя эффективности торговли советник вычисляет следующий параметр: сумма прибыли по всем инструментам, отнесенная к сумме максимальных просадок по каждому инструменту. Чем больше этот показатель, тем выше эффективность торговли. Помимо этого, в журнал пишется дополнительная информация о результатах торговли.

Как нам пользоваться этим советником? Давайте сначала прогоним его по одному инструменту, например, AUDUSD. Т.е., ставим sPairs = AUDUSD. Таймфрейм в тестере ставим М1, качество моделирования – контрольные точки (можно и «все тики», но смысла в этом нет).

fig4

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

fig5

Во-первых, мы видим, что актуальные значения начального лота и шага сетки, вычисленные для AUDUSD, равнялись 0.1 и 16.6 пт, соответственно. Во-вторых, за 6 лет теста советник проанализировал около 40 тыс. пирамид (total baskets); в результате получил 1,316k$ прибыли (profit) при максимальной просадке 451k$ (MaxDD); при этом максимальное количество ордеров в пирамиде составило 19. Обратите внимание на то, что символ тестирования в тестере у нас стоял EURUSD, т.е. советник «торговал» по символу, отличному от символа тестирования. Для проверки мы можем выставить в тестере символ AUDUSD, прогнать советник еще раз и убедиться, что результаты не изменились. Это показывает, что мы реализовали мультивалютное тестирование без ошибок.

Теперь давайте перейдем к настоящему мультивалютному тестированию. Сформируем портфель из 9 следующих пар: EURUSD, GBPUSD, NZDUSD, AUDUSD, USDCAD, EURGBP, AUDCAD, EURCAD, NZDCAD. Попробуем получить ответ на следующий вопрос: какой оптимальный шаг сетки для всех этих пар (и существует ли он вообще)? Задаем следующую оптимизацию в тестере стратегий, период оптимизации 6 лет:

fig6

Немного подождав, получаем следующий отчет оптимизатора:

fig7

В отчете мы видим единственный ненулевой столбец – это результаты OnTester (что не удивительно, т.к. наш советник открывал только виртуальные сделки); столбец OnTester содержит показатель эффективности торговли, который передает тестеру наш советник. Мы видим, что для шага сетки меньше чем GridStep = 24 показатель торговли изменяется очень плавно и имеет четкий максимум при GridStep = 19. Эта плавность изменения очень важна – она показывает, что мы достигли статистической значимости наших результатов, и что на их основании можно делать какие-то выводы. При увеличении шага сетки количество пирамид уменьшается и мы видим, что показатель торговли начинает болтаться туда-сюда. Это верный признак недостатка статистики. Грубо сглаживая результаты, мы можем сказать, что при увеличении шага сетки показатель торговли падает в область 0.5, т.е. эффективность торговли сильно уменьшается.

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

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

fig8

Мы видим, что каждый инструмент в портфеле имеет разный начальный лот и разный шаг сетки. За период времени 6 лет советник «построил» около 300 тыс. пирамид по 9и валютным парам. Максимальный размер пирамид колеблется от 15 до 22 уровней. При этом коэффициент восстановления портфеля (отношение прибыли к макс. просадке) составляет 5.3, что соответствует около 100% прибыли в год на протяжении 6 лет. Еще одним интересным результатом является то, что максимальная открытая просадка портфеля всего на 15% превосходит максимальную открытую просадку по одной паре, что говорит о том, что максимальные просадки различных пар не накладываются друг на друга.

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

Удачи вам и профитов.


Автор: Владимир aka loopsider
15.01.2016

Метки: , , , ,
Опубликовано в Публикации, Секреты мастерства




Советники ARGOLab
Последние статьи

Комментарии
E-Mail:
Форекс рейтинг . Форекс каталог