Смотри, как бесплатно скачать роботов
Ищи нас в Twitter!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Советники

Мастер MQL5 - Торговые сигналы свечных паттернов Morning/Evening Stars + Stochastic - эксперт для MetaTrader 5

Просмотров:
6582
Рейтинг:
(34)
Опубликован:
2011.03.24 18:15
Обновлен:
2016.11.22 07:33
\MQL5\Include\Expert\Signal\MySignals\
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

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

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

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

В данной работе мы рассмотрим результаты использования моделей Morning Star (утренняя звезда) и Evening Star (вечерняя звезда) в комбинации с сигналами индикатора Stochastic (работа со свечными паттернами Morning Doji Star и Evening Doji Star производится по аналогии).


1. Паттерны "Morning Star" и "Evening Star" и их распознавание

1.1. Паттерн "Утренняя звезда" (Morning Star)

Паттерн "Утреняя звезда" состоит из трех свечей, возникает при нисходящем тренде (рис. 1). За длинной черной свечей идет свеча с маленьким телом (цвет не имеет значения), которое не пересекается с телом черной свечи. Маленькое тело второй свечи означает, что рынок перешел от нисходящей тенденции к равновесию сил быков и медведей.

Третьей свечей этой модели является бычья свеча, тело которой обычно не пересекается с телом второй свечи, а уровень закрытия располагается внутри тела первой (медвежьей) свечи. Для удобства на рис. 1 также приведена результирующая свеча данной модели.

В случае, если второй свечой утренней звезды является доджи, то такая модель называется "Morning Doji Star" (Утреняя звезда доджи).

Рисунок 1. Свечные паттерны "Morning Star" и "Morning Doji Star"

Рис. 1. Свечные паттерны "Morning Star" и "Morning Doji Star"

Распознавание данных паттернов реализовано в методах CheckPatternMorningStar() и CheckPatternMorningDoji класса CCandlePattern:

//+------------------------------------------------------------------+
//| Проверка формирования модели "Morning Star"                      |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternMorningStar()
  {
//--- Morning Star - проверка формирования модели "Утренняя звезда"
   if((Open(3)-Close(3)>AvgBody(1))             && // медвежья свеча, ее тело больше среднего
      (MathAbs(Close(2)-Open(2))<AvgBody(1)*0.5) && // тело второй свечи маленькое (меньше половины среднего размера тела) 
      (Close(2)<Close(3))                       && // закрытие второй свечи ниже закрытия первой свечи  
      (Open(2)<Open(3))                         && // открытие второй свечи ниже открытия первой свечи 
      (Close(1)>MidOpenClose(3)))                  // закрытие последней свечи выше центра первой (медвежьей) свечи 
      return(true);
//---
   return(false);
  }
//+------------------------------------------------------------------+
//| Проверка формирования модели "Morning Doji Star"                 |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternMorningDoji()
  {
//--- Morning Doji Star - проверка формирования модели "Утренняя звезда доджи"
   if((Open(3)-Close(3)>AvgBody(1)) && // медвежья свеча, ее тело больше среднего  
      (AvgBody(2)<AvgBody(1)*0.1)   && // тело второй свечи доджи (меньше десятой части среднего размера тела) 
      (Close(2)<Close(3))           && // закрытие второй свечи ниже закрытия первой свечи 
      (Open(2)<Open(3))             && // открытие второй свечи ниже открытия первой свечи 
      (Open(1)>Close(2))            && // ценовой гэп вверх на последней свече
      (Close(1)>Close(2)))             // закрытие последней свечи выше закрытия второй свечи  
      return(true);
//---
   return(false);
  }

Для проверки факта формирования моделей "Morning Star" и "Morning Doji Star" используется методы CheckCandlestickPattern(CANDLE_PATTERN_MORNING_STAR) и CheckCandlestickPattern(CANDLE_PATTERN_MORNING_DOJI) класса CCandlePattern


1.2. Паттерн "Вечерняя звезда" (Evening Star)

Паттерн "Вечерняя звезда" также состоит из трех свечей, возникает при восходящем тренде (рис. 2). За длинной белой свечей идет свеча с маленьким телом (цвет не имеет значения), которое не пересекается с телом белой свечи. Маленькое тело второй свечи означает, что рынок перешел от восходящей тенденции к равновесию сил быков и медведей.

Третьей свечей этой модели является черная свеча, тело которой обычно не пересекается с телом второй свечи, а уровень закрытия располагается внутри тела первой (бычьей) свечи. Для удобства на рис. 2 также приведена результирующая свеча данной модели.

В случае, если второй свечой вечерней звезды является доджи, то такая модель называется "Evening Doji Star" (Вечерняя звезда доджи).

Рис. 2. Свечные паттерны "Evening Star" и "Evening Doji Star"

Рис. 2. Свечные паттерны "Evening Star" и "Evening Doji Star"

Методы распознавания моделей "Evening Star" и "Evening Doji Star":

//+------------------------------------------------------------------+
//| Проверка формирования модели "Evening Star"                      |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternEveningStar()
  {
//--- Evening Star - проверка формирования модели "Вечерняя звезда"
   if((Close(3)-Open(3)>AvgBody(1))             && // бычья свеча, ее тело больше среднего 
      (MathAbs(Close(2)-Open(2))<AvgBody(1)*0.5) && // тело второй маленькое (меньше половины среднего тела свечи)
      (Close(2)>Close(3))                       && // закрытие второй свечи выше цены закрытия первой свечи
      (Open(2)>Open(3))                         && // открытие второй свечи выше цены открытия первой свечи
      (Close(1)<MidOpenClose(3)))                  // закрытие последней свечи ниже центра первой (бычьей) свечи  
      return(true);
//---
   return(false);
  }
//+------------------------------------------------------------------+
//| Проверка формирования модели "Evening Doji Star"                 |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternEveningDoji()
  {
//--- Evening Doji Star  - проверка формирования модели "Вечерняя звезда доджи"
   if((Close(3)-Open(3)>AvgBody(1)) && // бычья свеча, ее тело больше среднего 
      (AvgBody(2)<AvgBody(1)*0.1)   && // тело второй свечи доджи (меньше десятой части среднего тела свечи) 
      (Close(2)>Close(3))           && // закрытие второй свечи выше закрытия первой свечи
      (Open(2)>Open(3))             && // открытие второй свечи выше открытия первой свечи  
      (Open(1)<Close(2))            && // ценовой гэп вниз на последней свече
      (Close(1)<Close(2)))             // закрытие последней свечи ниже закрытия второй свечи 
      return(true);
//---
   return(false);
  }

Для проверки факта формирования моделей "Evening Star" и "Evening Doji Star" используются методы CheckCandlestickPattern(CANDLE_PATTERN_EVENING_STAR) и CheckCandlestickPattern(CANDLE_PATTERN_EVENING_DOJI) класса CCandlePattern.


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

Сигналы входа в длинную или короткую позицию подаются только при условии, что разворотная фигура на диаграмме свечей подтверждается положением стохастического осциллятора. Значение сигнальной линии %D должно быть выше, или ниже соответствующего критического уровня (30 и 70).

Сигналы выхода из позиций формируются в зависимости от дальнейшего поведения %D. Если %D достигает противоположной рынку отметки (80 в длинной и 20 в короткой позициях) или если %D не подтверждает сигнала разворота и достигает уровня 20 в длинной и 80 в короткой позициях.

Рисунок 3. Торговые сигналы паттерна "Evening Star" с подтверждением от индикатора Stochastic

Рис. 3. Торговые сигналы паттерна "Evening Star" с подтверждением от индикатора Stochastic



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

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

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

  1. Сигналом к открытию длинной позиции является формирование свечной комбинации Morning Star ("Утренняя звезда") и выполнение условия StochSignal(1)<30 (значение сигнальной линии индикатора Stochastic на последнем завершенном баре меньше 30).

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

    //+------------------------------------------------------------------+
    //| Метод проверки условий для входа и выхода с рынка                |
    //| Проверка условий для                                             |
    //| 1) входа в рынок (открытие длинной позиции, result=80)           |
    //| 2) выхода из рынка (закрытие короткой позиции, result=40)        |
    //+------------------------------------------------------------------+
    int CMS_ES_Stoch::LongCondition()
      {
       int result=0;
    //--- idx можно использовать для того чтобы узнать режим работы эксперта
    //--- idx=0 - эксперт будет вызывать проверки выполнения торговых условий на каждом тике
    //--- idx=1 - эксперт будет вызывать проверки выполнения торговых условий только на новых барах
       int idx   =StartIndex();
    //--- проверка условий для открытия длинной позиции
    //--- формирование бычьей свечной комбинации Morning Star и выполнения условия signal line<30
      if (CheckCandlestickPattern(CANDLE_PATTERN_MORNING_STAR) && (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. Открытие короткой позиции и закрытие длинной позиции

  1. Сигналом к открытию короткой позиции является формирование паттерна Evening Star ("Вечерняя звезда") и выполнение условия StochSignal(1)>70 (значение сигнальной линии индикатора Stochastic на последнем завершенном баре больше 70).

  2. Сигналом к закрытию длинной позиции является пересечение сигнальной линией индикатора Stochastic уровня 80 (сверху вниз) или уровня 20 (сверху вниз).
    //+------------------------------------------------------------------+
    //| Метод проверки условий для входа и выхода с рынка                |
    //| Проверка условий для                                             |
    //| 1) входа в рынок (открытие короткой позиции, result=80)          |
    //| 2) выхода из рынка (закрытие длинной позиции, result=40)         |
    //+------------------------------------------------------------------+
    int CMS_ES_Stoch::ShortCondition()
      {
       int result=0;
    //--- idx можно использовать для того чтобы узнать режим работы эксперта
    //--- idx=0 - эксперт будет вызывать проверки выполнения торговых условий на каждом тике
    //--- idx=1 - эксперт будет вызывать проверки выполнения торговых условий только на новых барах
       int idx   =StartIndex();
    //--- проверка условий для открытия короткой позиции
    //--- формирование медвежьей свечной комбинации Evening Star и выполнения условия signal line>70
      if (CheckCandlestickPattern(CANDLE_PATTERN_EVENING_START) && (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);
      }
    

2.3. Создание эксперта на основе торговых сигналов разворотной модели "Morining/Evening Starts + Stochastic" при помощи Мастера MQL5

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

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

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

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

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

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

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

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

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

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

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

Добавляем модуль "Signals based on Morining/Evening Stars confirmed by Stochastic":

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

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

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

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

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

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

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

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

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

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

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

Нажав на кнопку "Готово", мы получим код сгенерированного советника - файл Expert_AMS_ES_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 H1, период тестирования: 1.1.2000-03.16.2011, PeriodK=12, PeriodD=8, PeriodSlow=29, MA_period=4).

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

Рис. 11. Результаты тестирования советника, построенного на базе генератора торговых сигналов "Morning/Evening Stars + Stochastic

Рис. 11. Результаты тестирования советника, построенного на базе генератора торговых сигналов "Morning/Evening Stars + Stochastic

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

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


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

Торговые сигналы свечных моделей "Bullish/Bearish Meeting Lines" (Бычья и медвежья модели встречающихся свечей) с подтверждением от индикатора RSI (Relative Strength Index).

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

Торговые сигналы свечных моделей "Bullish/Bearish Meeting Lines" (Бычья и медвежья модели встречающихся свечей) с подтверждением от индикатора MFI (Market Facilitation Index).

Мастер MQL5 - Торговые сигналы свечных паттернов Morning/Evening Stars + CCI Мастер MQL5 - Торговые сигналы свечных паттернов Morning/Evening Stars + CCI

Торговые сигналы свечных моделей "Morning Star/Evening Star" (Утренняя звезда/Вечерняя звезда) с подтверждением от индикатора CCI (Commodity Channel Index).

Мастер MQL5 - Торговые сигналы свечных паттернов Morning/Evening Stars + MFI Мастер MQL5 - Торговые сигналы свечных паттернов Morning/Evening Stars + MFI

Торговые сигналы свечных моделей "Morning Star/Evening Star" (Утренняя звезда/Вечерняя звезда) с подтверждением от индикатора MFI (Market Facilitation Index).