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





- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
101 error(s), 66 warning(s) 100 67
и как с этим бороться?
'iLow' - override system function Trailing.mqh 241 8
'iLow' - ambiguous call to overloaded function with the same parameters Trailing.mqh 278 36
double iLow(string symbol,ENUM_TIMEFRAMES tf,int index)
и с iHigh тоже самое
'iHigh' - override system function Trailing.mqh 251 8
это не нашел сходу как исправить... похоже что iLow и iHigh теперь описывается по другому....
Исправьте пожалуйста.
Статья писалась давно - с тех пор в языке MQL5 появились системные функции iHigh, iLow ...
Закомментируйте в коде эти функции:
Закоментировал строки, что выше посоветовали и появились следующие ошибки:
'TrailingStop' - unexpected token, probably type is missing? Trailing.mqh 114 12