Скачать MetaTrader 5

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

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

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

2011.09.14 13:28
Советники

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

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

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

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

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

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

В предыдущих публикациях рассматривались торговые сигналы, основанные на свечных паттернах с подтверждением от Stochastic:

  1. 3 Black Crows/3 White Soldiers
  2. Dark Cloud Cover/Piercing Line
  3. Bullish Engulfing/Bearish Engulfing
  4. Bullish Harami/Bearish Harami
  5. Hammer/Hanging Man
  6. Bullish/Bearish Meeting Lines
  7. Morning/Evening Stars

В данной работе мы рассмотрим результаты совместного использования всех этих моделей в комбинации с сигналами индикатора Stochastic.


1. Бычьи и медвежьи свечные модели и их распознавание

В классе CandlePattern также присутствуют функции определения факта формирования какой-либо из бычьих или медвежьих свечных комбинаций (кроме комбинации Hammer/Hanging Man).

Проверка формирования какой-либо бычьей свечной модели осуществляется при помощи функции CheckPatternAllBullish():

//+------------------------------------------------------------------+
//| Проверка факта формирования какой-либо бычьей свечной модели     |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternAllBullish()
  {
   return(CheckPatternThreeWhiteSoldiers()  || 
          CheckPatternPiercingLine()       || 
          CheckPatternMorningDoji()        || 
          CheckPatternBullishEngulfing()   || 
          CheckPatternBullishHarami()      || 
          CheckPatternMorningStar()        || 
          CheckPatternBullishMeetingLines());
  }

Проверка формирования какой-либо медвежьей свечной модели осуществляется при помощи функции CheckPatternAllBearish():

//+------------------------------------------------------------------+
//| Проверка факта формирования какой-либо медвежьей свечной модели  |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternAllBearish()
  {
   return(CheckPatternThreeBlackCrows()     || 
          CheckPatternDarkCloudCover()     || 
          CheckPatternEveningDoji()        || 
          CheckPatternBearishEngulfing()   || 
          CheckPatternBearishHarami()      || 
          CheckPatternEveningStar()        || 
          CheckPatternBearishMeetingLines());
  }

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

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

Сигналы выхода из позиций формируются в двух случаях:

  1. При формировании какой-либо из противоположных свечных моделей (медвежьих для длинной позиции и бычьих для короткой).
  2. В зависимости от дальнейшего поведения %D. Если %D достигает противоположной рынку отметки (80 в длинной и 20 в короткой позициях) или если %D не подтверждает сигнала разворота и достигает уровня 20 в длинной и 80 в короткой позициях.

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

  • int CCP_Stoch::LongCondition() - проверка условий для открытия длинной позиции (m_pattern_0) и закрытия короткой позиции (m_pattern_1);
  • int CCP_Stoch::ShortCondition() - проверка условий для открытия короткой позиции (m_pattern_0) и закрытия длинной позиции (m_pattern_1).

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

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

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

//+------------------------------------------------------------------+
//| Метод проверки условий для входа и выхода с рынка                |
//| Проверка условий для                                             |
//| 1) входа в рынок (открытие длинной позиции, m_pattern_0)         |
//| 2) выхода из рынка (закрытие короткой позиции, m_pattern_1)      |
//+------------------------------------------------------------------+
int CCP_Stoch::LongCondition()
  {
   int res=0;
//---- проверка условий для открытия длинной позиции
//---- формирование какой-либо бычьей свечной комбинации и выполнения условия signal line<30
   if(CheckPatternAllBullish() && (StochSignal(1)<30)) res=m_pattern_0; // сигнал для открытия длинной позиции

//--- проверка условий для закрытия короткой позиции
//--- формирование какой-либо бычьей свечной комбинации или пересечение сигнальной линией (снизу вверх 20, снизу вверх 80)
   if(CheckPatternAllBullish() ||
      ((StochSignal(1)>20) && (StochSignal(2)<20)) || 
      ((StochSignal(1)>80) && (StochSignal(2)<80)))    res=m_pattern_1; // сигнал для закрытия короткой позиции
//---
   return(res);
  }

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

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

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

//+------------------------------------------------------------------+
//| Метод проверки условий для входа и выхода с рынка                |
//| Проверка условий для                                             | 
//| 1) входа в рынок (открытие короткой позиции, m_pattern_0)        |
//| 2) выхода из рынка (закрытие длинной позиции, m_pattern_1)       |
//+------------------------------------------------------------------+
int CCP_Stoch::ShortCondition()
  {
   int res=0;
//--- проверка условий для открытия короткой позиции
//---- формирование какой-либо медвежьей свечной комбинации и выполнения условия signal line>70
   if(CheckPatternAllBearish() && (StochSignal(1)>70)) res=m_pattern_0; // сигнал для открытия короткой позиции

//--- проверка условий для закрытия длинной позиции
//---- формирование какой-либо медвежьей свечной комбинации или пересечение сигнальной линией (сверху вниз 80, сверху вниз 20)
   if(CheckPatternAllBearish() || 
      ((StochSignal(1)<80) && (StochSignal(2)>80)) || 
      ((StochSignal(1)<20) && (StochSignal(2)>20)))    res=m_pattern_1; // сигнал для закрытия длинной позиции
//---
   return(res);
  }

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

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

Чтобы создать торгового робота по данной стратегии при помощи Мастера MQL5, выберите на втором шаге тип сигналов "Signals based on Candlestick Patterns+Stochastic":

Рисунок 1. Выбор генератора торговых сигналов "Signals based on Candlestick Patterns+Stochastic" в Мастере MQL5

Рисунок 1. Выбор генератора торговых сигналов "Signals based on Candlestick Patterns+Stochastic" в Мастере MQL5

На последующих шагах укажите нужный тип трейлинга и систему управления капиталом. Код эксперта будет создан автоматически, теперь его нужно скомпилировать и можно приступать к тестированию.


2.4. Результаты тестирования

Результаты тестирования советника на исторических данных (EURUSD H1, период тестирования: 1.1.2000-02.02.2011, PeriodK=33, PeriodD=37, PeriodSlow=30, MA_period=25).

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

Рисунок 2. Результаты тестирования советника, построенного на базе генератора торговых сигналов "Signals based on Candlestick Patterns+Stochastic"

Рисунок 2. Результаты тестирования советника, построенного на базе генератора торговых сигналов "Signals based on Candlestick Patterns+Stochastic"

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

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


ATR Channels ATR Channels

Индикатор ATR Channels строит каналы движения цены с учётом ATR (Average True Range).

DailyPivot Shift DailyPivot Shift

Индикатор DailyPivot_Shift отличается от обычного индикатора DailyPivot тем, что основные уровни могут быть рассчитаны со сдвигом начала дня.

XCCI XCCI

Классический Индекс товарного канала с использованием обычной формулы среднего отклонения с возможностью выбора алгоритма усреднения и динамически изменяемыми уровнями перепроданности/перекупленности.

DailyPivotShift_Full DailyPivotShift_Full

Этот вариант индикатора DailyPivot_Shift_Full удобен прежде всего тем, что может быть построен для любого бара графика и позволяет видеть полную картину поведения рынка относительно уровней индикатора на каждом баре.