Скачать MetaTrader 5

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

3 апреля 2017, 16:11
Alexander Fedosov
5
4 751

Содержание

Введение

Канал Дончиана — технический индикатор, который был разработан еще в начале 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.



Прикрепленные файлы |
MQL5.zip (712.2 KB)
Aleksey Vyazmikin
Aleksey Vyazmikin | 4 май 2017 в 00:21

Канал Дончиана == стандартный ЗигЗаг - соответственно сигнал будет сильно запаздывать.

Канал Дончиана - хорошо подходит для трала, и для тейк профита при контр тренде.

natyog
natyog | 9 май 2017 в 12:34
'DonchianExpert.mq5' DonchianExpert.mq5 1 1
'TradeFunctions.mqh' TradeFunctions.mqh 1 1
'PositionInfo.mqh' PositionInfo.mqh 1 1
'Object.mqh' Object.mqh 1 1
'StdLibErr.mqh' StdLibErr.mqh 1 1
'SymbolInfo.mqh' SymbolInfo.mqh 1 1
'Trailing.mqh' Trailing.mqh 1 1
'DonchianUI.mqh' DonchianUI.mqh 1 1
can't open "C:\Program Files\RoboForex - MetaTrader 5\MQL5\include\EasyAndFastGUI\WndEvents.mqh" include file DonchianUI.mqh 6 11
'CWndEvents' - declaration without type DonchianUI.mqh 10 28
'CWndEvents' - syntax error DonchianUI.mqh 10 28
'CDonchianUI' - member function not defined DonchianUI.mqh 51 14
'~CDonchianUI' - member function not defined DonchianUI.mqh 57 15
'OnInitEvent' - member function not defined DonchianUI.mqh 63 19
'OnDeinitEvent' - member function not defined DonchianUI.mqh 69 19
'OnTimerEvent' - member function not defined DonchianUI.mqh 77 19
'OnEvent' - member function not defined DonchianUI.mqh 97 19
'CreateMainPanel' - member function not defined DonchianUI.mqh 113 19
'CreateStatusBar' - member function not defined DonchianUI.mqh 141 19
'CreateLabel1' - member function not defined DonchianUI.mqh 168 19
'CreateLabel2' - member function not defined DonchianUI.mqh 187 19
'CreateLabel3' - member function not defined DonchianUI.mqh 206 19
'CreateCanvasTable' - member function not defined DonchianUI.mqh 224 19
'CDonchianUI' - struct undefined DonchianExpert.mq5 19 1
'CWndEvents' - import not defined DonchianUI.mqh 72 4
')' - semicolon expected DonchianUI.mqh 73 3
'OnTimerEvent' - function already defined and has body DonchianUI.mqh 77 19
'OnTimerEvent' - the declaration not allowed for the current scope DonchianUI.mqh 77 19
'OnEvent' - function already defined and has body DonchianUI.mqh 97 19
'OnEvent' - the declaration not allowed for the current scope DonchianUI.mqh 97 19
'CreateMainPanel' - function already defined and has body DonchianUI.mqh 113 19
'CreateMainPanel' - the declaration not allowed for the current scope DonchianUI.mqh 113 19
'CreateStatusBar' - function already defined and has body DonchianUI.mqh 141 19
'CreateStatusBar' - the declaration not allowed for the current scope DonchianUI.mqh 141 19
'CreateLabel1' - function already defined and has body DonchianUI.mqh 168 19
'CreateLabel1' - the declaration not allowed for the current scope DonchianUI.mqh 168 19
'CreateLabel2' - function already defined and has body DonchianUI.mqh 187 19
'CreateLabel2' - the declaration not allowed for the current scope DonchianUI.mqh 187 19
'CreateLabel3' - function already defined and has body DonchianUI.mqh 206 19
'CreateLabel3' - the declaration not allowed for the current scope DonchianUI.mqh 206 19
'CreateCanvasTable' - function already defined and has body DonchianUI.mqh 224 19
'CreateCanvasTable' - the declaration not allowed for the current scope DonchianUI.mqh 224 19
declaration of 'Trade' hides global declaration at line 17 DonchianExpert.mq5 17 13
   see previous declaration of 'Trade' DonchianExpert.mq5 17 13
declaration of 'Trall' hides global declaration at line 18 DonchianExpert.mq5 18 13
   see previous declaration of 'Trall' DonchianExpert.mq5 18 13
'CDonchianUI' - struct undefined DonchianExpert.mq5 19 1
declaration of 'UI' hides global declaration at line 19 DonchianExpert.mq5 19 13
   see previous declaration of 'UI' DonchianExpert.mq5 19 13
enumeration already defined DonchianExpert.mq5 23 6
'Donchian' - enumerator identifier already defined DonchianExpert.mq5 25 4
'Donchian_ADX' - enumerator identifier already defined DonchianExpert.mq5 26 4
'Donchian_MACD' - enumerator identifier already defined DonchianExpert.mq5 27 4
'Donchian_AvrSpeed_RSI' - enumerator identifier already defined DonchianExpert.mq5 28 4
enumeration already defined DonchianExpert.mq5 33 6
'HIGH_LOW' - enumerator identifier already defined DonchianExpert.mq5 35 4
'HIGH_LOW_OPEN' - enumerator identifier already defined DonchianExpert.mq5 36 4
'HIGH_LOW_CLOSE' - enumerator identifier already defined DonchianExpert.mq5 37 4
'OPEN_HIGH_LOW' - enumerator identifier already defined DonchianExpert.mq5 38 4
'CLOSE_HIGH_LOW' - enumerator identifier already defined DonchianExpert.mq5 39 4
'sinput' - unexpected token DonchianExpert.mq5 44 1
declaration of 'Inp_EaComment' hides global declaration at line 44 DonchianExpert.mq5 44 28
   see previous declaration of 'Inp_EaComment' DonchianExpert.mq5 44 28
'input' - unexpected token DonchianExpert.mq5 45 1
declaration of 'Inp_Lot' hides global declaration at line 45 DonchianExpert.mq5 45 28
   see previous declaration of 'Inp_Lot' DonchianExpert.mq5 45 28
'input' - unexpected token DonchianExpert.mq5 46 1
declaration of 'Inp_MMode' hides global declaration at line 46 DonchianExpert.mq5 46 28
   see previous declaration of 'Inp_MMode' DonchianExpert.mq5 46 28
'input' - unexpected token DonchianExpert.mq5 47 1
declaration of 'Inp_MagicNum' hides global declaration at line 47 DonchianExpert.mq5 47 28
   see previous declaration of 'Inp_MagicNum' DonchianExpert.mq5 47 28
'input' - unexpected token DonchianExpert.mq5 48 1
declaration of 'Inp_StopLoss' hides global declaration at line 48 DonchianExpert.mq5 48 28
   see previous declaration of 'Inp_StopLoss' DonchianExpert.mq5 48 28
'input' - unexpected token DonchianExpert.mq5 49 1
declaration of 'Inp_TakeProfit' hides global declaration at line 49 DonchianExpert.mq5 49 28
   see previous declaration of 'Inp_TakeProfit' DonchianExpert.mq5 49 28
'input' - unexpected token DonchianExpert.mq5 50 1
declaration of 'Inp_Deviation' hides global declaration at line 50 DonchianExpert.mq5 50 28
   see previous declaration of 'Inp_Deviation' DonchianExpert.mq5 50 28
'input' - unexpected token DonchianExpert.mq5 51 1
declaration of 'InpInd_Timeframe' hides global declaration at line 51 DonchianExpert.mq5 51 28
   see previous declaration of 'InpInd_Timeframe' DonchianExpert.mq5 51 28
'input' - unexpected token DonchianExpert.mq5 52 1
declaration of 'InfoPanel' hides global declaration at line 52 DonchianExpert.mq5 52 28
   see previous declaration of 'InfoPanel' DonchianExpert.mq5 52 28
'input' - unexpected token DonchianExpert.mq5 55 1
declaration of 'DonchianPeriod' hides global declaration at line 55 DonchianExpert.mq5 55 28
   see previous declaration of 'DonchianPeriod' DonchianExpert.mq5 55 28
'input' - unexpected token DonchianExpert.mq5 56 1
declaration of 'Extremes' hides global declaration at line 56 DonchianExpert.mq5 56 28
   see previous declaration of 'Extremes' DonchianExpert.mq5 56 28
'input' - unexpected token DonchianExpert.mq5 59 1
declaration of 'CurStrategy' hides global declaration at line 59 DonchianExpert.mq5 59 28
   see previous declaration of 'CurStrategy' DonchianExpert.mq5 59 28
'input' - unexpected token DonchianExpert.mq5 62 1
declaration of 'ADX_period' hides global declaration at line 62 DonchianExpert.mq5 62 28
   see previous declaration of 'ADX_period' DonchianExpert.mq5 62 28
'input' - unexpected token DonchianExpert.mq5 63 1
declaration of 'ADX_level' hides global declaration at line 63 DonchianExpert.mq5 63 28
   see previous declaration of 'ADX_level' DonchianExpert.mq5 63 28
'input' - unexpected token DonchianExpert.mq5 66 1
declaration of 'InpFastEMA' hides global declaration at line 66 DonchianExpert.mq5 66 28
   see previous declaration of 'InpFastEMA' DonchianExpert.mq5 66 28
'input' - unexpected token DonchianExpert.mq5 67 1
declaration of 'InpSlowEMA' hides global declaration at line 67 DonchianExpert.mq5 67 28
   see previous declaration of 'InpSlowEMA' DonchianExpert.mq5 67 28
'input' - unexpected token DonchianExpert.mq5 68 1
declaration of 'InpSignalSMA' hides global declaration at line 68 DonchianExpert.mq5 68 28
   see previous declaration of 'InpSignalSMA' DonchianExpert.mq5 68 28
'input' - unexpected token DonchianExpert.mq5 69 1
declaration of 'InpAppliedPrice' hides global declaration at line 69 DonchianExpert.mq5 69 28
   see previous declaration of 'InpAppliedPrice' DonchianExpert.mq5 69 28
'input' - unexpected token DonchianExpert.mq5 72 1
declaration of 'Inp_Bars' hides global declaration at line 72 DonchianExpert.mq5 72 28
   see previous declaration of 'Inp_Bars' DonchianExpert.mq5 72 28
'input' - unexpected token DonchianExpert.mq5 73 1
declaration of 'Price' hides global declaration at line 73 DonchianExpert.mq5 73 28
   see previous declaration of 'Price' DonchianExpert.mq5 73 28
'input' - unexpected token DonchianExpert.mq5 74 1
declaration of 'Trend_lev' hides global declaration at line 74 DonchianExpert.mq5 74 28
   see previous declaration of 'Trend_lev' DonchianExpert.mq5 74 28
'input' - unexpected token DonchianExpert.mq5 77 1
declaration of 'RSIperiod1' hides global declaration at line 77 DonchianExpert.mq5 77 28
   see previous declaration of 'RSIperiod1' DonchianExpert.mq5 77 28
'input' - unexpected token DonchianExpert.mq5 78 1
declaration of 'RSIperiod2' hides global declaration at line 78 DonchianExpert.mq5 78 28
   see previous declaration of 'RSIperiod2' DonchianExpert.mq5 78 28
'input' - unexpected token DonchianExpert.mq5 79 1
declaration of 'RSIperiod3' hides global declaration at line 79 DonchianExpert.mq5 79 28
   see previous declaration of 'RSIperiod3' DonchianExpert.mq5 79 28
'input' - unexpected token DonchianExpert.mq5 80 1
declaration of 'RSIperiod4' hides global declaration at line 80 DonchianExpert.mq5 80 28
   see previous declaration of 'RSIperiod4' DonchianExpert.mq5 80 28
'input' - unexpected token DonchianExpert.mq5 81 1
declaration of 'Applied_price' hides global declaration at line 81 DonchianExpert.mq5 81 28
   see previous declaration of 'Applied_price' DonchianExpert.mq5 81 28
'input' - unexpected token DonchianExpert.mq5 82 1
declaration of 'rsiUpperTrigger' hides global declaration at line 82 DonchianExpert.mq5 82 28
   see previous declaration of 'rsiUpperTrigger' DonchianExpert.mq5 82 28
'input' - unexpected token DonchianExpert.mq5 83 1
declaration of 'rsiLowerTrigger' hides global declaration at line 83 DonchianExpert.mq5 83 28
   see previous declaration of 'rsiLowerTrigger' DonchianExpert.mq5 83 28
'input' - unexpected token DonchianExpert.mq5 86 1
declaration of 'UseTrailing' hides global declaration at line 86 DonchianExpert.mq5 86 28
   see previous declaration of 'UseTrailing' DonchianExpert.mq5 86 28
'input' - unexpected token DonchianExpert.mq5 87 1
declaration of 'VirtualTrailingStop' hides global declaration at line 87 DonchianExpert.mq5 87 28
   see previous declaration of 'VirtualTrailingStop' DonchianExpert.mq5 87 28
'input' - unexpected token DonchianExpert.mq5 88 1
declaration of 'parameters_trailing' hides global declaration at line 88 DonchianExpert.mq5 88 28
   see previous declaration of 'parameters_trailing' DonchianExpert.mq5 88 28
'input' - unexpected token DonchianExpert.mq5 90 1
declaration of 'TF_Tralling' hides global declaration at line 90 DonchianExpert.mq5 90 28
   see previous declaration of 'TF_Tralling' DonchianExpert.mq5 90 28
'input' - unexpected token DonchianExpert.mq5 92 1
declaration of 'StepTrall' hides global declaration at line 92 DonchianExpert.mq5 92 28
   see previous declaration of 'StepTrall' DonchianExpert.mq5 92 28
'input' - unexpected token DonchianExpert.mq5 93 1
declaration of 'StartTrall' hides global declaration at line 93 DonchianExpert.mq5 93 28
   see previous declaration of 'StartTrall' DonchianExpert.mq5 93 28
'input' - unexpected token DonchianExpert.mq5 95 1
declaration of 'period_ATR' hides global declaration at line 95 DonchianExpert.mq5 95 28
   see previous declaration of 'period_ATR' DonchianExpert.mq5 95 28
'input' - unexpected token DonchianExpert.mq5 97 1
declaration of 'step_PSAR' hides global declaration at line 97 DonchianExpert.mq5 97 28
   see previous declaration of 'step_PSAR' DonchianExpert.mq5 97 28
'input' - unexpected token DonchianExpert.mq5 98 1
declaration of 'maximum_PSAR' hides global declaration at line 98 DonchianExpert.mq5 98 28
   see previous declaration of 'maximum_PSAR' DonchianExpert.mq5 98 28
'input' - unexpected token DonchianExpert.mq5 100 1
declaration of 'ma_period' hides global declaration at line 100 DonchianExpert.mq5 100 28
   see previous declaration of 'ma_period' DonchianExpert.mq5 100 28
'input' - unexpected token DonchianExpert.mq5 101 1
declaration of 'ma_method' hides global declaration at line 101 DonchianExpert.mq5 101 28
   see previous declaration of 'ma_method' DonchianExpert.mq5 101 28
'input' - unexpected token DonchianExpert.mq5 102 1
declaration of 'applied_price' hides global declaration at line 102 DonchianExpert.mq5 102 28
   see previous declaration of 'applied_price' DonchianExpert.mq5 102 28
'input' - unexpected token DonchianExpert.mq5 104 1
declaration of 'PercentProfit' hides global declaration at line 104 DonchianExpert.mq5 104 28
   see previous declaration of 'PercentProfit' DonchianExpert.mq5 104 28
declaration of 'InpInd_Handle1' hides global declaration at line 106 DonchianExpert.mq5 106 10
   see previous declaration of 'InpInd_Handle1' DonchianExpert.mq5 106 10
declaration of 'InpInd_Handle2' hides global declaration at line 106 DonchianExpert.mq5 106 25
   see previous declaration of 'InpInd_Handle2' DonchianExpert.mq5 106 25
declaration of 'InpInd_Handle3' hides global declaration at line 106 DonchianExpert.mq5 106 40
   see previous declaration of 'InpInd_Handle3' DonchianExpert.mq5 106 40
declaration of 'dcs_up' hides global declaration at line 107 DonchianExpert.mq5 107 10
   see previous declaration of 'dcs_up' DonchianExpert.mq5 107 10
declaration of 'dcs_low' hides global declaration at line 107 DonchianExpert.mq5 107 19
   see previous declaration of 'dcs_low' DonchianExpert.mq5 107 19
declaration of 'close' hides global declaration at line 107 DonchianExpert.mq5 107 29
   see previous declaration of 'close' DonchianExpert.mq5 107 29
declaration of 'adx' hides global declaration at line 108 DonchianExpert.mq5 108 10
   see previous declaration of 'adx' DonchianExpert.mq5 108 10
declaration of 'adx_m' hides global declaration at line 108 DonchianExpert.mq5 108 16
   see previous declaration of 'adx_m' DonchianExpert.mq5 108 16
declaration of 'adx_p' hides global declaration at line 108 DonchianExpert.mq5 108 24
   see previous declaration of 'adx_p' DonchianExpert.mq5 108 24
declaration of 'macd_m' hides global declaration at line 109 DonchianExpert.mq5 109 10
   see previous declaration of 'macd_m' DonchianExpert.mq5 109 10
declaration of 'macd_s' hides global declaration at line 109 DonchianExpert.mq5 109 19
   see previous declaration of 'macd_s' DonchianExpert.mq5 109 19
declaration of 'avs' hides global declaration at line 110 DonchianExpert.mq5 110 10
   see previous declaration of 'avs' DonchianExpert.mq5 110 10
declaration of 'rsi_1b' hides global declaration at line 111 DonchianExpert.mq5 111 10
   see previous declaration of 'rsi_1b' DonchianExpert.mq5 111 10
declaration of 'rsi_2b' hides global declaration at line 111 DonchianExpert.mq5 111 19
   see previous declaration of 'rsi_2b' DonchianExpert.mq5 111 19
declaration of 'rsi_3b' hides global declaration at line 111 DonchianExpert.mq5 111 28
   see previous declaration of 'rsi_3b' DonchianExpert.mq5 111 28
declaration of 'rsi_4b' hides global declaration at line 111 DonchianExpert.mq5 111 37
   see previous declaration of 'rsi_4b' DonchianExpert.mq5 111 37
declaration of 'rsi_1s' hides global declaration at line 112 DonchianExpert.mq5 112 10
   see previous declaration of 'rsi_1s' DonchianExpert.mq5 112 10
declaration of 'rsi_2s' hides global declaration at line 112 DonchianExpert.mq5 112 19
   see previous declaration of 'rsi_2s' DonchianExpert.mq5 112 19
declaration of 'rsi_3s' hides global declaration at line 112 DonchianExpert.mq5 112 28
   see previous declaration of 'rsi_3s' DonchianExpert.mq5 112 28
declaration of 'rsi_4s' hides global declaration at line 112 DonchianExpert.mq5 112 37
   see previous declaration of 'rsi_4s' DonchianExpert.mq5 112 37
'OnInit' - function can be declared only in the global scope DonchianExpert.mq5 116 5
'OnInit' - function already defined and has body DonchianExpert.mq5 116 5
'OnDeinit' - function can be declared only in the global scope DonchianExpert.mq5 180 6
'OnDeinit' - function already defined and has body DonchianExpert.mq5 180 6
'OnTick' - function can be declared only in the global scope DonchianExpert.mq5 187 6
'OnTick' - function already defined and has body DonchianExpert.mq5 187 6
'OnChartEvent' - function can be declared only in the global scope DonchianExpert.mq5 215 6
'OnChartEvent' - function already defined and has body DonchianExpert.mq5 215 6
'BuySignal' - function can be declared only in the global scope DonchianExpert.mq5 225 6
'BuySignal' - function already defined and has body DonchianExpert.mq5 225 6
'SellSignal' - function can be declared only in the global scope DonchianExpert.mq5 256 6
'SellSignal' - function already defined and has body DonchianExpert.mq5 256 6
'GetIndValue' - function can be declared only in the global scope DonchianExpert.mq5 287 6
'GetIndValue' - function already defined and has body DonchianExpert.mq5 287 6

101 error(s), 66 warning(s) 100 67

и как с этим бороться?

Alexander Fedosov
Alexander Fedosov | 2 июн 2017 в 10:05
natyog:
can't open "C:\Program Files\RoboForex - MetaTrader 5\MQL5\include\EasyAndFastGUI\WndEvents.mqh" include file DonchianUI.mqh 6 11

и как с этим бороться?

Для начала подключить библиотеку EasyAndFastGUI, как указано в последнем предложении статьи. Но раз с этим сложности, то прикрепляю архив вместе с библиотекой и материалами статьи.
Rashid Umarov
Rashid Umarov | 2 июн 2017 в 16:05
natyog:

101 error(s), 66 warning(s) 100 67

и как с этим бороться?

Извините за неудобства, файлы к статье заменили. Скачайте заново и попробуйте скомпилировать, пожалуйста.
sic20101
sic20101 | 13 фев 2018 в 22:02
Не поверите, создал его канал не зная о его существовании )))) наверное как и я подсмотрел у ишимоку... правда подхожу к нему немного с другой стороны, рассматриваю торговлю внутри канала, с помощью фибо уровней с входом у 61 уровня и фиксацией 161. На периоде М5-М15. И пары пунктов на коррекции при достижении 161 уровня.
Секвента ДеМарка (TD SEQUENTIAL) с использованием искусственного интеллекта Секвента ДеМарка (TD SEQUENTIAL) с использованием искусственного интеллекта

В этой статье я расскажу, как с помощью "скрещивания" одной очень известной стратегии и нейронной сети можно успешно заниматься трейдингом. Речь пойдет о стратегии Томаса Демарка "Секвента" с применением системы искусственного интеллекта. Работать будем ТОЛЬКО по первой части стратегии, используя сигналы "Установка" и "Пересечение".

Сравнительный анализ 10 трендовых стратегий Сравнительный анализ 10 трендовых стратегий

В статье сделан краткий обзор 10 трендовых стратегий, проведено их тестирование, сравнительный анализ. На основе полученных результатов сделан общий вывод о целесообразности, достоинствах и недостатках торговли по тренду.

Графические интерфейсы X: Алгоритм переноса слов в многострочном поле ввода (build 12) Графические интерфейсы X: Алгоритм переноса слов в многострочном поле ввода (build 12)

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

Рецепты MQL5 - Создаем кольцевой буфер для быстрого расчета индикаторов в скользящем окне Рецепты MQL5 - Создаем кольцевой буфер для быстрого расчета индикаторов в скользящем окне

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