Торговля по каналам Дончиана

Alexander Fedosov | 3 апреля, 2017

Содержание

Введение

Канал Дончиана — технический индикатор, который был разработан еще в начале 1970-х годов. Тогда он назывался Скользящим каналом, но впоследствии был переименован в честь своего создателя, Ричарда Дончиана. Этот индикатор определяет степень волатильности рынка на основе заданного диапазона цен при помощи применения недавних минимумов и максимумов. Визуально канал Дончиана представляет собой две линии, внутри которых происходят ценовые колебания. Сигналы на продажу или покупку — выходы цены за нижнюю или верхнюю границы канала, соответственно. При построении канала автор рекомендовал использовать ценовой диапазон, равный 20 (примерное число рабочих дней за месяц) и таймфрейм D1.


Принцип работы и применение канала Дончиана

Я решил не изобретать велосипед и не стал делать очередную программную реализацию этого индикатора, а взял за основу его модификацию, которая замечательно характеризует стиль торговли по этой системе — Donchian Channels System. На рис.1 по свечам, окрашенным в розовый и синий цвета, хорошо видны места, где происходит пробой границ канала —  то есть места, где предполагается вход в рынок.


Рис.1. Принцип работы и точки входа в рынок по каналам Дончиана.

Обратите внимание на красные зоны, помеченные на графике. Это главный недостаток канала Дончиана — так называемые ложные пробои, после которых цена вновь откатывается в свой диапазон. Поэтому входить в рынок только по каналу Дончиана, без дополнительного подтверждения, было бы опрометчиво. Чтобы более ясно представлять суть индикатора, давайте разберем параметры и реализацию используемой модификации:

//+----------------------------------------------+
//|  Входные параметры индикатора                |
//+----------------------------------------------+
input uint           DonchianPeriod=20;            // Период усреднения
input Applied_Extrem Extremes=HIGH_LOW;            // Тип экстремумов
input uint           Shift=2;                      // Горизонтальное смещение в барах 
//+----------------------------------------------+

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

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

//+----------------------------------------------+
//|  Объявление перечисления                     |
//+----------------------------------------------+
enum Applied_Extrem //Тип экстремумов
  {
   HIGH_LOW,
   HIGH_LOW_OPEN,
   HIGH_LOW_CLOSE,
   OPEN_HIGH_LOW,
   CLOSE_HIGH_LOW
  };

  • HIGH_LOW — классическое применение High и Low свечей.
  • HIGH_LOW_OPEN — в этой интерпретации для построения верхней границы канала используется среднее значение между максимумом цены открытия и максимумов свечей в заданном ценовом диапазоне. Для нижней границы используются минимумы.
  • HIGH_LOW_CLOSE — для построения верхней границы среднее значение между максимумом цены закрытия и и максимумов свечей в заданном ценовом диапазоне. Для нижней границы используются минимумы.
  • OPEN_HIGH_LOW — для построения верхней границы берется максимум цен открытия в заданном ценовом диапазоне, для нижней — минимум.
  • CLOSE_HIGH_LOW — для построения верхней границы берется максимум цен закрытия в заданном ценовом диапазоне, для нижней — минимум.

Листинг реализации различных типов экстремумов представлен ниже:

for(bar=first; bar<rates_total && !IsStopped(); bar++)
     {
      switch(Extremes)
        {
         case HIGH_LOW:
            SsMax=high[ArrayMaximum(high,bar,DonchianPeriod)];
            SsMin=low[ArrayMinimum(low,bar,DonchianPeriod)];
            break;

         case HIGH_LOW_OPEN:
            SsMax=(open[ArrayMaximum(open,bar,DonchianPeriod)]+high[ArrayMaximum(high,bar,DonchianPeriod)])/2;
            SsMin=(open[ArrayMinimum(open,bar,DonchianPeriod)]+low[ArrayMinimum(low,bar,DonchianPeriod)])/2;
            break;

         case HIGH_LOW_CLOSE:
            SsMax=(close[ArrayMaximum(close,bar,DonchianPeriod)]+high[ArrayMaximum(high,bar,DonchianPeriod)])/2;
            SsMin=(close[ArrayMinimum(close,bar,DonchianPeriod)]+low[ArrayMinimum(low,bar,DonchianPeriod)])/2;
            break;

         case OPEN_HIGH_LOW:
            SsMax=open[ArrayMaximum(open,bar,DonchianPeriod)];
            SsMin=open[ArrayMinimum(open,bar,DonchianPeriod)];
            break;

         case CLOSE_HIGH_LOW:
            SsMax=close[ArrayMaximum(close,bar,DonchianPeriod)];
            SsMin=close[ArrayMinimum(close,bar,DonchianPeriod)];
            break;
        }


Разработка торговой системы

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

1. Подтверждающий сигнал

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

  • Average Directional Movement Index(ADX)  — Индекс Среднего Направления Движения. Тандем с этим индикатором даст возможность оценивать состояние и силу текущего тренда и осуществлять вход при пробое границ канала.
  • Moving Average Convergence/Divergence(MACD) — осциллятор Схождение/Расхождение Скользящих Средних. В этой системе MACD будет отслеживать текущую тенденцию. При пробое границ канала мы будем проверять, соответствует ли он направлению рынка или же это случайный выброс цены (ложный пробой).
  • Третьим подтверждающим сигналом было решено выбрать сразу два: Average Speed (средняя скорость изменения цены в пунктах/мин.) и X4Period_RSI_Arrows (семафорный индикатор из четырех разнопериодных RSI).

2. Формализация торговых систем

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

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

Далее следует сформулировать условия входа для всех трех торговых стратегий:

#1. Канал Дончиана + ADX.

Условия этой системы:

  • Происходит пробой верхней или нижней границы канала Дончиана.
  • Основная линия силы тренда ADX должны быть выше предустановленного уровня ADX Level.
  • При пробое вверх линия DI+ должна быть выше DI-. Соответственно, при пробое вниз DI- выше DI+.

Рис.2. Условия входа в рынок стратегии канал Дончиана+ADX

#2. Канал Дончиана + MACD.  

Условия этой системы:

  • Происходит пробой верхней или нижней границы канала Дончиана.
  • При этом значение гистограммы выше нуля и выше сигнальной линии при покупке.
  • Значение гистограммы ниже нуля и меньше сигнальной линии при продаже.

Рис.3. Условия входа в рынок стратегии канал Дончиана+MACD

#3. Канал Дончиана + (Average Speed и X4Period_RSI_Arrows).

Условия этой системы выглядят следующим образом:

  • Происходит пробой верхней или нижней границы канала Дончиана.
  • При этом значение Average Speed должно быть выше 1, а семафорный RSI должен показывать как минимум 2 точки над свечой при продаже, и под свечой при покупке.

Рис.4. Условия входа в рынок стратегии канал Дончиана+(Average Speed и X4Period_RSI_Arrows)

Реализация торговой системы

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

//+------------------------------------------------------------------+
//|  Объявление перечислений типов стратегии                         |
//+------------------------------------------------------------------+
enum Strategy
  {
   Donchian=0,
   Donchian_ADX,
   Donchian_MACD,
   Donchian_AvrSpeed_RSI
  };

  • Donchian — пробойная стратегия с применением только каналов Дончиана.
  • Donchian_ADX — стратегия с фильтром в качестве силы тренда индикатора ADX.
  • Donchian_MACD — стратегия с фильтром в качестве сигналов осциллятора MACD.
  • Donchian_AvrSpeed_RSI — стратегия с фильтром в качестве сигналов скорости изменения цены и  семафорного разнопериодного RSI.

Далее объявляем типы экстремумов каналов Дончиана, которые будут тестироваться:

//+------------------------------------------------------------------+
//| Объявление перечислений типов экстремумов                        |
//+------------------------------------------------------------------+
enum Applied_Extrem
  {
   HIGH_LOW,
   HIGH_LOW_OPEN,
   HIGH_LOW_CLOSE,
   OPEN_HIGH_LOW,
   CLOSE_HIGH_LOW
  };

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

//+------------------------------------------------------------------+
//|  Перечисление для вариантов расчёта лота                         |
//+------------------------------------------------------------------+
enum MarginMode
  {
   FREEMARGIN=0,     //MM Free Margin
   BALANCE,          //MM Balance
   LOT               //Constant Lot
  };

  • FREEMARGIN — расчет базового лота от свободной маржи.
  • BALANCE — расчет от текущего баланса на счете.
  • LOT — без изменений. Используется базовый лот, установленный вручную.

В качестве системы сопровождения открытых позиций на основе эксперта Универсальный трейлинг-стоп был разработан класс CTrailing, который находится в файле Trailing.mqh.

Ниже представлены методы сопровождения позиций, а также входные параметры:

enum   TrallMethod
  {
   b=1,     //По экстремумам свечей
   c=2,     //По фракталам
   d=3,     //По индикатору ATR
   e=4,     //По индикатору Parabolic
   f=5,     //По индикатору МА
   g=6,     //% от профита
   i=7,     //По пунктам
  };


//--- Параметры Трейлинг-стопа

input bool                 UseTrailing=true;                            //Использование Трейлинг-стопа
input bool                 VirtualTrailingStop=false;                   //Виртуальный Трейлинг-стоп
input TrallMethod          parameters_trailing=7;                       //Метод Трейлинг-стопа

input ENUM_TIMEFRAMES      TF_Tralling=PERIOD_CURRENT;                  //Таймфрейм индикаторов

input int                  StepTrall=50;                                //Шаг перемещения стоплосс(в пунктах)
input int                  StartTrall=100;                              //Минимальная прибыль трала(в пунктах)

input int                  period_ATR=14;                               //Период ATR (метод 3)

input double               step_PSAR=0.02;                              //Шаг PSAR (метод 4)
input double               maximum_PSAR=0.2;                            //Максимум PSAR (метод 4)

input int                  ma_period=34;                                //Период МА (метод 5)
input ENUM_MA_METHOD       ma_method=MODE_SMA;                          //Метод усреднения  (метод 5)
input ENUM_APPLIED_PRICE   applied_price=PRICE_CLOSE;                   //Тип цены  (метод 5)

input double               PercentProfit=50;                            //Процент от профита (метод 6)

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

  • тип стратегии;
  • тип Трейлинг-стопа;
  • тип Манименеджмента;
  • тейк-профит;
  • стоп-лосс.

Для отображения был разработан класс CDonchianUI, который находится в файле DonchianUI.mqh. При желании можно добавить собственные значения. Визуальное представление панели изображено на рис.5.

Рис.5. Информационная панель основных режимов Donchian Expert.

Тестирование

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

Параметр Значение
Интервал тестирования 01.03.2016 — 01.03.2017
Рынок EURUSD/GOLD-6.17
Режим торговли Каждый тик на основе реальных тиков
Начальный депозит 1000 USD
Плечо  1:500
Сервер MetaQuotes

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

Блок советника Режимы тестирования
Манименеджмент Постоянный лот/ От баланса
Рабочий таймфрейм M30 - D1
Сопровождение открытой позиции Трейлинг-стоп/ Без сопровождения
Тип стратегии Donchian/Donchian+ADX/Donchian+MACD/Donchian+Avr.Speed+RSI

Поясню, почему в Манименеджменте выбрано только 2 режима: при тестировании нагрузка на используемый депозит будет только от нашего советника, и в рынке будет только одна позиция, поэтому режим От баланса и От свободной маржи, по сути, будет одним и тем же. 

1. Торговая стратегия Канал Дончиана.

Первой протестируем стратегию только по каналам Дончиана.


Рис. 6. Торговая стратегия Donchian на EURUSD.

В ходе тестирования и оптимизации стратегии на EURUSD были сделаны следующие выводы:

  • В заданном временном диапазоне лучшие результаты были на М30-Н1.
  • При этом период работы индикатора 10-12.
  • С точки зрения применяемой цены лучшим в индикаторе стал режим CLOSE_HIGH_LOW.
  • Трейлинг-стоп оказался малоэффективен в сравнении с режимом без него.
  • Общий вывод: стратегия, основанная на работе только по каналу Дончиана показала себя как классическая трендовая стратегия, имеющая серии прибыльных сделок при сильных движениях рынка.
//+------------------------------------------------------------------+
//| Входные параметры эксперта                                       |
//+------------------------------------------------------------------+
sinput string              Inp_EaComment="Donchian Expert";             //EA комментарий
input double               Inp_Lot=0.01;                                //Базовый лот
input MarginMode           Inp_MMode=LOT;                               //Манименеджмент
input int                  Inp_MagicNum=555;                            //Магик
input int                  Inp_StopLoss=400;                            //Стоп-лосс(в пунктах)
input int                  Inp_TakeProfit=600;                          //Тейк-профит(в пунктах)
input int                  Inp_Deviation = 20;                          //Проскальзывание
input ENUM_TIMEFRAMES      InpInd_Timeframe=PERIOD_M30;                 //Рабочий таймфрейм
input bool                 InfoPanel=false;                             //Отображение инфопанели
//--- Параметры индикатора Donchian Channel System

input uint                 DonchianPeriod=10;                           //Период канала
input Applied_Extrem       Extremes=CLOSE_HIGH_LOW;                     //Тип экстремумов
//--- Выбор применяемой стратегии

input Strategy             CurStrategy=Donchian;                        //Выбранная стратегия

//--- Параметры Трейлинг стопа

input bool                 UseTrailing=false;                           //Использование Трейлинг-стопа

В сравнении с валютной парой при тестировании на фьючерсе GOLD-6.17 с тем же периодом и на тех же таймфреймах, что и EURUSD - M30-H1, результат был лучше. 

Рис.7. Торговая стратегия Donchian на GOLD-6.17.

//+------------------------------------------------------------------+
//| Входные параметры эксперта                                       |
//+------------------------------------------------------------------+
sinput string              Inp_EaComment="Donchian Expert";             //EA комментарий
input double               Inp_Lot=0.01;                                //Базовый лот
input MarginMode           Inp_MMode=LOT;                               //Манименеджмент
input int                  Inp_MagicNum=555;                            //Магик
input int                  Inp_StopLoss=400;                            //Стоп-лосс(в пунктах)
input int                  Inp_TakeProfit=600;                          //Тейк-профит(в пунктах)
input int                  Inp_Deviation = 20;                          //Проскальзывание
input ENUM_TIMEFRAMES      InpInd_Timeframe=PERIOD_M30;                 //Рабочий таймфрейм
input bool                 InfoPanel=false;                             //Отображение инфопанели
//--- Параметры индикатора Donchian Channel System

input uint                 DonchianPeriod=12;                           //Период канала
input Applied_Extrem       Extremes=CLOSE_HIGH_LOW;                     //Тип экстремумов
//--- Выбор применяемой стратегии

input Strategy             CurStrategy=Donchian;                        //Выбранная стратегия
....

//--- Параметры Трейлинг стопа

input bool                 UseTrailing=true;                            //Использвание Трейлинг-стопа
input bool                 VirtualTrailingStop=false;                   //Виртуальный Трейлинг-стоп
input TrallMethod          parameters_trailing=7;                       //Метод Трейлинг-стопа

input ENUM_TIMEFRAMES      TF_Tralling=PERIOD_CURRENT;                  //Таймфрейм индикаторов

input int                  StepTrall=50;                                //Шаг перемещения Стоплосса(в пунктах)
input int                  StartTrall=100;                              //Минимальная прибыль трала(в пунктах)

2. Торговая стратегия Канал Дончиана и ADX.

По результатам тестирования стратегии с ADX-фильтром сигналов канала Дончиана были сделаны следующие выводы:

  • Количество сделок уменьшилось, что было ожидаемо. 
  • Лучшим рабочим таймфреймом по-прежнему остался М30.
  • Процент прибыльных сделок стал выше.
  • Эффективный период канала стал 18, при этом период ADX — 10.
  • По-прежнему самой эффективной примененной ценой в канале Дончиана остается CLOSE_HIGH_LOW.


Рис.8. Торговая стратегия Donchian + ADX на EURUSD.

//+------------------------------------------------------------------+
//| Входные параметры эксперта                                       |
//+------------------------------------------------------------------+
sinput string              Inp_EaComment="Donchian Expert";             //EA комментарий
input double               Inp_Lot=0.01;                                //Базовый лот
input MarginMode           Inp_MMode=LOT;                               //Манименеджмент
input int                  Inp_MagicNum=555;                            //Магик
input int                  Inp_StopLoss=400;                            //Стоп-лосс(в пунктах)
input int                  Inp_TakeProfit=600;                          //Тейк-профит(в пунктах)
input int                  Inp_Deviation = 20;                          //Проскальзывание
input ENUM_TIMEFRAMES      InpInd_Timeframe=PERIOD_M30;                 //Рабочий таймфрейм
input bool                 InfoPanel=false;                             //Отображение инфопанели
//--- Параметры индикатора Donchian Channel System

input uint                 DonchianPeriod=18;                           //Период канала
input Applied_Extrem       Extremes=CLOSE_HIGH_LOW;                     //Тип экстремумов
//--- Выбор применяемой стратегии

input Strategy             CurStrategy=Donchian_ADX;                    //Выбранная стратегия
//--- Параметры индикатора ADX

input int                  ADX_period=10;
input double               ADX_level=20;

Результаты на фьючерсах показали, что на таймфрейме H1 с периодом канала Дончиана 18 и ADX 8 результаты схожи с предыдущей стратегией. При этом опять же лучшие результаты были показаны при использовании канала по ценам закрытия.


Рис.9. Торговая стратегия Donchian + ADX на GOLD-6.17.

//+------------------------------------------------------------------+
//| Входные параметры эксперта                                       |
//+------------------------------------------------------------------+
sinput string              Inp_EaComment="Donchian Expert";             //EA комментарий
input double               Inp_Lot=0.01;                                //Базовый лот
input MarginMode           Inp_MMode=LOT;                               //Манименеджмент
input int                  Inp_MagicNum=555;                            //Магик
input int                  Inp_StopLoss=400;                            //Стоп-лосс(в пунктах)
input int                  Inp_TakeProfit=600;                          //Тейк-профит(в пунктах)
input int                  Inp_Deviation = 20;                          //Проскальзывание
input ENUM_TIMEFRAMES      InpInd_Timeframe=PERIOD_H1;                  //Рабочий таймфрейм
input bool                 InfoPanel=false;                             //Отображение инфопанели
//--- Параметры индикатора Donchian Channel System

input uint                 DonchianPeriod=18;                           //Период канала
input Applied_Extrem       Extremes=CLOSE_HIGH_LOW;                     //Тип экстремумов
//--- Выбор применяемой стратегии

input Strategy             CurStrategy=Donchian_ADX;                    //Выбранная стратегия
//--- Параметры индикатора ADX

input int                  ADX_period=8;
input double               ADX_level=20;

//--- Параметры Трейлинг стопа

input bool                 UseTrailing=true;                            //Использование Трейлинг-стопа
input bool                 VirtualTrailingStop=false;                   //Виртуальный Трейлинг-стоп
input TrallMethod          parameters_trailing=7;                       //Метод Трейлинг-стопа

input ENUM_TIMEFRAMES      TF_Tralling=PERIOD_CURRENT;                  //Таймфрейм индикаторов

input int                  StepTrall=50;                                //Шаг перемещения стоплосс(в пунктах)
input int                  StartTrall=100;                              //Минимальная прибыль трала(в пунктах)

3. Торговая стратегия Канал Дончиана и MACD.

По результатам тестирования стратегии с MACD в качестве фильтра сигналов канала Дончиана были сделаны следующие выводы:

  • Лучшие результаты показаны опять же на таймфрейме H1.
  • Смена параметров индикатора MACD не внесла каких-то серьезных изменений.

Рис.10. Торговая стратегия Donchian + MACD на EURUSD.

//+------------------------------------------------------------------+
//| Входные параметры эксперта                                       |
//+------------------------------------------------------------------+
sinput string              Inp_EaComment="Donchian Expert";             //EA комментарий
input double               Inp_Lot=0.01;                                //Базовый лот
input MarginMode           Inp_MMode=LOT;                               //Манименеджмент
input int                  Inp_MagicNum=555;                            //Магик
input int                  Inp_StopLoss=400;                            //Стоп-лосс(в пунктах)
input int                  Inp_TakeProfit=600;                          //Тейк-профит(в пунктах)
input int                  Inp_Deviation = 20;                          //Проскальзывание
input ENUM_TIMEFRAMES      InpInd_Timeframe=PERIOD_H1;                  //Рабочий таймфрейм
input bool                 InfoPanel=true;                              //Отображение инфопанели
//--- Параметры индикатора Donchian Channel System

input uint                 DonchianPeriod=16;                           //Период канала
input Applied_Extrem       Extremes=CLOSE_HIGH_LOW;                     //Тип экстремумов
//--- Выбор применяемой стратегии

input Strategy             CurStrategy=Donchian_MACD;                   //Выбранная стратегия

//--- Параметры индикатора MACD

input int                  InpFastEMA=12;                               //Fast EMA period
input int                  InpSlowEMA=26;                               //Slow EMA period
input int                  InpSignalSMA=9;                              //Signal SMA period
input ENUM_APPLIED_PRICE   InpAppliedPrice=PRICE_CLOSE;                 //Applied price

При тестировании фьючерсов, как и в предыдущей стратегии, лучшим периодом канала Дончиана был 10. Вариант с использованием трейлинг-стопа оказался более эффективным, чем без него.

Рис.11. Торговая стратегия Donchian + MACD на GOLD-6.17.

//+------------------------------------------------------------------+
//| Входные параметры эксперта                                       |
//+------------------------------------------------------------------+
sinput string              Inp_EaComment="Donchian Expert";             //EA комментарий
input double               Inp_Lot=0.01;                                //Базовый лот
input MarginMode           Inp_MMode=LOT;                               //Манименеджмент
input int                  Inp_MagicNum=555;                            //Магик
input int                  Inp_StopLoss=400;                            //Стоп-лосс(в пунктах)
input int                  Inp_TakeProfit=600;                          //Тейк-профит(в пунктах)
input int                  Inp_Deviation = 20;                          //Проскальзывание
input ENUM_TIMEFRAMES      InpInd_Timeframe=PERIOD_M30;                 //Рабочий таймфрейм
input bool                 InfoPanel=true;                              //Отображение инфопанели
//--- Параметры индикатора Donchian Channel System

input uint                 DonchianPeriod=10;                           //Период канала
input Applied_Extrem       Extremes=CLOSE_HIGH_LOW;                     //Тип экстремумов
//--- Выбор применяемой стратегии

input Strategy             CurStrategy=Donchian_MACD;                   //Выбранная стратегия

//--- Параметры индикатора MACD

input int                  InpFastEMA=12;                               //Fast EMA period
input int                  InpSlowEMA=26;                               //Slow EMA period
input int                  InpSignalSMA=9;                              //Signal SMA period
input ENUM_APPLIED_PRICE   InpAppliedPrice=PRICE_CLOSE;                 //Applied price

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

4. Торговая стратегия Канал Дончиана и Average Speed+X4Period_RSI_Arrows.

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

Рис.12. Торговая стратегия Donchian + Average Speed+X4Period_RSI_Arrows на EURUSD.

//+------------------------------------------------------------------+
//| Входные параметры эксперта                                       |
//+------------------------------------------------------------------+
sinput string              Inp_EaComment="Donchian Expert";             //EA комментарий
input double               Inp_Lot=0.01;                                //Базовый лот
input MarginMode           Inp_MMode=LOT;                               //Манименеджмент
input int                  Inp_MagicNum=555;                            //Магик
input int                  Inp_StopLoss=400;                            //Стоп-лосс(в пунктах)
input int                  Inp_TakeProfit=600;                          //Тейк-профит(в пунктах)
input int                  Inp_Deviation = 20;                          //Проскальзывание
input ENUM_TIMEFRAMES      InpInd_Timeframe=PERIOD_H1;                  //Рабочий таймфрейм
input bool                 InfoPanel=true;                              //Отображение инфопанели
//--- Параметры индикатора Donchian Channel System

input uint                 DonchianPeriod=12;                           //Период канала
input Applied_Extrem       Extremes=CLOSE_HIGH_LOW;                     //Тип экстремумов
//--- Выбор применяемой стратегии

input Strategy             CurStrategy=Donchian_AvrSpeed_RSI;           //Выбранная стратегия

//--- Параметры индикатора Average Speed

input int                  Inp_Bars=1;                                  //Кол-во баров
input ENUM_APPLIED_PRICE   Price=PRICE_CLOSE;                           //Применяемая цена
input double               Trend_lev=2;                                 //Уровень тренда
//--- Параметры индикатора x4period_rsi_arrows

input uint                 RSIperiod1=7;                                //Период RSI_1
input uint                 RSIperiod2=12;                               //Период RSI_2
input uint                 RSIperiod3=18;                               //Период RSI_3
input uint                 RSIperiod4=32;                               //Период RSI_4
input ENUM_APPLIED_PRICE   Applied_price=PRICE_WEIGHTED;                //Применяемая цена
input uint                 rsiUpperTrigger=62;                          //Уровень перекупленности
input uint                 rsiLowerTrigger=38;                          //Уровень перепроданности
//--- Параметры Трейлинг стопа

input bool                 UseTrailing=false;                           //Использование Трейлинг-стопа

Выводы

На основе тестирования торговой системы по каналам Дончиана были сделаны следующие выводы и замечания о ее особенностях:

  • Торговля по каналам показала себя как классическая трендовая стратегия, и для ее улучшения необходимо вводить фильтры бокового движения.
  • Результаты тестов оказались лучше на срочном рынке.
  • В отличие от классического расчета границ каналов по максимумам и минимумам, заметно лучше себя показал режим CLOSE_HIGH_LOW (по ценам закрытия). Это объясняется тем, что для тестируемого EURUSD на современном рынке характерны выбросы цены в виде длинных теней. Они сильно искажали границы канала, а цены закрытия оказались более объективными.
  • Также лучшие показатели были отмечены при работе не на дневных графиках, а на таймфреймах М30 — H1.
  • При этом эффективный период колеблется от 10 до 20 свечей.

Заключение

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

Программы, используемые в статье:

#
 Имя
Тип
Описание
1
DonchianExpert.mq5 Эксперт
 Комплексный торговый советник, включающий 4 стратегии, основанных на каналах Дончиана.
2
DonchianUI.mqh Библиотека  Класс пользовательского интерфейса
3
TradeFunctions.mqh Библиотека  Класс торговых функций.
4
Trailing.mqh Библиотека  Класс сопровождения открытых позиций.
5
average_speed.mq5 Индикатор  Индикатор средней скорости изменения цены.
6
donchian_channels_system.mq5 Индикатор  Индикатор канал Дончиана с отображением свечей, пробивающих границы канала.
7 x4period_rsi_arrows.mq5 Индикатор  Семафорный индикатор из четырех разнопериодных RSI.