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

Мастер MQL5 - Торговые сигналы по пересечению основной и сигнальной линий индикатора MACD - эксперт для MetaTrader 5

Просмотров:
6453
Рейтинг:
(34)
Опубликован:
2011.01.13 20:19
Обновлен:
2017.09.05 16:46
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

В статье Создание эксперта без программирования с помощью Мастера MQL5 описаны шаги по автоматическому созданию кода советника при помощи Мастера MQL5.

Здесь мы расскажем о трендовой стратегии, основанной на использовании линий индикатора MACD. Эта стратегия включена в стандартную поставку терминала и называется "Signals based on crossover of main and signal MACD lines".

В основе индикатора MACD лежат быстрая EMA (FastEMA) и медленная EMA (SlowEMA). На основе этих линий строится основная линия MACD как разность между быстрой EMA и медленной EMA. Сигнальная линия индикатора MACD получается сглаживанием основной линии MACD с периодом PeriodSignal.

Основные положения стратегии:

  • Покупка: когда основная линия индикатора MACD пересекает сигнальную линию MACD снизу вверх.
  • Продажа: когда основная линия индикатора MACD пересекает сигнальную линию MACD сверху вниз.

Торговая стратегия реализована в классе CSignalMACD из Стандартной библиотеки (расположена в MQL5\Include\Expert\Signal\SignalMACD.mqh)


Рисунок 1. Торговые сигналы стратегии, торгующей по пересечению основной и сигнальной линий индикатора MACD


Торговые сигналы

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

double  MainMACD(int ind)      // возвращает значение основной линии MACD на указанном баре
double  SignalMACD(int ind)    // возвращает значение сигнальной линии MACD на указанном баре
double  StateMACD(int ind)     // возвращает разность между основной и сигнальной линиями на указанном баре
int     ExtStateMACD(int ind); // возвращает кол-во изменений знака разности между основной и сигнальной линиями MACD 


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

Условия открытия длинной позиции:

  • ExtStateMACD(1)==1; определяется факт пересечения снизу вверх основной и сигнальной линий индикатора MACD
//+------------------------------------------------------------------+
//| Проверяет выполнение условий для покупки                         |
//+------------------------------------------------------------------+
bool CSignalMACD::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
   price=0.0;
   sl   =m_symbol.Ask()-m_stop_loss*m_adjusted_point;
   tp   =m_symbol.Ask()+m_take_profit*m_adjusted_point;
//---
   return(ExtStateMACD(1)==1);
  }


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

Условия закрытия длинной позиции:

  • ExtStateMACD(1)==-1; определяется факт пересечения сверху вниз основной и сигнальной линий индикатора MACD
//+------------------------------------------------------------------+
//| Проверяет выполнение условий для закрытия длинной позиции        |
//+------------------------------------------------------------------+
bool CSignalMACD::CheckCloseLong(double& price)
  {
   price=0.0;
//---
   return(ExtStateMACD(1)==-1);
  }


3. Открытие короткой позиции

Правила открытия короткой позиции аналогичны правилам закрытия длинной позиции.

//+------------------------------------------------------------------+
//| Проверяет выполнение условий для продажи                         |
//+------------------------------------------------------------------+
bool CSignalMACD::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
   price=0.0;
   sl   =m_symbol.Bid()+m_stop_loss*m_adjusted_point;
   tp   =m_symbol.Bid()-m_take_profit*m_adjusted_point;
//---
   return(ExtStateMACD(1)==-1);
  }


4. Закрытие короткой позиции

Правила закрытия короткой позиции аналогичны правилам открытия длинной позиции.

//+------------------------------------------------------------------+
//| Проверяет выполнение условий для закрытия короткой позиции       |
//+------------------------------------------------------------------+
bool CSignalMACD::CheckCloseShort(double& price)
  {
   price=0.0;
//---
   return(ExtStateMACD(1)==1);
  }


Создание эксперта на основе торговых сигналов при помощи Мастера MQL5

Чтобы создать торгового робота по данной стратегии при помощи Мастера MQL5, выберите на втором шаге тип сигналов Signals based on crossover of main and signal MACD lines":


Рисунок 2. Выбор модуля сигналов на основе пересечения линий индикатора MACD в Мастере MQL5

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


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

Результаты тестирования советника на исторических данных (EURUSD H1, период тестирования: 1.1.2010-05.01.2011, PeriodFast=12, PeriodSlow=24, PeriodSignal=9, StopLoss=20, TakeProfit=80).

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

Рисунок 4. Результаты тестирования советника, использующего стратегию пересечения линий индикатора MACD

Рисунок 3. Результаты тестирования советника, использующего стратегию пересечения линий индикатора MACD

Файл SignalMACD.mqh, содержащий класс торговых сигналов  CSignalMACD (входит в Стандартную библиотеку MetaTrader 5) располагается в папке MQL5\Include\Expert\Signal.

Код советника, созданного Мастером MQL5, прилагается в файле testmacd.mq5.
Мастер MQL5 - Торговые сигналы по пересечению двух EMA с фильтрацией сделок по времени Мастер MQL5 - Торговые сигналы по пересечению двух EMA с фильтрацией сделок по времени

Торговые сигналы по пересечению двух экспоненциальных скользящих средних с фильтрацией сделок по временным параметрам "Signals based on crossover of two EMA with intraday time filter".

Мастер MQL5 - Торговые сигналы по пересечению двух экспоненциальных скользящих средних Мастер MQL5 - Торговые сигналы по пересечению двух экспоненциальных скользящих средних

Торговые сигналы по пересечению двух экспоненциально сглаженных скользящих средних "Signals based on crossover of two EMA".

Профессиональный ZigZag Профессиональный ZigZag

ZigZag, лишенный большинства недостатков типового.

Мастер MQL5 - Торговые сигналы по пересечению линий индикатора Alligator Мастер MQL5 - Торговые сигналы по пересечению линий индикатора Alligator

Торговые сигналы по пересечению линий индикатора Alligator.