Смотри, как бесплатно скачать роботов
Find us on Telegram!
Join our fan page
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Советники

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

Просмотров:
7629
Рейтинг:
(33)
Опубликован:
2011.01.07 11:54
Обновлен:
2016.11.22 07:33
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

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

Здесь мы расскажем о трендовой стратегии, основанной на пересечении ценой скользящей средней. Эта стратегия включена в стандартную поставку терминала и называется "Signals based on price crossover with MA". Основные положения стратегии:

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

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

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

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

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

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

double  MA(int ind)          // возвращает значение средней на указанном баре
double  Open(int ind)        // возвращает цену открытия на указанном баре
double  Close(int ind)       // возвращает цену закрытия на указанном баре
double  StateMA(int ind)     // возвращает положительное число, если средняя возрастает и отрицательное, если убывает
double  StateOpen(int ind)   // возвращает разность между ценой открытия и скользящей средней 
double  StateClose(int ind)  // возвращает разность между ценой закрытия и скользящей средней
Проверка торговых условий на нулевом (незавершенном) баре очень часто приводит к ложным сигналам, поскольку цена (и значения индикаторов) могут меняться.


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

Определение факта пересечения ценой скользящей средней снизу вверх и проверка возрастания скользящей средней:

  • Open(1)<MA(1): цена открытия ниже скользящей средней;
  • Close(1)>MA(1): цена закрытия выше скользящей средней;
  • MA(1)>MA(2): проверка возрастания скользящей средней (фильтрация ложных сигналов).
//+------------------------------------------------------------------+
//| Проверяет выполнение условий для покупки                         |
//+------------------------------------------------------------------+
bool CSignalMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//--- цена пересекла скользящую среднюю снизу вверх и скользящая средняя возрастает
   return(StateOpen(1)<0 && StateClose(1)>0 && StateMA(1)>0);
  }

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

Определение факта пересечения ценой скользящей средней сверху вниз и проверка убывания скользящей средней:

  • Open(1)>MA(1): цена открытия выше скользящей средней;
  • Close(1)<MA(1): цена закрытия ниже скользящей средней;
  • MA(1)<MA(2): проверка убывания скользящей средней (фильтрация ложных сигналов).
//+------------------------------------------------------------------+
//| Проверяет выполнение условий для закрытия длинной позиции        |
//+------------------------------------------------------------------+
bool CSignalMA::CheckCloseLong(double& price)
  {
   price=0.0;
//--- цена пересекла скользящую среднюю сверху вниз и скользящая средняя убывает
  return(StateOpen(1)>0 && StateClose(1)<0 && StateMA(1)<0);
  }


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

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

//+------------------------------------------------------------------+
//| Проверяет выполнение условий для продажи                         |
//+------------------------------------------------------------------+
bool CSignalMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//--- цена пересекла скользящую среднюю сверху вниз и скользящая средняя убывает 
   return(StateOpen(1)>0 && StateClose(1)<0 && StateMA(1)<0);
  }

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

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

//+------------------------------------------------------------------+
//| Проверяет выполнение условий для закрытия короткой позиции       |
//+------------------------------------------------------------------+
bool CSignalMA::CheckCloseShort(double& price)
  {
   price=0.0;
//--- цена пересекла скользящую среднюю снизу вверх и скользящая средняя возрастает
   return(StateOpen(1)<0 && StateClose(1)>0 && StateMA(1)>0);
  }
//+------------------------------------------------------------------+

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

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

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

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

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


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

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

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

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

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

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

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

Линейно регрессионный канал Линейно регрессионный канал

Индикатор строит канал по уравнению линейной регрессии y=b+a*x.

ZigzagColor_Channel ZigzagColor_Channel

Индикатор ZigzagColor, рисующий канал.

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

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

DXMA DXMA

Индикатор скользящей средней с учетом DMI (Directional Movement Index).