Тестирование мультивалютных советников в МТ4: мифы и реальность

test001Почти каждый, кто хоть как-то знаком с терминалом МетаТрейдер 4, знает, что тестер стратегий МТ4 не поддерживает тестирование по истории мультивалютных советников. Но очень мало кто знает, что тестирование мультивалютных советников в МТ4 все-таки возможно, и причем совершенно стандартными средствами.

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

Сначала разберемся, чего же именно НЕ МОЖЕТ тестер стратегий МТ4, в плане мультивалютной торговли.

Первое. Советник в тестере запускается по одной валютной паре. Для этой пары тестер эмулирует ценовые тики. Ни для каких других пар тики не эмулируются и, следовательно, тики других валютных пар в тестере недоступны.

Второе. Советник в тестере может открывать (и модифицировать, закрывать) ордера только по той (одной) валютной паре, по которой запущен тестер стратегий.

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

Давайте еще раз перечитаем первый пункт. Нам не доступны тики цены по разным валютным парам. Но КОТИРОВКИ-то (цена открытия, закрытия, high и low баров) доступны! Это значит, что мультивалютные индикаторы будут корректно считаться в тестере стратегий – до тех пока мы используем значения индикаторов на закрытых барах. Не верите? Давайте проверим, ведь «эксперимент – критерий истины.»

Вот код простейшего тестового советника. Этот советник считает значение скользящей средней на паре MA(EURUSD) на открытии нового бара и пишет в журнал значения для 10и первых баров.

А теперь эксперимент. Сначала мы запускаем этот советник по паре EURUSD, и советник пишет нам в журнал значения МА для первых 10и баров.

fig2

А теперь мы запустим советник по какой-нибудь другой паре, например, EURGBP (а советник будет вычислять MA по-прежнему по EURUSD). Мы получаем результат, который полностью совпадает с предыдущим.

fig3

Таким образом, мы своими глазами убедились, что, тестируя советник по EURGBP, мы можем правильно вычислять MA по EURUSD. А значит, и другие индикаторы, и по любой другой валютной паре тоже.

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

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

Давайте рассмотрим простейший пример мультивалютной торговли, так называемую парную торговлю (pair trading). Что это такое? Вкратце, проводится сравнительный анализ двух – как правило, высококоррелирующих между собой – инструментов. Строится раздвижка этих двух инструментов, которая колеблется вокруг нуля. При значительном отклонении раздвижки от нулевого значения, открываются противоположные сделки по обоим инструментам в направлении нуля раздвижки.

Пример индикатора раздвижки – индикатор MACD 2 Pairs, прилагаемый к статье. Это просто нормированная разность индикаторов MACD двух пар. А вот пример парного трейда (EURUSD,GBPUSD) по этому индикатору.

fig4

Когда раздвижка (EURUSD-GBPUSD) достигла большого положительного значения, открывается сделка на продажу по EURUSD и на покупку по GBPUSD. Обе сделки закрываются с общим профитом, когда раздвижка схлопывается. В нашем случае ситуация (намеренно) тривиальная и исход сделки можно сразу видеть на графике кросса EURGBP. В общем случае, мы можем применять такой метод к инструментам для которых кроссы не существуют (например, золото — индекс DAX, нефть — рубль, и много еще чего).

Мы уже убедились, что индикатор раздвижки будет корректно работать в тестере МТ4. Давайте теперь напишем советник для парной торговли по индикатору MACD 2 Pairs, так чтобы его можно было протестировать по истории.

Наш алгоритм (простейший, тестовый): если раздвижка (EURUSD-GBPUSD) превысила уровень MACD_Level_Entry, то открываем продажу по EURUSD и покупку по GBPUSD. Сделки закрываем, когда раздвижка становится меньше MACD_Level_Exit. При отрицательных значениях раздвижки все зеркально.

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

Вспомним, что в нашем примере две валютные пары имеют кросс EURGBP. Поэтому разумно позволить советнику советнику торговать еще и по нему. При торговле по кроссу должно – в принципе – получиться то же самое, что и при одновременной торговле по EURUSD и GBPUSD.

Сказано – сделано. Советник “Pair Trading Example Argo” прилагается к статье. Прогоняем советник в тестере на 6 лет по паре EURUSD. Советник работает только на закрытых барах, поэтому при тестировании используем метод «по ценам открытия».

fig5

А теперь прогоняем этот советник с теми же настройками и за тот же период по паре GBPUSD.

fig6

А теперь используем утилиту Report Manager для объединения отчетов.

fig7

В объединенном отчете видим, что сделки по EURUSD и GBPUSD действительно открываются-закрываются синхронно и в разных направлениях, и в большинстве случаев хеджируют друг друга.

Сохраняем объединенный отчет и получаем следующую картину

fig8

А теперь посмотрим, что получится, если ту же самую логику торговли приложить непосредственно к кроссу EURGBP. Тут уж никаких объединений отчетов не нужно. Спред по кроссу поставим, как полагается, равным сумме спредов по EURUSD и GBPUSD. В результате имеем

fig9

Картинка в целом похожа; количество сделок, как и полагается, в два раза меньше, чем в объединенном отчете. Удивительно то, что суммарный профит при торговле кроссом получается существенно меньше, хотя все сделки один в один соответствуют объединенному отчету EURUSD-GBPUSD. Достаточно неожиданный результат. Получается, что торговать по двум мажорам выгодней, чем непосредственно по кроссу, хотя спреды суммарно те же. Если у кого-то есть идеи, почему так происходит, пишите, обсудим.

Ну вот. Мы сегодня с вами сделали советник для парной торговли и протестировали его по истории исключительно стандартными средствами МТ4. Не так мало, не правда ли? Подобным образом можно писать – и тестировать в МТ4 – гораздо более сложные мультивалютные советники. Удачи вам и профитов.

 

Скачать:

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

13.04.2015

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

Советники ARGOLab
Последние статьи
.
.
Комментарии
E-Mail:
Форекс рейтинг . Форекс каталог