Приблизительное время чтения: 13 минут
Какие фьючерсные рынки хорошо работают с использованием ценовых каналов для определения входов и выходов? Вот тест, позволяющий выяснить это на примере стратегии следования за трендом.
Ценовой канал — известный метод технического анализа, также известный как канал Дончиана. Этот индикатор характеризуется двумя параллельными полосами, верхней и нижней, которые наносятся на график, чтобы охватить цены, как если бы они находились внутри канала. Пример см. на рисунке 1.

Для ценового канала две линии, образующие полосу, получаются путем соединения наибольших значений максимумов и наименьших значений минимумов за последние n баров. Помимо простоты понимания и использования, универсальность ценового канала позволяет использовать его в различных торговых стратегиях.
Например, мы можем использовать его в стратегии следования за трендом, покупая у верхней границы канала или продавая у его нижней границы, чтобы извлечь выгоду из продолжения тренда. Или, наоборот, мы можем использовать его в разворотной стратегии, продавая вблизи верхней границы канала и покупая вблизи его нижней границы, ожидая изменения направления движения цены после бычьего или медвежьего эксцесса в краткосрочной перспективе.
ЛОГИКА ТРЕНДООБРАЗУЮЩЕЙ СТРАТЕГИИ С ИСПОЛЬЗОВАНИЕМ ЦЕНОВОГО КАНАЛА
В этой статье мы изучим поведение ценовых каналов в рамках стратегии следования за трендом, чтобы проверить, какие рынки действительно предлагают наилучшие результаты. Для этого мы протестируем ее на широкой корзине фьючерсов — от фондовых индексов и сырьевых товаров до валют.
Мы будем использовать простую стратегию, которую применим на 60-минутном таймфрейме с бэктестингом с 2010 по конец 2023 года.
Вот код этой системы. Мы создали две переменные (upper channel и lower channel), которые определяют соответственно верхнюю и нижнюю границы канала Дончиана, и вход (MyLength), где мы определяем период для расчета максимумов и минимумов канала.
var: UpperChannel(0), LowerChannel(0);
UpperChannel = HighestFC(h, MyLength);
LowerChannel = LowestFC(l, MyLength);
if EntriesToday(d)=0 then begin
buy next bar UpperChannel stop;
sellshort next bar LowerChannel stop;
end;
setstopcontract;
Правила просты и заключаются в покупке у верхней границы и продаже у нижней границы канала. В этом первом тесте мы не будем применять стоп-лосс или цель по прибыли, поэтому каждая сделка будет закрываться только с открытием позиции в противоположном направлении.
Сначала мы оптимизируем входное значение MyLength от 10 до 100 с шагом 10, чтобы найти оптимальное число периода (рис. 2).

Результаты показывают, что наилучшие значения чистой прибыли мы получаем, устанавливая количество периодов между 20 и 40.
Учитывая, что мы работаем на 60-минутных барах, это означает, что максимумы и минимумы, колеблющиеся между чуть меньше дня (MyLength=20) и чуть больше (MyLength=40), являются наиболее значимыми и эффективными для входа в позицию.
Поэтому мы выбрали значение 20, так как оно обеспечивает наилучшую производительность и большое количество сделок, на которых можно проводить тесты. Результирующая кривая эквити для торговой системы, использующей 20 периодов, показана на рисунке 3. Результаты торговой стратегии при использовании 20 периодов представлены в таблице на рисунке 4.



Немного углубившись в результаты (см. Рисунок 5), мы можем сделать несколько наблюдений. Мы видим, что все сырьевые товары, за исключением фьючерса на медь @HG, достигли положительных результатов. Фьючерсы на энергетический сектор (сырая нефть, топочный мазут, бензин RBOB и природный газ), а также металлы (золото, платина и серебро) демонстрируют неплохую чистую прибыль. Некоторые мягкие сырьевые товары, такие как кофе @KC и хлопок @CT, также демонстрируют хорошие показатели. Примечательно, что фьючерс на биткоин @BTC, несмотря на свое недавнее появление, показывает отличные результаты, что, безусловно, связано с сильным бычьим трендом, характерным для него. Как и ожидалось, рынки с более среднереверсивной тенденцией показывают худшие результаты, например, большинство валют и фьючерсы на облигации (@TY и @US).
В целом, мы можем быть довольны проведенным тестированием. Результаты хорошие, учитывая, что мы еще не применяли стоп-лосс и фильтры для ограничения количества заключенных сделок, которых на самом деле очень много.
УТОЧНЕНИЕ УСЛОВИЙ ВЫХОДА
Мы делаем еще один шаг в нашем исследовании и пытаемся применить более продвинутый риск-менеджмент к открытым позициям: Применяем ли мы фиксированный денежный стоп-лосс, зная, что у нас есть корзина фьючерсов с очень разными характеристиками, или пытаемся ограничить риск другими способами?
Мы знаем, что наша стратегия использует ценовой канал не только для определения уровней входа, но и для выхода из позиций. На практике, открыв сделку, мы закрываем ее, когда цены касаются противоположной стороны канала, открывая позицию в противоположном направлении.
Например, мы можем добавить условие на рыночную позицию. Это позволит нам закрывать без обратного входа все те сделки, которые в тот же день, когда они были сгенерированы, имели условия для закрытия, то есть с ценами, которые коснулись противоположной стороны канала.
Затем мы интегрируем наш скрипт с помощью этих нескольких строк кода:
if marketposition=-1 then buytocover next bar UpperChannel stop;

Результаты применения этого «дончианского трейлинга», представленные на рисунке 6, показывают, что его использование и, следовательно, более эффективное управление открытой торговлей приносит очевидные преимущества в плане чистой прибыли, существенно оставляя общую максимальную просадку неизменной.
УЛУЧШЕНИЕ КАЧЕСТВА ТОРГОВЛИ ЗА СЧЕТ ИСПОЛЬЗОВАНИЯ ФИЛЬТРОВ И УСЛОВИЙ
До сих пор тестирование ограничивалось использованием ценовых каналов для входов и выходов без ограничения количества сделок, которое по-прежнему велико, что оставляет достаточно места для использования какого-либо фильтра для отсева потенциально более прибыльных.
Какие же фильтры применить? Некоторые гипотезы развития могут заключаться в использовании фильтров, связанных с волатильностью, трендом, определенными ценовыми конфигурациями, или в различном управлении временем, в которое разрешаются входы в рамках сессии каждого инструмента.
Если речь идет об исследовании системы следования за трендом, применяемой к корзине, состоящей в основном из сырьевых товаров, то идея может заключаться в применении некоторого фильтра, позволяющего выявлять ситуации, когда цены находятся в состоянии волатильного сжатия и готовы к последующему расширению, что, как мы знаем, особенно эффективно на данном типе фьючерсов.
Для этого можно использовать ценовой паттерн, проанализированный в одной из наших предыдущих статей «Ежедневный фактор: Фильтр волатильности», может оказаться полезным для нашего анализа. Что представляет собой этот паттерн?
Он связывает ценовой размах всей предыдущей сессии с сегодняшней, так называемый диапазон (максимумы(1)-минимумы(1)), с его соответствующим телом (открытие(1)-закрытие(1)). Ситуации низкой волатильности будут идентифицироваться по низкому соотношению между телом и диапазоном, что является признаком неуверенности рынка и операторов. С другой стороны, высокое соотношение между телом и диапазоном будет указывать на то, что волатильность и цены находятся в сильной экспансии.
Поэтому мы интегрируем наш скрипт следующим образом: вводим переменную DF, сокращение от «ежедневный фактор», и входной параметр df_level, чтобы определить пороговое значение ежедневного фактора, выше которого мы не будем работать.
var: DF(0);
if (highs(1)-lows(1))<>0 then begin
DF=absvalue(opens(1)-closes(1))/(highs(1)-lows(1));
end;
if EntriesToday(d)=0 and DF<df_level then begin
buy next bar UpperChannel stop;
sellshort next bar LowerChannel stop;
end;

Затем мы оптимизируем входной параметр «df_level» от 0,3 до 1 с шагом 0,05. Отчет об оптимизации от MultiCharts на рисунке 7 указывает на неоспоримое преимущество ограничения входов в пределах определенного порогового уровня «дневного фактора». Все комбинации до 0,55 фактически являются улучшением по сравнению со стартовой ситуацией, как с точки зрения чистой прибыли, так и максимальной просадки. Очевидно, что при снижении пороговых уровней условия для открытия сделок будут все более жесткими, что напрямую скажется на количестве сделок, которое, соответственно, будет уменьшаться.
Среди различных альтернатив мы выбираем значение 0,55. Это означает, что мы добавим в нашу систему условие, при котором позиция будет открываться только в том случае, если тело предыдущей дневной сессии было меньше 55 % от диапазона этой же сессии. Это значение позволяет нам отфильтровать большое количество сделок, с 54 000 до чуть более 40 000, сохраняя чистую прибыль чуть выше, чем у нефильтрованной системы, но со средней сделкой от $48 до $64 (см. Рисунок 8).

Если немного углубиться в детали отдельных рынков, то можно заметить, что, например, фьючерс на золото @ GC поднимается с $150 790 до $183 310, фьючерс на бензин RBOB @RB — с $272 000 до $285 625, а биткоин @BTC — с $171 000 до $306 850.
Как подчеркивалось ранее, даже после применения фильтра наилучшие показатели демонстрируют фьючерсы на энергоносители, фьючерсы на металлы и фьючерсы на биткоин.
На рисунке 9 показаны результаты работы уточненной системы, примененной к используемой корзине фьючерсов. На рисунке 10 показана кривая эквити для уточненной системы.


ВЫВОДЫ
В этой статье мы показали результаты простой стратегии, в которой мы применили ценовой канал в качестве инструмента для определения уровней входа по широкому списку фьючерсов. Сравнение результатов с учетом и без учета риск-менеджмента, тем не менее, продемонстрировало эффективность ценового канала как гибкого инструмента для построения торговых систем.
Впоследствии мы убедились, например, что простое применение такого эффективного паттерна, как «дневной фактор», способно отфильтровать и улучшить линию и метрики эквити, особенно для некоторых категорий фьючерсов.
Мы оставляем на усмотрение читателя более тщательное тестирование этого паттерна путем разработки стратегий на конкретных рынках, чтобы полностью убедиться в его силе.
Об Авторе:
Андреа Унгер — профессиональный трейдер с полной занятостью, президент Академии Унгера и автор книги «Метод Унгера». Он является четырехкратным чемпионом мира по трейдингу (2008, 2009, 2010 и 2012), почетным членом SIAT (Итальянское общество технического анализа, отделение IFTA) и выступает по всей Европе, Америке, Австралии и Азии. С ним можно связаться по адресу Andrea@ UngerAcademy.com. Академия Унгера предоставляет услуги трейдерам, в том числе частным лицам, помогая им улучшить свой подход к торговле (более подробную информацию можно найти на сайте https://autc.pro/tasc).
ДОПОЛНИТЕЛЬНАЯ ЛИТЕРАТУРА:
Unger, Andrea [2023]. «The Daily Factor: Фильтр волатильности», Технический анализ акций и товаров, том 41: June.
[2021]. The Successful Trader’s Guide To Money Management: Proven Strategies, Applications, And Management Techniques, Wiley Trading.
[2021]. The Unger Method: Выигрышная стратегия 4-кратного чемпиона мира по трейдингу, The Boss Books.
———————————————
Переведено специально для сайта Finware Technologies, www.finware.ru
Вы можете свободно распространять эту статью любыми способами целиком вместе с этим блоком и действующей гиперссылкой на сайт finware.ru.
———————————————