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

SignalMAAboveBelow 3 - библиотека для MetaTrader 5

Просмотров:
1362
Рейтинг:
(14)
Опубликован:
2018.03.08 14:13
\MQL5\Signal\ \MQL5\Experts\
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Развитие второй версии библиотеки SignalMAAboveBelow 2.


Новое в версии 3

  • Параметр CurrentBarSize - размер текущего бара (вычисляется как Close-Open);
  • Параметр PreviousBarSize - размер предыдущего бара (вычисляется как Close-Open).

При этом, если цена на текущем баре находится НАД индикатором, оба бара должны быть бычьими. А если цена на текущем баре находится ПОД индикатором, то оба бара должны быть медвежьими. Таким образом оба параметра (CurrentBarSize и PreviousBarSize) выступают защитными фильтрами при открытии позиции.

В модуле сигналов подключаем таймсерии в конструкторе:

//+------------------------------------------------------------------+
//| Constructor                                                      |
//+------------------------------------------------------------------+
CSignalMA::CSignalMA(void) : m_reverse(false),
                             m_ma_period(12),
                             m_ma_shift(0),
                             m_ma_method(MODE_SMA),
                             m_ma_applied(PRICE_CLOSE),
                             m_pattern_0(80),
                             m_size_current_bar(40),
                             m_size_previous_bar(20)
  {
//--- initialization of protected data
   m_used_series=USE_SERIES_OPEN+USE_SERIES_HIGH+USE_SERIES_LOW+USE_SERIES_CLOSE;
  }

После подключения таймсерий, можно обращаться к объектам m_close и m_open классов CiClose и CiOpen, соответственно (данные объекты объявлены на более высоком уровне - на уровне родителя ExpertBase.mqh).

Работаем с этими объектами в CSignalMA::LongCondition

//+------------------------------------------------------------------+
//| "Voting" that price will grow.                                   |
//+------------------------------------------------------------------+
int CSignalMA::LongCondition(void)
  {
   if(m_type_trade==1) // m_type_trade: enum type of trade: 0 -> BUY, 1 -> SELL, 2 -> BUY and SELL
      return(0);
   int result=0;
   int idx   =StartIndex();
//---
   if(m_close.GetData(idx+1)-m_open.GetData(idx+1)<m_previous_bar_size*PriceLevelUnit())
      return(0);
   if(m_close.GetData(idx)-m_open.GetData(idx)<m_current_bar_size*PriceLevelUnit())
      return(0);
//--- analyze positional relationship of the close price and the indicator at the first analyzed bar

и в CSignalMA::ShortCondition

//+------------------------------------------------------------------+
//| "Voting" that price will fall.                                   |
//+------------------------------------------------------------------+
int CSignalMA::ShortCondition(void)
  {
//--- m_type_trade: enum type of trade: 0 -> BUY, 1 -> SELL, 2 -> BUY and SELL
   if(m_type_trade==0)
      return(0);
   int result=0;
   int idx=StartIndex();
//---
   if(m_open.GetData(idx+1)-m_close.GetData(idx+1)<m_previous_bar_size*PriceLevelUnit())
      return(0);
   if(m_open.GetData(idx)-m_close.GetData(idx)<m_current_bar_size*PriceLevelUnit())
      return(0);
//--- analyze positional relationship of the close price and the indicator at the first analyzed bar

Пример открытия позиций при параметре Reverse == false:

SignalMAAboveBelow 3 Open Buy

Рис. 1. SignalMAAboveBelow 3 - открытие BUY позиции

SignalMAAboveBelow 3 Open Sell

Рис. 2. SignalMAAboveBelow 3 - открытие SELL позиции


Параметры модуля сигналов

  • Reverse - флаг реверса сигналов;
  • PeriodMA - период усреднения индикатора Moving Average;
  • Shift - смещение индикатора Moving Average по горизонтали;
  • Method - тип сглаживания индикатора Moving Average;
  • Applied - тип цены, на основе которой рассчитывается индикатор Moving Average;
  • TypeOfTrade - тип торговых сигналов: 0 → BUY, 1 → SELL, 2 → BUY and SELL;
  • CurrentBarSize - размер текущего бара (вычисляется как Close-Open);
  • PreviousBarSize - размер предыдущего бара (вычисляется как Close-Open).

Параметры тестового советника TestSignalMAAboveBelow3.mq5 даны по умолчанию, оптимизация не проводилась.

Кстати, если в советнике TestSignalMAAboveBelow3.mq5, сгенерированном в Мастере MQL5,

//+------------------------------------------------------------------+
//| Inputs                                                           |
//+------------------------------------------------------------------+
//--- inputs for expert
input string             Expert_Title                 ="TestSignalMAAboveBelow3"; // Document name
ulong                    Expert_MagicNumber           =20884;                     // 
bool                     Expert_EveryTick             =false;                     // 
//--- inputs for main signal

разрешить работу НА КАЖДОМ ТИКЕ (для этого "false" - который ставится по-умолчанию, заменить на "true"), можно получить более интересные результаты: советник станет быстрее отрабатывать условие, когда текущий бар (это будет бар с индексом #0) станет равным или чуть больше заданного параметра CurrentBarSize.

Alexav SpeedUp M1 Alexav SpeedUp M1

Одновременное открытие двух противоположных позиций. Trailing позиций.

Hans123_Trader Hans123_Trader

Отложенные ордера Buy Stop и Sell Stop. Работа советника в ограниченном временном промежутке. Определение самых высоких и самых низких цен в заданном интервале баров. Трейлинг позиций.

Fractal_TL Fractal_TL

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

Days of the week Days of the week

Гистограмма дней недели.