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

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

Просмотров:
9096
Рейтинг:
(32)
Опубликован:
2011.01.11 20:30
Обновлен:
2016.11.22 07:33
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

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

Здесь мы расскажем о трендовой стратегии, основанной на пересечении двух (быстрой и медленной) экспоненциально сглаженных скользящих средних. Эта стратегия включена в стандартную поставку терминала и называется "Signals based on crossover of two EMA".

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

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

Торговая стратегия реализована в классе CSignalCrossEMA.

Рисунок 1. Торговые сигналы стратегии, торгующей по пересечению двух экспоненциально сглаженных скользящих средних

Рисунок 1. Торговые сигналы стратегии, торгующей по пересечению двух экспоненциально сглаженных скользящих средних


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

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

double   FastEMA(int ind)      // возвращает значение быстрой скользящей средней на указанном баре
double   SlowEMA(int ind)      // возвращает значение медленной скользящей средней на указанном баре
double   StateEMA(int ind)     // возвращает разность между значениями медленной и быстрой средними на указанном баре


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

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

  • StateEMA(1)>0 и StateEMA(2)<0: быстрая скользящая средняя пересекла медленную снизу вверх на последнем сформировавшимся баре.
//+------------------------------------------------------------------+
//| Проверяет выполнение условий для покупки                         |
//+------------------------------------------------------------------+
bool CSignalCrossEMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
   if(!(StateEMA(2)<0 && StateEMA(1)>0)) return(false);
//---
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//---
   return(true);
  }


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

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

  • StateEMA(1)<0 и StateEMA(2)>0: быстрая скользящая средняя пересекла медленную сверху вниз на последнем сформировавшимся баре.
//+------------------------------------------------------------------+
//| Проверяет выполнение условий для закрытия длинной позиции        |
//+------------------------------------------------------------------+
bool CSignalCrossEMA::CheckCloseLong(double& price)
  {
   if(!(StateEMA(2)>0 && StateEMA(1)<0)) return(false);
//---
   price=0.0;
//---
   return(true);
  }


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

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

//+------------------------------------------------------------------+
//| Проверяет выполнение условий для продажи                         |
//+------------------------------------------------------------------+
bool CSignalCrossEMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
   if(!(StateEMA(2)>0 && StateEMA(1)<0)) return(false);
//---
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//---
   return(true);
  }


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

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

//+------------------------------------------------------------------+
//| Проверяет выполнение условий для закрытия короткой позиции       |
//+------------------------------------------------------------------+
bool CSignalCrossEMA::CheckCloseShort(double& price)
  {
   if(!(StateEMA(2)<0 && StateEMA(1)>0)) return(false);
//---
   price=0.0;
//---
   return(true);
  }

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

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

Рисунок 2. Выбор модуля сигналов пересечения двух экспоненциально сглаженных скользящих средних в Мастере MQL5

Рисунок 2. Выбор модуля сигналов пересечения двух экспоненциально сглаженных скользящих средних в Мастере MQL5

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

Помимо данного модуля сигналов в Стандартной библиотеке также представлен модуль торговых сигналов по пересечению двух скользящих средних "Signals based on crossover of two MA", функционал которого реализован в классе CSignalCrossMA. Он позволяет произвести более гибкую настройку данной торговой системы (помимо периодов скользящих средних он позволяет использовать различные типы и методы усреднения, смещения средних а также работу с уровнями Stop Loss и Take Profit).

Рисунок 3. Модуль сигналов пересечения двух скользящих средних в Мастере MQL5

Рисунок 3. Модуль сигналов пересечения двух скользящих средних в Мастере MQL5


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

Результаты тестирования советника на исторических данных (EURUSD H1, период тестирования: 1.1.2010-05.01.2011, FastPeriod=12, SlowPeriod=24).

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

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

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

Файл SignalCrossEMA.mqh, содержащий класс торговых сигналов CSignalCrossEMA нужно скопировать в каталог_данных_терминала\MQL5\Include\Expert\Signal.

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

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

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

Торговые сигналы по пересечению ценой экспоненциальной скользящей средней с подтверждением от индикатора ADX "Signals based on price crossover with MA confirmed by ADX".

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

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

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

Торговые сигналы по пересечению основной и сигнальной линий индикатора MACD "Signals based on crossover of main and signal MACD lines" (класс CSignalMACD из Стандартной библиотеки).