d9e5a92d

Игорь Герасько - Phoenix 4 - первое место на чемпионате АТС

В 2006 году компания Metaquotes Software пошла на беспрецедентный шаг -проведение соревнования советников (автоматических торговых систем - АТС), программ, которые без какого-либо вмешательства человека должны осуществлять торговлю на финансовых рынках в течение трех месяцев. И хотя сама компания довольно серьезно опасалась того, что ни один из представленных советников не получит прибыль, они (опасения) оказались напрасными. Победитель чемпионата увеличил начальный депозит более чем в три раза с 10000 до 35175 долларов. Такие показатели вызвали живейший интерес общественности, что и обеспечило ажиотаж вокруг последующих

чемпионатов АТС-2007 и АТС-2008.

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

Самое высокое место на АТС-2006 из участников, открывших свой исходный код, занял советник, который представил Гарри Бринкус из Голландии. За двенадцать недель чемпионата его творение Phoenix 4 («Феникс 4»), работая на валютной паре USDJPY и таймфрейме М15, довело депозит с 10000 до 19732 долларов. Попробуем разобраться в сигналах, на основании которых работал советник, и узнать причину столь высоких результатов на чемпионате. Исходный код советника можно найти по ссылке -

.

Беглый анализ кода оставляет приятные впечатления. В программе четко произведено разделение функций на сигнальную и обслуживающую части. Так, за генерацию сигналов и открытие сделок в советнике отвечает функция CheckForOpen. В ней производится расчет по пяти различным сигналам, каждый из которых можно отключить, приведя значение соответствующего параметра UseSignal (плюс цифра от одного до пяти) в состояние false.

Сигнал 1.

Значение цены закрытия последней сформировавшейся свечи по отношению к краям канала, образованному

индикатором Envelopes (см. рис. 1).

Игорь Герасько - Phoenix 4 - первое место на чемпионате АТС


Рис. 1. Канал Envelopes и цены закрытия по отношению к нему.

Канал такой узкий из-за того, что процент отклонения индикатора выбран в Фениксе очень маленький - всего лишь 0.0032%. В данном случае с таким же успехом можно было использовать простую среднюю с периодом 2. Из рисунка 1 видно, что значение первого сигнала будет «Buy», если цена закрытия свечи выше верхней границы канала, а «Sell», если цена закрытия свечи ниже нижней границы канала.

Сигнал 2.

Рост или падение значения средней скользящей с периодом 7 на предыдущем и 14-ом барах (см. рис. 2). Этот сигнал является явно контртрендовым - если значение средней растет, то переводим сигнал №2 в значение «Sell», если падает, то в «Buy».

Игорь Герасько - Phoenix 4 - первое место на чемпионате АТС


Рис. 2. Продажа на основании восхождения средней.

Сигнал 3.

Здесь критерием выступают показания индикатора OsMA. Правда, в данном случае присутствует некоторая путаница. Во входных параметрах указано значение быстрой средней 5 и значение медленной средней 30. Но при вызове

функции расчета индикатора эти значения поменяны местами. В результате, в качестве быстрой средней выступает значение 30, а в качестве периода медленной средней - 5. Это дает

перевернутый, по отношению к привычному, вид индикатора OsMA (см. рис. 3).

Игорь Герасько - Phoenix 4 - первое место на чемпионате АТС


Как показано на рисунке, в качестве сигнала берется два последних значения индикатора. При возрастании значения происходит возведение значения сигнала №3 в «Buy», при падении - в «Sell».

Сигнал 4.

И этот сигнал основан на применении средних скользящих. Формула его расчета мне показалась довольно знакомой:

Dv = maF1 - maS1 - ((maF1 - maS1) - (maF2 -maS2)) = maF2 - maS2,

где

maF1, maF2 - значение быстрой средней на 0-ом и первом барах;

maS1, maS2 - значение медленной средней на 0-ом и первом барах.

Таким образом, получаем обычное расхождение средних, то есть MACD! Чтобы индикатор более полно соответствовал функции divergence, я сделал линейный индикатор наподобие MACD, но в нем можно изменять цены расчета средних

(

). Сигнал «Buy» возникает, когда значение, вычисленное в функции divergence, находится между уровнями 0.003 и 0.024. Сигнал «Sell», когда значение от -0.024 до -0.003. Даже на приведенном рисунке видно, что входы, скорее, нужно производить в обратную

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

15. Эти «путаницы», впрочем, только подтверждают, что советник

контртрендовый.

Игорь Герасько - Phoenix 4 - первое место на чемпионате АТС


Рис. 4. Зоны, дающие сигналы. Зеленая - «Buy», красная - «Sell».

Сигнал 5.

В графическом представлении сигнал не нуждается. Он существует лишь для ограничения работы советника по времени. В существующей версии можно задать четыре временные зоны в часах, когда советник будет совершать торговые операции. Часы работы «от» и «до» задаются входными параметрами TradeFroml, TradeUntill, ..., TradeFrom4, TradeUntil4. Если текущий час не попадает ни в одну из временных зон, то советник торговать не будет.

Все пять сигналов объединяются по принципу «И». То есть, в случае отсутствия одного из сигналов, сделка совершена не будет. Правда, можно сигнал просто отключить. Тогда его значение приниматься во внимание не будет.

Итак, результаты тестирования советника на периоде чемпионата АТС-2006 такие (см. рис. 5). Как видим, немного отличаются от реальных в лучшую сторону. Чистая прибыль 16815.87 (против реальной 9732.31), максимальная просадка 11013.07 (реальная 12465.20, ФВ = 1.53, реальный 0.78). Такое

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

Игорь Герасько - Phoenix 4 - первое место на чемпионате АТС


Рис. 5. Результаты тестирования советника за период проведения чемпионата.

А вот результаты этого же советника с такими же параметрами, но на более позднем интервале - 2007 год (см. рис. 6).

Игорь Герасько - Phoenix 4 - первое место на чемпионате АТС


Рис. 6. Результаты тестирования советника за 2007 год.

Понятно, что советник имеет завышенный ММ (money management -управление средствами, но в данном случае зависимость объема сделки от свободных средств) и, к тому же, жестко оптимизирован под историю 2006 года до проведения АТС-2006, что и дало ему плюс на чемпионате. В реальных условиях нужно снижать объем сделок по отношению к депозиту, да и вообще не так зависеть от флета или тренда рынка.

Подремонтируем советник, выбросив из него лишние условия, добавив некоторые новые и немного изменив существующие. Лишним в данном случае я посчитал все сигналы советника, кроме сигнала №4. Этим мы во многом избавились от контртрендового поведения эксперта и привязки его ко времени, которая в оригинальной версии попросту не использовалась. Оставшийся сигнал №4 немного изменим в трактовке (см. рис. 7). Теперь предлагается совершать сделки,

когда индикатор PhoenixDivergence начинает разворачиваться в

отрицательной или положительной зоне. Так, находясь ниже нуля и начиная рост, индикатор дает сигнал к покупке (на рис. 7 сделка обозначена синим цветом). Напротив, находясь в положительной зоне и начиная падение, индикатор сигнализирует о продаже (сделка обозначена красным цветом). В качестве уровня ТейкПрофита возвращаемся к проверенному способу - 4-5 значений средней волатильности, высчитанной при помощи индикатора ATR. Таким образом, у нас имеется сигнал №1 и уровень профита. Но, к сожалению, стабильная прибыльная торговля невозможна только лишь на одном PhoenixDivergence. К нему нужен фильтр, который и будет являться сигналом №2 и который попутно даст нам уровень для размещения стопа. Такой сигнал может быть основан на свечном анализе, но не на паттернах.

Игорь Герасько - Phoenix 4 - первое место на чемпионате АТС


Рис. 7. Открытие сделок в соответствии с показаниями PhoenixDivergence

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

следующего дня. И наоборот, для получения сигнала «Sell» цена закрытия дня должна пробить минимум предыдущего дня (см. рис. 8).

Игорь Герасько - Phoenix 4 - первое место на чемпионате АТС


Рис. 8. Появление новых сигналов путем сравнения цен закрытия дня и экстремумов

предыдущего.

В результате стоп размещаем за экстремумом второго дня, после которого последовал сигнал. Например, при сигнале «Buy» выбирается минимальная цена из двух предыдущих и текущего дней. При сигнале «Sell» - максимальная

цена из двух предыдущих и текущего дней. К ней, правда, не забываем прибавить спрэд. имеет намного меньше входных параметров, нежели его предтеча:

- Lots = 0.1 - объем сделки. Если равен 0, то работает параметр MaximumRisk

- MaximumRisk = 0.1 - рассчитывает объем сделки таким образом, чтобы залог по ней составлял указанную часть от свободных средств. Например, при свободных средствах 10000 залог не будет превышать 1000.

- DecreaseFactor = 0 - коэффициент уменьшения объема сделки после получения двух и более убытков подряд. Отключается, если равен нулю.

- T railingStop = 0 - обычный трейлинг-стоп. Отключается, если значение 0.

- Fast_Period = 13 - период быстрой средней для PhoenixDivergence

- Fast_Price = PRICE_OPEN - цена, по которой считается быстрая средняя.

- Slow_Period = 34 - период медленной средней для PhoenixDivergence.

- Slow_Price = PRICE_OPEN - цена, по которой считается медленная средняя.

Пробуем тестировать советник с указанными выше параметрами на периоде в три последних года на четырех валютных парах, используя таймфрейм Н1 (см. рис. 9-12).

Игорь Герасько - Phoenix 4 - первое место на чемпионате АТС


Игорь Герасько - Phoenix 4 - первое место на чемпионате АТС


Игорь Герасько - Phoenix 4 - первое место на чемпионате АТС
Игорь Герасько - Phoenix 4 - первое место на чемпионате АТС


EURUSD. Наибольшая прибыль была сформирована за довольно короткий промежуток времени, но отсутствие существенных просадок на первой половине графика тоже говорит только в пользу стратегии. Наклон кривой баланса хоть и не очень ярко выражен, но кроме как восходящим назвать его трудно. Чистая прибыль составила 2600.90 с максимальной просадкой 1018.40 (ФВ = 2.55). Можно сказать, что показатели довольно радужные.

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

GBPUSD. Вот такая эта валютная пара! Даже из такой большой просадки может выбросить результаты в прибыль. Чистая прибыль 441.84 и максимальная просадка 2500.60. Но глубокая и продолжительная «яма» на графике выглядит довольно убедительно для того, чтобы сказать «все с этой парой ясно...»

USDJPY. Эта пара с приключениями, но все же более уверенно, чем фунт, выносит нас к конечной чистой прибыли 1692.77 и самой маленькой из всех пар просадкой 980.24 (ФВ = 1.73). За иеной, похоже, начинает закрепляться очень неплохая традиция - если эксперт на ней показывает чистую прибыль, большую, чем максимальная просадка, то просадка в натуральном значении будет самой меньшей из всех тестируемых валютных пар.

Заключение

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

С уважением, Игорь Герасько





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