Скачать MetaTrader 5

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

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

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

2011.03.23 11:09
Советники

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

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

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

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

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

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

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


1. Паттерны "Meeting Lines" и их распознавание

1.1. Паттерн "Бычьи встречающиеся свечи" (Bullish Meeting Lines)

Данный паттерн представляет собой комбинацию медвежьей и бычьей свечей, у которых совпадают (или очень близки) цены закрытия. Длина тел обоих свечей больше средней.

Бычьи встречающиеся свечи свидетельствуют о развороте нисходящего тренда.

Рисунок 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"

Рис. 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. Торговые сигналы в комбинации с индикатором MFI

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

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

Рис. 3. Торговые сигналы паттерна "Bearish Meeting Lines" с подтверждением от индикатора MFI

Рис. 3. Торговые сигналы паттерна "Bearish Meeting Lines" с подтверждением от индикатора MFI


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Нажав на кнопку "Готово", мы получим код сгенерированного советника - файл Expert_AML_MFI.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, PeriodMFI=12, MA_period=4).

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

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

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

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

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


YURAZ_RSAXEL Скрипт рисует уровни Рудолфа Акселя YURAZ_RSAXEL Скрипт рисует уровни Рудолфа Акселя

Скрипт рисует уровни Рудолфа Акселя

YURAZ_CLOSEPRC_V1 YURAZ_CLOSEPRC_V1

Закрытие всех открытых позиций одним кликом либо закрытие всех позиций при достижении указанного профита в процентах от депозита

EA Simple BB EA Simple BB

Советник основан на индикаторе Bollinger Bands.

Мультипериодный индикатор MK_LaguerreMultiPeriodV2 Мультипериодный индикатор MK_LaguerreMultiPeriodV2

Обычный Laguerre на нескольких таймфреймах одновременно.