Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
Мастер MQL5 - Торговые сигналы свечных паттернов Bullish/Bearish Meeting Lines + Stochastic - эксперт для MetaTrader 5
- Просмотров:
- 2875
- Рейтинг:
- Опубликован:
- 2011.03.21 17:37
- Обновлен:
- 2016.11.22 07:33
- Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
С появлением Мастера MQL5 появилась возможность автоматической генерации кода советника на базе классов торговых сигналов, сопровождения позиций и управления капиталом. Помимо классов торговых сигналов из Стандартной библиотеки, вы можете создавать и тестировать свои собственные торговые системы, для этого достаточно написать модуль торговых сигналов.
В книге "Стратегии лучших трейдеров мира" описаны индикаторы и торговые стратегии для технического анализа с использованием программного пакета MetaStock. Наряду с традиционными, в ней рассмотрены торговые сигналы, основанные на совместном использовании разворотных свечных моделей с подтверждением от осцилляторов Stochastic, CCI, MFI и RSI.
Использование "разворотных" свечных моделей совместно с сигналами осцилляторов позволяет сократить количество ложных сигналов и повысить эффективность торговой системы.
В данной работе мы рассмотрим результаты использования моделей Bullish Meeting Lines ("Бычьи встречающиеся свечи") и Bearish Meeting Lines ("Медвежьи встречающиеся свечи") в комбинации с сигналами индикатора Stochastic.
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. Торговые сигналы в комбинации с индикатором Stochastic
Сигналы входа в длинную или короткую позицию подаются только при условии, что разворотная фигура на диаграмме свечей подтверждается положением стохастического осциллятора. Значение сигнальной линии %D должно быть выше, или ниже соответствующего критического уровня (30 и 70).
Сигналы выхода из позиций формируются в зависимости от дальнейшего поведения %D. Если %D достигает противоположной рынку отметки (80 в длинной и 20 в короткой позициях) или если %D не подтверждает сигнала разворота и достигает уровня 20 в длинной и 80 в короткой позициях.
Рис. 3. Торговые сигналы паттерна "Bearish Meeting Lines" с подтверждением от индикатора Stochastic
Реализация проверки условий входа и выхода в рынок осуществляется в методах:
- int CML_Stoch::LongCondition() - проверка условий для открытия длинной позиции (ф-я возвращает 80) и закрытия короткой позиции (ф-я возвращает 40);
- int CML_Stoch::ShortCondition() - проверка условий для открытия короткой позиции (ф-я возвращает 80) и закрытия длинной позиции (ф-я возвращает 40).
2.1. Открытие длинной позиции и закрытие короткой позиции
Сигналом к открытию длинной позиции является формирование свечной комбинации Bullish Meeting Lines ("Бычьи встречающиеся свечи") и выполнение условия StochSignal(1)<30 (значение сигнальной линии индикатора Stochastic на последнем завершенном баре меньше 30):
Сигналом к закрытию короткой позиции является пересечение сигнальной линией индикатора Stochastic уровня 20 (снизу вверх) или уровня 80 (снизу вверх).
//+------------------------------------------------------------------+ //| Метод проверки условий для входа и выхода с рынка | //| Проверка условий для | //| 1) входа в рынок (открытие длинной позиции, result=80) | //| 2) выхода из рынка (закрытие короткой позиции, result=40) | //+------------------------------------------------------------------+ int CML_Stoch::LongCondition() { int result=0; //--- idx можно использовать для того чтобы узнать режим работы эксперта //--- idx=0 - эксперт будет вызывать проверки выполнения торговых условий на каждом тике //--- idx=1 - эксперт будет вызывать проверки выполнения торговых условий только на новых барах int idx =StartIndex(); //--- проверка условий для открытия длинной позиции //--- формирование бычьей свечной комбинации Bullish Meeting Lines и выполнения условия signal line<30 if (CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) && (StochSignal(1)<30)) result=80; //--- проверка условий для закрытия короткой позиции //--- пересечение сигнальной линией уровней (сверху вниз 20, снизу вверх 80) if((((StochSignal(1)>20) && (StochSignal(2)<20)) || ((StochSignal(1)>80) && (StochSignal(2)<80)))) result=40; //--- возвращаем result return(result); }
2.2. Открытие короткой позиции и закрытие длинной позиции
Сигналом к открытию короткой позиции является формирование паттерна Bearish Meeting Lines ("Медвежьи встречающиеся свечи") и выполнение условия StochSignal(1)>70 (значение сигнальной линии индикатора Stochastic на последнем завершенном баре больше 70):
- Сигналом к закрытию длинной позиции является пересечение сигнальной линией индикатора Stochastic уровня 80 (сверху вниз) или уровня 20 (сверху вниз).
//+------------------------------------------------------------------+ //| Метод проверки условий для входа и выхода с рынка | //| Проверка условий для | //| 1) входа в рынок (открытие короткой позиции, result=80) | //| 2) выхода из рынка (закрытие длинной позиции, result=40) | //+------------------------------------------------------------------+ int CML_Stoch::ShortCondition() { int result=0; //--- idx можно использовать для того чтобы узнать режим работы эксперта //--- idx=0 - эксперт будет вызывать проверки выполнения торговых условий на каждом тике //--- idx=1 - эксперт будет вызывать проверки выполнения торговых условий только на новых барах int idx =StartIndex(); //--- проверка условий для открытия короткой позиции //--- формирование медвежьей свечной комбинации Bearish Meeting Lines и выполнения условия signal line>70 if (CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) && (StochSignal(1)>70)) result=80; //--- check conditions of long position closing //--- проверка условий для закрытия короткой позиции //--- пересечение сигнальной линией уровней (сверху вниз 80, сверху вниз 20) if((((StochSignal(1)<80) && (StochSignal(2)>80)) || ((StochSignal(1)<20) && (StochSignal(2)>20)))) result=40; //--- возвращаем result return(result); }
Класс CML_Stoch не входит в Стандартную библиотеку классов торговых сигналов, поэтому для
его использования нужно скачать файл acml_stoch.mqh (прилагается) и сохранить его в каталог_данных_терминала\Include\Expert\Signal\MySignals. Файл acandlepatterns.mqh следует скопировать в тот же каталог, что и файл acml_stoch.mqh. После этого, перезапустив MetaEditor, вы получите возможность его использования в Мастере MQL5.
Чтобы создать торгового робота по данной стратегии запустите Мастер MQL5:
Рис. 4. Создание советника в Мастере MQL5
Нажав на кнопку "Далее", укажем имя советника:
Рис. 5. Общие параметры советника
После этого нужно указать параметры сигналов.
Рис. 6. Параметры сигналов советника
В нашем случае мы будем использовать лишь один модуль торговых сигналов.
Добавляем модуль "Signals based on Bullish/Bearish Meeting Lines confirmed by Stochastic":
Рис. 7. Параметры сигналов советника
Модуль сигналов добавлен:
Рис. 8. Параметры сигналов советника
После этого можно выбрать модуль трейлинга, мы его использовать не будем. Выбираем "Trailing Stop not used":
Рис. 9. Выбор модуля трейлинга
Затем нужно выбрать модуль управления капиталом, мы будем использовать торговлю с фиксированным объемом (Trading with fixed trade volume):
Рис. 10. Выбор модуля управления капиталом
Нажав на кнопку "Готово", мы получим код сгенерированного советника - файл Expert_AML_Stoch.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 M5, период тестирования: 2005.01.01-2010.03.16, PeriodK=6, PeriodD=3, PeriodSlow=36, MA_period=3).
В данном советнике использовался модуль торговли фиксированным объемом 0.1 лота (Trading Fixed Lot), трейлинг не использовался (Trailing not used).
Рис. 11. Результаты тестирования советника, построенного на базе генератора торговых сигналов "Bullish/Bearish Meeting Lines + Stochastic
Наилучший набор параметров торговой системы можно найти при помощи Тестера Стратегий терминала MetaTrader 5.
Код советника, созданного Мастером MQL5, прилагается в файле expert_aml_stoch.mq5.
Торговые сигналы свечных моделей "Hammer/Hanging Man" ("Молот"/"Повешенный") с подтверждением от индикатора RSI.
Мастер MQL5 - Торговые сигналы свечных паттернов Hammer/Hanging Man + MFIТорговые сигналы свечных моделей "Hammer/Hanging Man" ("Молот"/"Повешенный") с подтверждением от индикатора MFI.
Торговые сигналы свечных моделей "Bullish/Bearish Meeting Lines" (Бычья и медвежья модели встречающихся свечей) с подтверждением от индикатора CCI.
Мастер MQL5 - Торговые сигналы свечных паттернов Bullish/Bearish Meeting Lines + MFIТорговые сигналы свечных моделей "Bullish/Bearish Meeting Lines" (Бычья и медвежья модели встречающихся свечей) с подтверждением от индикатора MFI (Market Facilitation Index).