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





- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Статья писалась давно - с тех пор в языке MQL5 появились системные функции iHigh, iLow ...
Закомментируйте в коде эти функции:
Закоментировал строки, что выше посоветовали и появились следующие ошибки:
'TrailingStop' - unexpected token, probably type is missing? Trailing.mqh 114 12
Привет,
Я получаю эту ошибку. Она не исправлена. Пожалуйста, поделитесь исправленным кодом.
'ENUM_SORT_MODE::SORT_ASCENDING' будет использоваться вместо 'ENUM_SORT_MODE::SORT_ASCEND' CanvasTable.mqh 1658 53
неявное преобразование из 'enum ENUM_SORT_MODE' в 'enum ENUM_SORT_MODE' CanvasTable.mqh 1658 53
С уважением,
Сатиш
Здравствуйте, Fexception,
Пожалуйста, исправьте нижеприведенную ошибку при компиляции для MT5.
'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
'Trailing.mqh' Trailing.mqh 1 1
'DonchianUI.mqh' DonchianUI.mqh 1 1
'WndEvents.mqh' WndEvents.mqh 1 1
'Defines.mqh' Defines.mqh 1 1
'WndContainer.mqh' WndContainer.mqh 1 1
'Window.mqh' Window.mqh 1 1
'ElementBase.mqh' ElementBase.mqh 1 1
'Mouse.mqh' Mouse.mqh 1 1
'Objects.mqh' Objects.mqh 1 1
'Enums.mqh' Enums.mqh 1 1
'Fonts.mqh' Fonts.mqh 1 1
'LineChart.mqh' LineChart.mqh 1 1
'ChartCanvas.mqh' ChartCanvas.mqh 1 1
'CustomCanvas.mqh' CustomCanvas.mqh 1 1
'Colors.mqh' Colors.mqh 1 1
'FileBin.mqh' FileBin.mqh 1 1
'File.mqh' File.mqh 1 1
'Rect.mqh' Rect.mqh 1 1
'ChartObjectsBmpControls.mqh' ChartObjectsBmpControls.mqh 1 1
'ChartObject.mqh' ChartObject.mqh 1 1
'ArrayInt.mqh' ArrayInt.mqh 1 1
'Array.mqh' Array.mqh 1 1
'ArrayDouble.mqh' ArrayDouble.mqh 1 1
'ArrayString.mqh' ArrayString.mqh 1 1
'ArrayObj.mqh' ArrayObj.mqh 1 1
'ChartObjectSubChart.mqh' ChartObjectSubChart.mqh 1 1
'ChartObjectsTxtControls.mqh' ChartObjectsTxtControls.mqh 1 1
'Chart.mqh' Chart.mqh 1 1
'MenuBar.mqh' MenuBar.mqh 1 1
'Element.mqh' Element.mqh 1 1
'MenuItem.mqh' MenuItem.mqh 1 1
'' - необходимы двойные кавычки MenuItem.mqh 228 119
'ContextMenu.mqh' ContextMenu.mqh 1 1
'SeparateLine.mqh' SeparateLine.mqh 1 1
'SimpleButton.mqh' SimpleButton.mqh 1 1
'IconButton.mqh' IconButton.mqh 1 1
'SplitButton.mqh' SplitButton.mqh 1 1
'ButtonsGroup.mqh' ButtonsGroup.mqh 1 1
'IconButtonsGroup.mqh' IconButtonsGroup.mqh 1 1
'RadioButtons.mqh' RadioButtons.mqh 1 1
'StatusBar.mqh' StatusBar.mqh 1 1
'Tooltip.mqh' Tooltip.mqh 1 1
'ListView.mqh' ListView.mqh 1 1
'Scrolls.mqh' Scrolls.mqh 1 1
'ComboBox.mqh' ComboBox.mqh 1 1
'CheckBox.mqh' CheckBox.mqh 1 1
'SpinEdit.mqh' SpinEdit.mqh 1 1
'CheckBoxEdit.mqh' CheckBoxEdit.mqh 1 1
'CheckComboBox.mqh' CheckComboBox.mqh 1 1
'Slider.mqh' Slider.mqh 1 1
'DualSlider.mqh' DualSlider.mqh 1 1
'LabelsTable.mqh' LabelsTable.mqh 1 1
'Table.mqh' Table.mqh 1 1
'CanvasTable.mqh' CanvasTable.mqh 1 1
'Pointer.mqh' Pointer.mqh 1 1
'Tabs.mqh' Tabs.mqh 1 1
'IconTabs.mqh' IconTabs.mqh 1 1
'Calendar.mqh' Calendar.mqh 1 1
'DateTime.mqh' DateTime.mqh 1 1
'DropCalendar.mqh' DropCalendar.mqh 1 1
'TreeItem.mqh' TreeItem.mqh 1 1
'TreeView.mqh' TreeView.mqh 1 1
'FileNavigator.mqh' FileNavigator.mqh 1 1
'ColorButton.mqh' ColorButton.mqh 1 1
'ColorPicker.mqh' ColorPicker.mqh 1 1
'ProgressBar.mqh' ProgressBar.mqh 1 1
'IndicatorBar.mqh' IndicatorBar.mqh 1 1
'LineGraph.mqh' LineGraph.mqh 1 1
'StandardChart.mqh' StandardChart.mqh 1 1
'TextBox.mqh' TextBox.mqh 1 1
'Keys.mqh' Keys.mqh 1 1
'KeyCodes.mqh' KeyCodes.mqh 1 1
'TimeCounter.mqh' TimeCounter.mqh 1 1
'TextEdit.mqh' TextEdit.mqh 1 1
'TextLabel.mqh' TextLabel.mqh 1 1
'Picture.mqh' Picture.mqh 1 1
'PicturesSlider.mqh' PicturesSlider.mqh 1 1
'TimeEdit.mqh' TimeEdit.mqh 1 1
'CheckBoxList.mqh' CheckBoxList.mqh 1 1
'TrailingStop' - неожиданная лексема, возможно, отсутствует тип? Trailing.mqh 114 12
функция 'CTrailing::TrailingStop' уже определена и имеет другой возвращаемый тип Trailing.mqh 114 12
см. объявление функции 'CTrailing::TrailingStop' Trailing.mqh 83 22
'iLow' - переопределение системной функции Trailing.mqh 241 8
'iHigh' - переопределение системной функции Trailing.mqh 251 8
идентификатор 'ENUM_SORT_MODE' уже используется Enums.mqh 104 6
'advisor.bmp' как ресурс "::Images\EasyAndFastGUI\Icons\bmp16\advisor.bmp" advisor.bmp 1 1
'indicator.bmp' as resource "::Images\EasyAndFastGUI\Icons\bmp16\indicator.bmp" indicator.bmp 1 1
'script.bmp' as resource "::Images\EasyAndFastGUI\Icons\bmp16\script.bmp" script.bmp 1 1
'Close_red.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\Close_red.bmp" Close_red.bmp 1 1
'Close_black.bmp' as resource "::Images\EasyAndFastGUI\Controls\Close_black.bmp" Close_black.bmp 1 1
'DropOn_black.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\DropOn_black.bmp" DropOn_black.bmp 1 1
'DropOn_white.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\DropOn_white.bmp" DropOn_white.bmp 1 1
'DropOff_black.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\DropOff_black.bmp" DropOff_black.bmp 1 1
'DropOff_white.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\DropOff_white.bmp" DropOff_white.bmp 1 1
'Help_dark.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\Help_dark.bmp" Help_dark.bmp 1 1
'Help_light.bmp' as resource "::Images\EasyAndFastGUI\Controls\Help_light.bmp" Help_light.bmp 1 1
'CheckBoxOn_min_gray.bmp' as resource "::Images\EasyAndFastGUI\Controls\CheckBoxOn_min_gray.bmp" CheckBoxOn_min_gray.bmp 1 1
'CheckBoxOn_min_white.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\CheckBoxOn_min_white.bmp" CheckBoxOn_min_white.bmp 1 1
'RArrow.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\RArrow.bmp" RArrow.bmp 1 1
'RArrow_white.bmp' as resource "::Images\EasyAndFastGUI\Controls\RArrow_white.bmp" RArrow_white.bmp 1 1
'DropOff.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\DropOff.bmp" DropOff.bmp 1 1
'radio_button_on.bmp' as resource "::Images\EasyAndFastGUI\Controls\radio_button_on.bmp" radio_button_on.bmp 1 1
'radio_button_off.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\radio_button_off.bmp" radio_button_off.bmp 1 1
'radio_button_on_locked.bmp' as resource "::Images\EasyAndFastGUI\Controls\radio_button_on_locked.bmp" radio_button_on_locked.bmp 1 1
'radio_button_off_locked.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\radio_button_off_locked.bmp" radio_button_off_locked.bmp 1 1
'UArrow_min.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\UArrow_min.bmp" UArrow_min.bmp 1 1
'UArrow_min_dark.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\UArrow_min_dark.bmp" UArrow_min_dark.bmp 1 1
'LArrow_min.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\LArrow_min.bmp" LArrow_min.bmp 1 1
'LArrow_min_dark.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\LArrow_min_dark.bmp" LArrow_min_dark.bmp 1 1
'DArrow_min.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\DArrow_min.bmp" DArrow_min.bmp 1 1
'DArrow_min_dark.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\DArrow_min_dark.bmp" DArrow_min_dark.bmp 1 1
'RArrow_min.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\RArrow_min.bmp" RArrow_min.bmp 1 1
'RArrow_min_dark.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\RArrow_min_dark.bmp" RArrow_min_dark.bmp 1 1
'CheckBoxOn.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\CheckBoxOn.bmp" CheckBoxOn.bmp 1 1
'CheckBoxOff.bmp' as resource "::Images\EasyAndFastGUI\Controls\CheckBoxOff.bmp" CheckBoxOff.bmp 1 1
'CheckBoxOn_locked.bmp' as resource "::Images\EasyAndFastGUI\Controls\CheckBoxOn_locked.bmp" CheckBoxOn_locked.bmp 1 1
'CheckBoxOff_locked.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\CheckBoxOff_locked.bmp" CheckBoxOff_locked.bmp 1 1
'SpinInc.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\SpinInc.bmp" SpinInc.bmp 1 1
'SpinInc_blue.bmp' as resource "::Images\EasyAndFastGUI\Controls\SpinInc_blue.bmp" SpinInc_blue.bmp 1 1
'SpinDec.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\SpinDec.bmp" SpinDec.bmp 1 1
'SpinDec_blue.bmp' as resource "::Images\EasyAndFastGUI\Controls\SpinDec_blue.bmp" SpinDec_blue.bmp 1 1
'SORT_ASCEND' - неправильный перечислитель не может быть использован Table.mqh 220 88
'SORT_ASCEND' - неправильный перечислитель не может быть использован Table.mqh 1686 80
'pointer_x_rs.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\pointer_x_rs.bmp" pointer_x_rs.bmp 1 1
'pointer_x_rs_blue.bmp' as resource "::Images\EasyAndFastGUI\Controls\pointer_x_rs_blue.bmp" pointer_x_rs_blue.bmp 1 1
'pointer_y_rs.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\pointer_y_rs.bmp" pointer_y_rs.bmp 1 1
'pointer_y_rs_blue.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\pointer_y_rs_blue.bmp" pointer_y_rs_blue.bmp 1 1
'pointer_xy1_rs.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\pointer_xy1_rs.bmp" pointer_xy1_rs.bmp 1 1
'pointer_xy1_rs_blue.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\pointer_xy1_rs_blue.bmp" pointer_xy1_rs_blue.bmp 1 1
'pointer_xy2_rs.bmp' as resource "::Images\EasyAndFastGUI\Controls\pointer_xy2_rs.bmp" pointer_xy2_rs.bmp 1 1
'pointer_xy2_rs_blue.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\pointer_xy2_rs_blue.bmp" pointer_xy2_rs_blue.bmp 1 1
'pointer_x_rs_rel.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\pointer_x_rs_rel.bmp" pointer_x_rs_rel.bmp 1 1
'pointer_y_rs_rel.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\pointer_y_rs_rel.bmp" pointer_y_rs_rel.bmp 1 1
'pointer_x_scroll.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\pointer_x_scroll.bmp" pointer_x_scroll.bmp 1 1
'pointer_x_scroll_blue.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\pointer_x_scroll_blue.bmp" pointer_x_scroll_blue.bmp 1 1
'pointer_y_scroll.bmp' as resource "::Images\EasyAndFastGUI\Controls\pointer_y_scroll.bmp" pointer_y_scroll.bmp 1 1
'pointer_y_scroll_blue.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\pointer_y_scroll_blue.bmp" pointer_y_scroll_blue.bmp 1 1
'pointer_text_select.bmp' as resource "::Images\EasyAndFastGUI\Controls\pointer_text_select.bmp" pointer_text_select.bmp 1 1
'SORT_ASCEND' - неправильный перечислитель не может быть использован CanvasTable.mqh 309 88
'SORT_ASCEND' - неправильный перечислитель не может быть использован CanvasTable.mqh 1633 86
'LeftTransp_black.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\LeftTransp_black.bmp" LeftTransp_black.bmp 1 1
'LeftTransp_blue.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\LeftTransp_blue.bmp" LeftTransp_blue.bmp 1 1
'RArrow_black.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\RArrow_black.bmp" RArrow_black.bmp 1 1
'RArrow_blue.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\RArrow_blue.bmp" RArrow_blue.bmp 1 1
'calendar_today.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\calendar_today.bmp" calendar_today.bmp 1 1
'calendar_drop_on.bmp' as resource "::Images\EasyAndFastGUI\Controls\calendar_drop_on.bmp" calendar_drop_on.bmp 1 1
'calendar_drop_off.bmp' as resource "::Images\EasyAndFastGUI\Controls\calendar_drop_off.bmp" calendar_drop_off.bmp 1 1
'calendar_drop_locked.bmp' as resource "::Images\EasyAndFastGUI\Controls\calendar_drop_locked.bmp" calendar_drop_locked.bmp 1 1
'RArrow_rotate_black.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\RArrow_rotate_black.bmp" RArrow_rotate_black.bmp 1 1
'RArrow_rotate_white.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\RArrow_rotate_white.bmp" RArrow_rotate_white.bmp 1 1
'folder_w10.bmp' как ресурс "::Images\EasyAndFastGUI\Icons\bmp16\folder_w10.bmp" folder_w10.bmp 1 1
'text_file_w10.bmp' как ресурс "::Images\EasyAndFastGUI\Icons\bmp16\text_file_w10.bmp" text_file_w10.bmp 1 1
'arrow_down.bmp' как ресурс "::Images\EasyAndFastGUI\Icons\bmp16\arrow_down.bmp" arrow_down.bmp 1 1
'arrow_up.bmp' as resource "::Images\EasyAndFastGUI\Icons\bmp16\arrow_up.bmp" arrow_up.bmp 1 1
'stop_gray.bmp' как ресурс "::Images\EasyAndFastGUI\Icons\bmp16\stop_gray.bmp" stop_gray.bmp 1 1
'no_image.bmp' как ресурс "::Images\EasyAndFastGUI\Icons\bmp64\no_image.bmp" no_image.bmp 1 1
'ArrowLeft.bmp' as resource "::Images\EasyAndFastGUI\Controls\ArrowLeft.bmp" ArrowLeft.bmp 1 1
'ArrowLeft_blue.bmp' as resource "::Images\EasyAndFastGUI\Controls\ArrowLeft_blue.bmp" ArrowLeft_blue.bmp 1 1
'ArrowRight.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\ArrowRight.bmp" ArrowRight.bmp 1 1
'ArrowRight_blue.bmp' как ресурс "::Images\EasyAndFastGUI\Controls\ArrowRight_blue.bmp" ArrowRight_blue.bmp 1 1
'iLow' - неоднозначный вызов перегруженной функции с теми же параметрами Trailing.mqh 278 36
может быть одной из 2 функций Trailing.mqh 278 36
встроенная: double iLow(const string,ENUM_TIMEFRAMES,int) Trailing.mqh 278 36
double iLow(string,ENUM_TIMEFRAMES,int) Trailing.mqh 241 8
'iHigh' - неоднозначный вызов перегруженной функции с теми же параметрами Trailing.mqh 287 36
может быть одной из 2 функций Trailing.mqh 287 36
встроенная: double iHigh(const string,ENUM_TIMEFRAMES,int) Trailing.mqh 287 36
double iHigh(string,ENUM_TIMEFRAMES,int) Trailing.mqh 251 8
'iLow' - неоднозначный вызов перегруженной функции с теми же параметрами Trailing.mqh 299 19
может быть одной из 2 функций Trailing.mqh 299 19
встроенная: double iLow(const string,ENUM_TIMEFRAMES,int) Trailing.mqh 299 19
double iLow(string,ENUM_TIMEFRAMES,int) Trailing.mqh 241 8
'iLow' - неоднозначный вызов перегруженной функции с теми же параметрами Trailing.mqh 299 50
может быть одной из 2 функций Trailing.mqh 299 50
встроенная: double iLow(const string,ENUM_TIMEFRAMES,int) Trailing.mqh 299 50
double iLow(string,ENUM_TIMEFRAMES,int) Trailing.mqh 241 8
'iLow' - неоднозначный вызов перегруженной функции с теми же параметрами Trailing.mqh 300 19
может быть одной из 2 функций Trailing.mqh 300 19
встроенная: double iLow(const string,ENUM_TIMEFRAMES,int) Trailing.mqh 300 19
double iLow(string,ENUM_TIMEFRAMES,int) Trailing.mqh 241 8
'iLow' - неоднозначный вызов перегруженной функции с теми же параметрами Trailing.mqh 300 50
может быть одной из 2 функций Trailing.mqh 300 50
встроенная: double iLow(const string,ENUM_TIMEFRAMES,int) Trailing.mqh 300 50
double iLow(string,ENUM_TIMEFRAMES,int) Trailing.mqh 241 8
'iLow' - неоднозначный вызов перегруженной функции с теми же параметрами Trailing.mqh 301 19
может быть одной из 2 функций Trailing.mqh 301 19
встроенная: double iLow(const string,ENUM_TIMEFRAMES,int) Trailing.mqh 301 19
double iLow(string,ENUM_TIMEFRAMES,int) Trailing.mqh 241 8
'iLow' - неоднозначный вызов перегруженной функции с теми же параметрами Trailing.mqh 301 50
может быть одной из 2 функций Trailing.mqh 301 50
встроенная: double iLow(const string,ENUM_TIMEFRAMES,int) Trailing.mqh 301 50
double iLow(string,ENUM_TIMEFRAMES,int) Trailing.mqh 241 8
'iLow' - неоднозначный вызов перегруженной функции с теми же параметрами Trailing.mqh 303 23
может быть одной из 2 функций Trailing.mqh 303 23
встроенная: double iLow(const string,ENUM_TIMEFRAMES,int) Trailing.mqh 303 23
double iLow(string,ENUM_TIMEFRAMES,int) Trailing.mqh 241 8
'iHigh' - неоднозначный вызов перегруженной функции с теми же параметрами Trailing.mqh 317 19
может быть одной из 2 функций Trailing.mqh 317 19
встроенная: double iHigh(const string,ENUM_TIMEFRAMES,int) Trailing.mqh 317 19
double iHigh(string,ENUM_TIMEFRAMES,int) Trailing.mqh 251 8
'iHigh' - неоднозначный вызов перегруженной функции с теми же параметрами Trailing.mqh 317 51
может быть одной из 2 функций Trailing.mqh 317 51
встроенная: double iHigh(const string,ENUM_TIMEFRAMES,int) Trailing.mqh 317 51
double iHigh(string,ENUM_TIMEFRAMES,int) Trailing.mqh 251 8
'iHigh' - неоднозначный вызов перегруженной функции с теми же параметрами Trailing.mqh 318 19
может быть одной из 2 функций Trailing.mqh 318 19
встроенная: double iHigh(const string,ENUM_TIMEFRAMES,int) Trailing.mqh 318 19
double iHigh(string,ENUM_TIMEFRAMES,int) Trailing.mqh 251 8
'iHigh' - неоднозначный вызов перегруженной функции с теми же параметрами Trailing.mqh 318 51
может быть одной из 2 функций Trailing.mqh 318 51
встроенная: double iHigh(const string,ENUM_TIMEFRAMES,int) Trailing.mqh 318 51
double iHigh(string,ENUM_TIMEFRAMES,int) Trailing.mqh 251 8
'iHigh' - неоднозначный вызов перегруженной функции с теми же параметрами Trailing.mqh 319 19
может быть одной из 2 функций Trailing.mqh 319 19
встроенная: double iHigh(const string,ENUM_TIMEFRAMES,int) Trailing.mqh 319 19
double iHigh(string,ENUM_TIMEFRAMES,int) Trailing.mqh 251 8
'iHigh' - неоднозначный вызов перегруженной функции с теми же параметрами Trailing.mqh 319 51
может быть одной из 2 функций Trailing.mqh 319 51
встроенная: double iHigh(const string,ENUM_TIMEFRAMES,int) Trailing.mqh 319 51
double iHigh(string,ENUM_TIMEFRAMES,int) Trailing.mqh 251 8
'iHigh' - неоднозначный вызов перегруженной функции с теми же параметрами Trailing.mqh 321 23
может быть одной из 2 функций Trailing.mqh 321 23
встроенная: double iHigh(const string,ENUM_TIMEFRAMES,int) Trailing.mqh 321 23
double iHigh(string,ENUM_TIMEFRAMES,int) Trailing.mqh 251 8
выражение не boolean ChartCanvas.mqh 129 53
'method' - необъявленный идентификатор MenuItem.mqh 228 110
'method' - ожидается какой-то оператор MenuItem.mqh 228 110
неявное преобразование из 'enum ENUM_SORT_MODE' в 'enum ENUM_SORT_MODE' Table.mqh 275 46
'ENUM_SORT_MODE::SORT_ASCENDING' будет использоваться вместо 'ENUM_SORT_MODE::SORT_ASCEND' Table.mqh 275 46
неявное преобразование из 'enum ENUM_SORT_MODE' в 'enum ENUM_SORT_MODE' Table.mqh 275 46
'ENUM_SORT_MODE::SORT_ASCENDING' будет использоваться вместо 'ENUM_SORT_MODE::SORT_ASCEND' Table.mqh 275 46
неявное преобразование из 'enum ENUM_SORT_MODE' в 'enum ENUM_SORT_MODE' Table.mqh 975 30
'ENUM_SORT_MODE::SORT_ASCENDING' будет использоваться вместо 'ENUM_SORT_MODE::SORT_ASCEND' Table.mqh 975 30
неявное преобразование из 'enum ENUM_SORT_MODE' в 'enum ENUM_SORT_MODE' Table.mqh 975 30
'ENUM_SORT_MODE::SORT_ASCENDING' будет использоваться вместо 'ENUM_SORT_MODE::SORT_ASCEND' Table.mqh 975 30
неявное преобразование из 'enum ENUM_SORT_MODE' в 'enum ENUM_SORT_MODE' Table.mqh 1070 113
'ENUM_SORT_MODE::SORT_DESCENDING' будет использоваться вместо 'ENUM_SORT_MODE::SORT_DESCEND' Table.mqh 1070 113
неявное преобразование из 'enum ENUM_SORT_MODE' в 'enum ENUM_SORT_MODE' Table.mqh 1071 29
'ENUM_SORT_MODE::SORT_ASCENDING' будет использоваться вместо 'ENUM_SORT_MODE::SORT_ASCEND' Table.mqh 1071 29
неявное преобразование из 'enum ENUM_SORT_MODE' в 'enum ENUM_SORT_MODE' Table.mqh 1071 29
'ENUM_SORT_MODE::SORT_ASCENDING' будет использоваться вместо 'ENUM_SORT_MODE::SORT_ASCEND' Table.mqh 1071 29
неявное преобразование из 'enum ENUM_SORT_MODE' в 'enum ENUM_SORT_MODE' Table.mqh 1073 29
'ENUM_SORT_MODE::SORT_DESCENDING' будет использоваться вместо 'ENUM_SORT_MODE::SORT_DESCEND' Table.mqh 1073 29
неявное преобразование из 'enum ENUM_SORT_MODE' в 'enum ENUM_SORT_MODE' Table.mqh 1073 29
'ENUM_SORT_MODE::SORT_DESCENDING' будет использоваться вместо 'ENUM_SORT_MODE::SORT_DESCEND' Table.mqh 1073 29
неявное преобразование из 'enum ENUM_SORT_MODE' в 'enum ENUM_SORT_MODE' Table.mqh 1081 47
'ENUM_SORT_MODE::SORT_ASCENDING' будет использоваться вместо 'ENUM_SORT_MODE::SORT_ASCEND' Table.mqh 1081 47
неявное преобразование из 'enum ENUM_SORT_MODE' в 'enum ENUM_SORT_MODE' Table.mqh 1703 53
'ENUM_SORT_MODE::SORT_ASCENDING' будет использоваться вместо 'ENUM_SORT_MODE::SORT_ASCEND' Table.mqh 1703 53
неявное преобразование из 'enum ENUM_SORT_MODE' в 'enum ENUM_SORT_MODE' Table.mqh 1711 53
'ENUM_SORT_MODE::SORT_ASCENDING' будет использоваться вместо 'ENUM_SORT_MODE::SORT_ASCEND' Table.mqh 1711 53
неявное преобразование из 'enum ENUM_SORT_MODE' в 'enum ENUM_SORT_MODE' CanvasTable.mqh 444 58
'ENUM_SORT_MODE::SORT_ASCENDING' будет использоваться вместо 'ENUM_SORT_MODE::SORT_ASCEND' CanvasTable.mqh 444 58
неявное преобразование из 'enum ENUM_SORT_MODE' в 'enum ENUM_SORT_MODE' CanvasTable.mqh 444 58
'ENUM_SORT_MODE::SORT_ASCENDING' будет использоваться вместо 'ENUM_SORT_MODE::SORT_ASCEND' CanvasTable.mqh 444 58
неявное преобразование из 'enum ENUM_SORT_MODE' в 'enum ENUM_SORT_MODE' CanvasTable.mqh 1050 30
'ENUM_SORT_MODE::SORT_ASCENDING' будет использоваться вместо 'ENUM_SORT_MODE::SORT_ASCEND' CanvasTable.mqh 1050 30
неявное преобразование из 'enum ENUM_SORT_MODE' в 'enum ENUM_SORT_MODE' CanvasTable.mqh 1050 30
'ENUM_SORT_MODE::SORT_ASCENDING' будет использоваться вместо 'ENUM_SORT_MODE::SORT_ASCEND' CanvasTable.mqh 1050 30
неявное преобразование из 'enum ENUM_SORT_MODE' в 'enum ENUM_SORT_MODE' CanvasTable.mqh 1360 113
'ENUM_SORT_MODE::SORT_DESCENDING' будет использоваться вместо 'ENUM_SORT_MODE::SORT_DESCEND' CanvasTable.mqh 1360 113
неявное преобразование из 'enum ENUM_SORT_MODE' в 'enum ENUM_SORT_MODE' CanvasTable.mqh 1361 29
'ENUM_SORT_MODE::SORT_ASCENDING' будет использоваться вместо 'ENUM_SORT_MODE::SORT_ASCEND' CanvasTable.mqh 1361 29
неявное преобразование из 'enum ENUM_SORT_MODE' в 'enum ENUM_SORT_MODE' CanvasTable.mqh 1361 29
'ENUM_SORT_MODE::SORT_ASCENDING' будет использоваться вместо 'ENUM_SORT_MODE::SORT_ASCEND' CanvasTable.mqh 1361 29
неявное преобразование из 'enum ENUM_SORT_MODE' в 'enum ENUM_SORT_MODE' CanvasTable.mqh 1363 29
'ENUM_SORT_MODE::SORT_DESCENDING' будет использоваться вместо 'ENUM_SORT_MODE::SORT_DESCEND' CanvasTable.mqh 1363 29
неявное преобразование из 'enum ENUM_SORT_MODE' в 'enum ENUM_SORT_MODE' CanvasTable.mqh 1363 29
'ENUM_SORT_MODE::SORT_DESCENDING' будет использоваться вместо 'ENUM_SORT_MODE::SORT_DESCEND' CanvasTable.mqh 1363 29
неявное преобразование из 'enum ENUM_SORT_MODE' в 'enum ENUM_SORT_MODE' CanvasTable.mqh 1650 53
'ENUM_SORT_MODE::SORT_ASCENDING' будет использоваться вместо 'ENUM_SORT_MODE::SORT_ASCEND' CanvasTable.mqh 1650 53
неявное преобразование из 'enum ENUM_SORT_MODE' в 'enum ENUM_SORT_MODE' CanvasTable.mqh 1658 53
'ENUM_SORT_MODE::SORT_ASCENDING' будет использоваться вместо 'ENUM_SORT_MODE::SORT_ASCEND' CanvasTable.mqh 1658 53
неявное преобразование из 'enum ENUM_SORT_MODE' в 'enum ENUM_SORT_MODE' CanvasTable.mqh 2204 44
'ENUM_SORT_MODE::SORT_ASCENDING' будет использоваться вместо 'ENUM_SORT_MODE::SORT_ASCEND' CanvasTable.mqh 2204 44
28 ошибок, 25 предупреждений 29 26
С уважением,
Сатиш
переименовать в enum ENUM_SORT_MODE_