Скачать MetaTrader 5

Смотри, как бесплатно скачать роботов

Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят

Понравился скрипт?
Оцени его работу в терминале MetaTrader 5

2011.03.04 17:18
Советники

Мастер MQL5 - Торговые сигналы свечных паттернов Bullish Engulfing/Bearish Engulfing + RSI - эксперт для MetaTrader 5

| Russian English 中文 Español Deutsch 日本語 Português

Просмотров:
1170
Рейтинг:
голосов: 16
\MQL5\Include\Expert\Signal\MySignals\

С появлением Мастера MQL5 появилась возможность автоматической генерации кода советника на базе классов торговых сигналов, сопровождения позиций и управления капиталом. Помимо классов торговых сигналов из Стандартной библиотеки, вы можете создавать и тестировать свои собственные торговые системы, для этого достаточно написать модуль торговых сигналов.

В книге "Стратегии лучших трейдеров мира" описаны индикаторы и торговые стратегии для технического анализа с использованием программного пакета MetaStock. Наряду с традиционными, в ней рассмотрены торговые сигналы, основанные на совместном использовании разворотных свечных моделей с подтверждением от осцилляторов Stochastic, CCI, MFI и RSI.

Использование "разворотных" свечных моделей совместно с сигналами осцилляторов позволяет сократить количество ложных сигналов и повысить эффективность торговой системы.

В данной работе мы рассмотрим результаты использования моделей Bullish Engulfing (бычье поглощение) и Bearish Engulfing (медвежье поглощение) в комбинации с сигналами индикатора RSI.


1. Паттерны "Bullish Engulfing" и "Bearish Engulfing" и их распознавание

1.1. Паттерн "Бычье поглощение" (Bullish Engulfing)

Разворотная модель "Бычье поглощение" (завал черного дня) возникает в случае, когда при нисходящем тренде после медвежьей свечи появляется бычья свеча, тело которой полностью поглощает тело медвежьей свечи.

Рисунок 1. Свечной паттерн "Bullish Engulfing"

Рисунок 1. Свечной паттерн "Bullish Engulfing"

Распознавание паттерна "Bullish Engulfing" реализовано в методе CheckPatternBullishEngulfing класса CCandlePattern:

//+------------------------------------------------------------------+
//| Метод проверки формирования свечной модели "Bullish Engulfing"   |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBullishEngulfing()
  {
//--- Bullish Engulfing - распознавание модели "Бычье поглощение"
   if((Open(2)>Close(2))             &&  // предыдущая свеча медвежья
      (Close(1)-Open(1)>AvgBody(1))  &&  // размер тела бычьей свечи больше среднего 
      (Close(1)>Open(2))             &&  // цена закрытия бычьей свечи выше цены открытия медвежьей
      (MidOpenClose(2)<CloseAvg(2))  &&  // Центр тела медвежьей свечи ниже значения скользящей средней (т.е. тренд нисходящий)
      (Open(1)<Close(2)))                // цена открытия бычьей свечи ниже цены закрытия медвежьей
      return(true);
//---
   return(false);
  }

Для проверки факта формирования модели "Bullish Engulfing" используется метод CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) класса CCandlePattern.


1.2. Паттерн "Медвежье поглощение" (Bearish Engulfing)

Разворотная модель "Медвежье поглощение" (завал белого дня) возникает в случае, когда при восходящем тренде после бычьей свечи появляется медвежья свеча, тело которой полностью поглощает тело бычьей свечи.

Рисунок 2. Свечной паттерн "Bearish Engulfing"

Рисунок 2. Свечной паттерн "Bearish Engulfing"

Метод распознавания модели "Bearish Engulfing":

//+------------------------------------------------------------------+
//| Метод проверки формирования свечной модели "Bearish Engulfing"   |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBearishEngulfing()
  {
//--- Bearish Engulfing - распознавание модели "Медвежье поглощение"
   if((Open(2)<Close(2))            &&  // последняя завершенная свеча медвежья
      (Open(1)-Close(1)>AvgBody(1)) &&  // размер тела медвежьей свечи больше среднего 
      (Close(1)<Open(2))            &&  // цена закрытия медвежьей свечи ниже цены открытия бычьей
      (MidOpenClose(2)>CloseAvg(2)) &&  // центр тела бычьей свечи выше скользящей средней (т.е. тренд восходящий)
      (Open(1)>Close(2)))               // цена открытия медвежьей свечи выше цены закрытия бычьей
      return(true);
//---
   return(false);
  }

Для проверки факта формирования модели "Bearish Engulfing" используется метод CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) класса CCandlePattern.


2. Торговые сигналы в комбинации с индикатором RSI


Сигналы входа в рынок подаются при сочетании разворотной фигуры на диаграмме со значением RSI ниже уровня 40 для длинных и выше 60 - для коротких позиций.

Сигналы выхода формируются при достижении RSI противоположного уровня (70 для длинной и 30 для короткой позиций) или же не подтверждает разворота, достигнув уровня 30 или 70 для длинной или короткой позиций соответственно.

Рисунок 3. Торговые сигналы паттерна "Bullish Englulfing" с подтверждением от индикатора RSI

Рисунок 3. Торговые сигналы паттерна "Bullish Englulfing" с подтверждением от индикатора RSI


Реализация проверки условий входа и выхода в рынок осуществляется в методах:

  • int CBE_BE_RSI::LongCondition() - проверка условий для открытия длинной позиции (ф-я возвращает 80) и закрытия короткой позиции (ф-я возвращает 40);
  • int CBE_BE_RSI::ShortCondition() - проверка условий для открытия короткой позиции (ф-я возвращает 80) и закрытия длинной позиции (ф-я возвращает 40).

2.1. Открытие длинной позиции и закрытие короткой позиции

  1. Сигналом к открытию длинной позиции является формирование свечной комбинации Bullish Englulfing (бычье поглощение) и выполнение условия RSI(1)<40 (значение линии индикатора RSI на последнем завершенном баре меньше 40):

  2. Сигналом к закрытию длинной позиции является пересечение индикатора RSI уровня 30 (снизу вверх) или уровня 70 (снизу вверх).

    //+------------------------------------------------------------------+
    //| Метод проверки условий для входа и выхода с рынка                |
    //| Проверка условий для                                             |
    //| 1) входа в рынок (открытие длинной позиции, result=80)           |
    //| 2) выхода из рынка (закрытие короткой позиции, result=40)        |
    //+------------------------------------------------------------------+
    int CBE_BE_RSI::LongCondition()
      {
       int result=0;
    //--- idx можно использовать для того чтобы узнать режим работы эксперта
    //--- idx=0 - эксперт будет вызывать проверки выполнения торговых условий на каждом тике
    //--- idx=1 - эксперт будет вызывать проверки выполнения торговых условий только на новых барах
       int idx   =StartIndex();
    //--- проверка условий для открытия длинной позиции
    //--- формирование бычьей свечной комбинации Bullish Engulfing и выполнения условия RSI<40
       if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) && (RSI(1)<40))
         result=80;
    //--- проверка условий для закрытия короткой позиции
       if(((RSI(1)>30) && (RSI(2)<30)) || ((RSI(1)>70) && (RSI(2)<70)))
          result=40;
         result=40;
    //--- возвращаем result
       return(result);
      }

2.2. Открытие короткой позиции и закрытие длинной позиции

  1. Сигналом к открытию короткой позиции является формирование паттерна Bearish Englulfing (медвежье поглощение) и выполнение условия RSI(1)>60 (значение индикатора RSI на последнем завершенном баре больше 60):

  2. Сигналом к закрытию длинной позиции является пересечение линией индикатора RSI уровня 70 (сверху вниз) или уровня 30 (сверху вниз).

    /+------------------------------------------------------------------+
    //| Метод проверки условий для входа и выхода с рынка                |
    //| Проверка условий для                                             |
    //| 1) входа в рынок (открытие короткой позиции, result=80)          |
    //| 2) выхода из рынка (закрытие длинной позиции, result=40)         |
    //+------------------------------------------------------------------+
    int CBE_BE_RSI::ShortCondition()
      {
       int result=0;
    //--- idx можно использовать для того чтобы узнать режим работы эксперта
    //--- idx=0 - эксперт будет вызывать проверки выполнения торговых условий на каждом тике
    //--- idx=1 - эксперт будет вызывать проверки выполнения торговых условий только на новых барах
       int idx   =StartIndex();
    //--- проверка условий для открытия короткой позиции
    //--- формирование медвежьей свечной комбинации Bearish Engulfing и выполнения условия RSI>60
      if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) && (RSI(1)>60))
         result=80;
    //--- проверка условий для закрытия длинной позиции
      if(((RSI(1)<70) && (RSI(2)>70)) || ((RSI(1)<30) && (RSI(2)>30)))
         result=40;
    //--- возвращаем result
       return(result);
      }


2.3. Создание эксперта на основе торговых сигналов разворотной модели "Bullish Engulfing/Bearish Engulfing + RSI" при помощи Мастера MQL5

Класс CBE_BE_RSI не входит в Стандартную библиотеку классов торговых сигналов, поэтому для его использования нужно скачать файл acbe_be_rsi.mqh (прилагается) и сохранить его в каталог_данных_терминала\Include\Expert\Signal\MySignals. Файл acandlepatterns.mqh следует скопировать в тот же каталог, что и файл acbe_be_rsi.mqh. После этого, перезапустив MetaEditor, вы получите возможность его использования в Мастере MQL5.

Чтобы создать торгового робота по данной стратегии запустите Мастер MQL5:

Рис. 4. Создание советника в Мастере MQL5

Рис. 4. Создание советника в Мастере MQL5

Нажав на кнопку "Далее", укажем имя советника:

Рис. 5. Общие параметры советника

Рис. 5. Общие параметры советника

После этого нужно указать параметры сигналов.

Рис. 6. Параметры сигналов советника

Рис. 6. Параметры сигналов советника

В нашем случае мы будем использовать лишь один модуль торговых сигналов.

Добавляем модуль "Signals based on Bullish Engulfing/Bearish Engulfing confirmed by RSI":

Рис. 7. Параметры сигналов советника

Рис. 7. Параметры сигналов советника

Модуль сигналов добавлен:

Рис. 8. Параметры сигналов советника

Рис. 8. Параметры сигналов советника

После этого можно выбрать модуль трейлинга, мы его использовать не будем. Выбираем "Trailing Stop not used":

Рис. 9. Выбор модуля трейлинга

Рис. 9. Выбор модуля трейлинга

Затем нужно выбрать модуль управления капиталом, мы будем использовать торговлю с фиксированным объемом (Trading with fixed trade volume):

Рис. 10. Выбор модуля управления капиталом

Рис. 10. Выбор модуля управления капиталом

Нажав на кнопку "Готово", мы получим код сгенерированного советника - файл Expert_ABE_BE_RSI.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, период тестирования: 2010.01.01-2011.03.04, PeriodRSI=11, MA_period=5).

В данном советнике использовался модуль торговли фиксированным объемом 0.1 лота (Trading Fixed Lot), трейлинг не использовался (Trailing not used).

Рис. 11. Результаты тестирования советника, построенного на базе генератора торговых сигналов "Bullish Engulfingr/Bearish Engulfing + RSI"

Рис. 11. Результаты тестирования советника, построенного на базе генератора торговых сигналов "Bullish Engulfingr/Bearish Engulfing + RSI"

Наилучший набор параметров торговой системы можно найти при помощи Тестера Стратегий терминала MetaTrader 5.

Код советника, созданного Мастером MQL5, прилагается в файле expert_abe_be_rsi.mq5.


Мастер MQL5 - Торговые сигналы свечных паттернов Bullish Engulfing/Bearish Engulfing + MFI Мастер MQL5 - Торговые сигналы свечных паттернов Bullish Engulfing/Bearish Engulfing + MFI

Торговые сигналы свечных моделей "Bullish Engulfing/Bearish Engulfing" (Бычье поглощение/Медвежье поглощение) с подтверждением от индикатора MFI.

Мастер MQL5 - Торговые сигналы свечных паттернов Bullish Engulfing/Bearish Engulfing + CCI Мастер MQL5 - Торговые сигналы свечных паттернов Bullish Engulfing/Bearish Engulfing + CCI

Торговые сигналы свечных моделей "Bullish Engulfing/Bearish Engulfing" (Бычье поглощение/Медвежье поглощение) с подтверждением от индикатора CCI.

Мастер MQL5 - Торговые сигналы свечных паттернов Bullish Harami/Bearish Harami + Stochastic Мастер MQL5 - Торговые сигналы свечных паттернов Bullish Harami/Bearish Harami + Stochastic

Торговые сигналы свечных моделей "Bullish Harami/Bearish Harami" (Бычья и медвежья модели Харами) с подтверждением от индикатора Stochastic.

Мастер MQL5 - Торговые сигналы свечных паттернов Bullish Harami/Bearish Harami + CCI Мастер MQL5 - Торговые сигналы свечных паттернов Bullish Harami/Bearish Harami + CCI

Торговые сигналы свечных моделей "Bullish Harami/Bearish Harami" (Бычья и медвежья модели Харами) с подтверждением от индикатора CCI.