Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
![Советники](https://c.mql5.com/i/code/expert.png)
Мастер MQL5 - Торговые сигналы свечных паттернов Bullish/Bearish Meeting Lines + CCI - эксперт для MetaTrader 5
- Просмотров:
- 2688
- Рейтинг:
- Опубликован:
- 2011.03.22 16:59
- Обновлен:
- 2016.11.22 07:33
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
С появлением Мастера MQL5 появилась возможность автоматической генерации кода советника на базе классов торговых сигналов, сопровождения позиций и управления капиталом. Помимо классов торговых сигналов из Стандартной библиотеки, вы можете создавать и тестировать свои собственные торговые системы, для этого достаточно написать модуль торговых сигналов.
В книге "Стратегии лучших трейдеров мира" описаны индикаторы и торговые стратегии для технического анализа с использованием программного пакета MetaStock. Наряду с традиционными, в ней рассмотрены торговые сигналы, основанные на совместном использовании разворотных свечных моделей с подтверждением от осцилляторов Stochastic, CCI, MFI и RSI.
Использование "разворотных" свечных моделей совместно с сигналами осцилляторов позволяет сократить количество ложных сигналов и повысить эффективность торговой системы.
В данной работе мы рассмотрим результаты использования моделей Bullish Meeting Lines ("Бычьи встречающиеся свечи") и Bearish Meeting Lines ("Медвежьи встречающиеся свечи") в комбинации с сигналами индикатора CCI (Commodity Channel Index).
1. Паттерны "Meeting Lines" и их распознавание
1.1. Паттерн "Бычьи встречающиеся свечи" (Bullish Meeting Lines)
Данный паттерн представляет собой комбинацию медвежьей и бычьей свечей, у которых совпадают (или очень близки) цены закрытия. Длина тел обоих свечей больше средней.
Бычьи встречающиеся свечи свидетельствуют о развороте нисходящего тренда.
Рисунок 1. Свечной паттерн "Bullish Meeting Lines"
Распознавание паттерна "Bullish Meeting Lines" ("Бычьи встречающиеся свечи") реализовано в методе CheckPatternBullishMeetingLines класса CCandlePattern:
//+--------------------------------------------------------------------+ //| Метод проверки формирования свечной модели "Bullish Meeting Lines" | //+--------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishMeetingLines() { //--- Bullish Meeting Lines - распознавание модели "Бычьи встречающиеся свечи" if((Open(2)-Close(2)>AvgBody(1)) && // длина тела медвежьей свечи выше среднего (long black) ((Close(1)-Open(1))>AvgBody(1)) && // длина тела бычьей свечи выше среднего (long white) (MathAbs(Close(1)-Close(2))<0.1*AvgBody(1))) // цены закрытия свечей почти одинаковые (doji close) return(true); //--- return(false); }
Для проверки факта формирования модели "Bullish Meeting Lines" используется метод CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) класса CCandlePattern.
1.1. Паттерн "Медвежьи встречающиеся свечи" (Bearish Meeting Lines)
Данный паттерн представляет собой комбинацию бычьей и медвежьей свечей, у которых совпадают (или очень близки) цены закрытия. Длина тел обоих свечей больше средней.
Медвежьи встречающиеся свечи свидетельствуют о развороте восходящего тренда.
Рисунок 2. Свечной паттерн "Bearish Meeting Lines"
Метод распознавания модели "Bearish Meeting Lines":
//+--------------------------------------------------------------------+ //| Метод проверки формирования свечной модели "Bearish Meeting Lines" | //+--------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishMeetingLines() { //--- Bearish Meeting Lines - распознавание модели "Медвежьи встречающиеся свечи" if((Close(2)-Open(2)>AvgBody(1)) && // длина тела бычьей свечи выше среднего (long white) ((Open(1)-Close(1))>AvgBody(1)) && // длина тела медвежьей свечи выше среднего (long black) (MathAbs(Close(1)-Close(2))<0.1*AvgBody(1))) // цены закрытия свечей почти одинаковые (doji close) return(true); //--- return(false); }
Для проверки факта формирования модели "Bearish Meeting Lines" используется метод CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) класса CCandlePattern.
2. Торговые сигналы в комбинации с индикатором CCI
Сигналы для входа в рынок подаются при появлении соответствующей разворотной фигуры и достижением CCI уровня -50 для длинной и выше 50 для короткой позиции.
Сигналы выхода из позиций подаются только индикатором CCI . Это происходит в случае достижения им противоположного уровня (80 для длинной и -80 для короткой позиций) или же не подтверждает разворота и достигает нового минимума.
Рисунок 3. Торговые сигналы паттерна "Bullish Meeting Lines" с подтверждением от индикатора CCI
Реализация проверки условий входа и выхода в рынок осуществляется в методах:
- int CML_CCI::LongCondition() - проверка условий для открытия длинной позиции (ф-я возвращает 80) и закрытия короткой позиции (ф-я возвращает 40);
- int CML_CCI::ShortCondition() - проверка условий для открытия короткой позиции (ф-я возвращает 80) и закрытия длинной позиции (ф-я возвращает 40).
2.1. Открытие длинной позиции и закрытие короткой позиции
Сигналом к открытию длинной позиции является формирование свечной комбинации Bullish Meeting Lines (бычья модель встречающихся свечей) и выполнение условия CCI (1)<-50 (значение индикатора CCI на последнем завершенном баре меньше -50).
Сигналом к закрытию короткой позиции является пересечение индикатора CCI уровня -80 (сверху вниз) или уровня 80 (сверху вниз).
//+------------------------------------------------------------------+ //| Метод проверки условий для входа и выхода с рынка | //| Проверка условий для | //| 1) входа в рынок (открытие длинной позиции, result=80) | //| 2) выхода из рынка (закрытие короткой позиции, result=40) | //+------------------------------------------------------------------+ int CML_CCI::LongCondition() { int result=0; //--- idx можно использовать для того чтобы узнать режим работы эксперта //--- idx=0 - эксперт будет вызывать проверки выполнения торговых условий на каждом тике //--- idx=1 - эксперт будет вызывать проверки выполнения торговых условий только на новых барах int idx =StartIndex(); //--- проверка условий для открытия длинной позиции //--- формирование бычьей свечной комбинации Bullish Meeting Lines и выполнения условия CCI<-50 if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH)MEETING_LINES) && (CCI(1)<-50)) result=80; //--- проверка условий для закрытия короткой позиции if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)<80) && (CCI(2)>80))) result=40; //--- возвращаем result return(result); }
2.2. Открытие короткой позиции и закрытие длинной позиции
Сигналом к открытию короткой позиции является формирование паттерна Bearish Meeting Lines (медвежья модель встречающихся свечей) и выполнение условия CCI(1)>50 (значение индикатора CCI на последнем завершенном баре больше 50):
Сигналом к закрытию длинной позиции является пересечение индикатором CCI уровня 80 (сверху вниз) или уровня -80 (сверху вниз).
//+------------------------------------------------------------------+ //| Метод проверки условий для входа и выхода с рынка | //| Проверка условий для | //| 1) входа в рынок (открытие короткой позиции, result=80) | //| 2) выхода из рынка (закрытие длинной позиции, result=40) | //+------------------------------------------------------------------+ int CMS_ES_CCI::ShortCondition() { int result=0; //--- idx можно использовать для того чтобы узнать режим работы эксперта //--- idx=0 - эксперт будет вызывать проверки выполнения торговых условий на каждом тике //--- idx=1 - эксперт будет вызывать проверки выполнения торговых условий только на новых барах int idx =StartIndex(); //--- проверка условий для открытия короткой позиции //--- формирование медвежьей свечной комбинации Bearish Meeting Lines и выполнения условия CCI>50 if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) && (CCI(1)>50)) result=80; //--- проверка условий для закрытия длинной позиции if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80))) result=40; //--- возвращаем result return(result); }
Класс CML_CCI не входит в Стандартную библиотеку классов торговых сигналов, поэтому для его использования нужно скачать файл acml_cci.mqh (прилагается) и сохранить его в каталог_данных_терминала\Include\Expert\Signal\MySignals. Файл acandlepatterns.mqh следует скопировать в тот же каталог, что и файл acml_cci.mqh. После этого, перезапустив MetaEditor, вы получите возможность его использования в Мастере MQL5.
Чтобы создать торгового робота по данной стратегии запустите Мастер MQL5:
Рис. 4. Создание советника в Мастере MQL5
Нажав на кнопку "Далее", укажем имя советника:
Рис. 5. Общие параметры советника
После этого нужно указать параметры сигналов.
Рис. 6. Параметры сигналов советника
В нашем случае мы будем использовать лишь один модуль торговых сигналов.
Добавляем модуль "Signals based on Bullish/Bearish Meeting Lines confirmed by CCI":
Рис. 7. Параметры сигналов советника
Модуль сигналов добавлен:
Рис. 8. Параметры сигналов советника
После этого можно выбрать модуль трейлинга, мы его использовать не будем. Выбираем "Trailing Stop not used":
Рис. 9. Выбор модуля трейлинга
Затем нужно выбрать модуль управления капиталом, мы будем использовать торговлю с фиксированным объемом (Trading with fixed trade volume):
Рис. 10. Выбор модуля управления капиталом
Нажав на кнопку "Готово", мы получим код сгенерированного советника - файл Expert_AML_CCI.mq5, который будет сохранен в папке: каталог_данных_терминала\MQL5\Experts\.
Входные параметры (по умолчанию) советника:
//--- inputs for main signal input int Signal_ThresholdOpen =10; // Signal threshold value to open [0...100] input int Signal_ThresholdClose =10; // Signal threshold value to close [0...100] input double Signal_PriceLevel =0.0; // Price level to execute a deal input double Signal_StopLevel =50.0; // Stop Loss level (in points) input double Signal_TakeLevel =50.0; // Take Profit level (in points)
заменяем на:
//--- inputs for main signal input int Signal_ThresholdOpen =40; // Signal threshold value to open [0...100] input int Signal_ThresholdClose =20; // Signal threshold value to close [0...100] input double Signal_PriceLevel =0.0; // Price level to execute a deal input double Signal_StopLevel =0.0; // Stop Loss level (in points) input double Signal_TakeLevel =0.0; // Take Profit level (in points)
Параметры Signal_ThresholdOpen и Signal_ThresholdClose позволяют задать пороги для открытия и закрытия позиций.
В коде функций LongCondition() и ShortCondition() модуля торговых сигналов мы указали фиксированные значения порогов:
- Для открытия позиций: 80;
- Для закрытия позиций: 40.
Советник, сгенерированный при помощи Мастера MQL5, принимает решение об открытии или закрытии позиции на основании результатов "голосования" модулей торговых сигналов, добавленных в процессе создания советника. При этом основной модуль (содержащий все добавленные модули) торговых сигналов также принимает участие в "голосовании", однако его методы LongCondition() и ShortCondition() всегда возвращают 0.
Поскольку при расчете "голосов" производится усреднение по количеству присутствующих модулей (основной + один добавленный модуль), то значения порогов следует указывать с учетом данного обстоятельства. По этой причине значения величин Signal_ThresholdOpen и Signal_ThresholdClose должны быть установлены в 40=(0+80)/2 и 20=(0+40)/2 соответственно.
Значения входных параметров Signal_StopLevel и Signal_TakeLevel устанавливаем в 0, это означает, что закрытие позиций будет осуществляться только при поступлении торговых сигналов на закрытие позиций.
2.4 Результаты тестирования на истории
Результаты тестирования советника на исторических данных (EURUSD H1, период тестирования: 2000.01.01-2011.03.16, PeriodCCI=18, MA_period=3).
В данном советнике использовался модуль торговли фиксированным объемом 0.1 лота (Trading Fixed Lot), трейлинг не использовался (Trailing not used).
Наилучший набор параметров торговой системы можно найти при помощи Тестера Стратегий терминала MetaTrader 5.
Код советника, созданного Мастером MQL5, прилагается в файле expert_aml_cci.mq5.
![Мастер MQL5 - Торговые сигналы свечных паттернов Bullish/Bearish Meeting Lines + Stochastic](https://c.mql5.com/i/code/expert.png)
Торговые сигналы свечных моделей "Bullish/Bearish Meeting Lines" (Бычья и медвежья модели встречающихся свечей) с подтверждением от индикатора Stochastic.
![Мастер MQL5 - Торговые сигналы свечных паттернов Hammer/Hanging Man + RSI](https://c.mql5.com/i/code/expert.png)
Торговые сигналы свечных моделей "Hammer/Hanging Man" ("Молот"/"Повешенный") с подтверждением от индикатора RSI.
![Мастер MQL5 - Торговые сигналы свечных паттернов Bullish/Bearish Meeting Lines + MFI](https://c.mql5.com/i/code/expert.png)
Торговые сигналы свечных моделей "Bullish/Bearish Meeting Lines" (Бычья и медвежья модели встречающихся свечей) с подтверждением от индикатора MFI (Market Facilitation Index).
![Мастер MQL5 - Торговые сигналы свечных паттернов Bullish/Bearish Meeting Lines + RSI](https://c.mql5.com/i/code/expert.png)
Торговые сигналы свечных моделей "Bullish/Bearish Meeting Lines" (Бычья и медвежья модели встречающихся свечей) с подтверждением от индикатора RSI (Relative Strength Index).