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

Мастер MQL5 - Торговые сигналы по факту формирования Разворотной свечной модели - эксперт для MetaTrader 5

Просмотров:
7259
Рейтинг:
(45)
Опубликован:
2011.01.19 19:13
Обновлен:
2016.11.22 07:33
\MQL5\Include\Expert\Signal\
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

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

Класс CSignalCandles ("Signals based on reversal candlestick patterns") реализует алгоритм генерации торговых сигналов по факту формирования "разворотной" свечной модели с заданными параметрами. Наряду с сигналами данной системы рекомендуется использование дополнительных подтверждающих сигналов, например, от осцилляторов.

Суть системы заключается в идентификации момента формирования "разворотной" композитной свечи с заданными характеристиками (размер свечи в пунктах, структура теней). В анализе японских свечей аналогами подобных разворотных моделей являются "Молот" (Hammer) и "Повешенный" (Hanging Man), но в данной системе тело свечи не обязательно должно быть маленьким, а результирующая свеча строится из нескольких свечей.

Входные параметры системы:

  • Range - задает максимальное количество баров, которые будут участвовать в формировании композитной свечи.
  • Minimum - минимальный размер свечи (в пунктах), принимаемой к рассмотрению.
  • ShadowBig и ShadowSmall - параметры теней (в долях размера композитной свечи).
  • Limit, StopLoss и TakeProfit - уровни открытия, SL и TP, они задаются относительно цены закрытия композитной свечи (в долях ее размера).
  • Expiration - предназначен для указания времени жизни ордера (в барах) (если сделка предполагается не по рыночной цене (Limit!=0.0)).

Разворотные свечные модели определяются следующим образом.

Последовательно (начиная с последней завершенной свечи (с индексом 1) и до количества баров, заданных параметром Range) строится композитная свеча и проверяется ее размер. Если размер полученной свечи больше минимального размера, заданного параметром Minimum, то далее происходит проверка критериев разворота композитной свечи, которая осуществляется при помощи анализа теней свечей.

Сила медведей характеризуется размером верхней тени свечи, сила быков - размером нижней тени.

  • Для подтверждения разворота медвежьего движения (преобладание быков) требуется, чтобы размер нижней тени был больше величины ShadowBig, при этом размер верхней тени (сила медведей) должен быть меньше значения входного параметра ShadowSmall. В этом случае выполняется критерий разворота медвежьего движения (повышается вероятность движения цены вверх).
  • Для подтверждения разворота бычьего движения (преобладание медведей) требуется, чтобы размер верхней тени был больше величины ShadowBig и при этом размер нижней тени (сила быков) должен быть меньше значения входного параметра ShadowSmall. В этом случае выполняется критерий разворота бычьего движения (повышается вероятность движения цены вниз).

Помимо "разворотных" свечных моделей существует возможность работать в режиме торговли "на прорыв", этот режим соответствует отрицательным значениям параметра Limit (см. примечание к Мастер MQL5 - Торговые сигналы по пересечению двух EMA с фильтрацией сделок по времени).

В зависимости от значения параметра Limit возможны три различных варианта входа в рынок:

  1. Limit>0. Вход будет производится на коррекции по цене лучше рыночной (будут выставлены отложенные ордера Buy Limit и Sell Limit в зависимости от направления входа)
  2. Limit<0. Вход будет производится на продолжении движения цены в предполагаемом направлении по цене хуже текущей рыночной цены (будут выставлены отложенные ордера Buy Stop и Sell Stop в зависимости от направления входа).
  3. Limit=0. Вход будет производится по текущей рыночной цене.

Торговая стратегия реализована в классе CSignalCandles (файл SignalCandles.mqh следует скопировать в каталог в MQL5\Include\Expert\Signal)

Рисунок 1. Торговые сигналы стратегии

Рисунок 1. Торговые сигналы стратегии


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

Модуль с торговыми сигналами по данной стратегии реализован в классе CSignalCandles, для удобства анализа в нем присутствует функция:

int  Candle(int ind); // Возвращает положительное/отрицательное число в зависимости от типа композитной свечи
                      // ее численное значение равно количеству свечей (начиная с ind), которые были использованы
                      // для построения композитной свечи.

Для построения композитной свечи могут быть использованы несколько баров/свечей (максимальное их количество определяется параметром Range), однако выполнение условий формирования композитной свечи (ее размер, структура теней) может наступить раньше, абсолютное значение, возвращаемое функцией Candle, определяет количество баров, из которых сформировалась композитная свеча. Если условия формирования композитной свечи не выполнены, возвращается 0.

Следует особо отметить, что критерием того, является ли композитная свеча "бычьей" или "медвежьей", является структура теней:

  • у "бычьих" композитных свечей преобладает нижняя тень (цена опускалась к минимальной, однако быкам удалось поднять цену значительно выше минимальной);
  • у "медвежьих" композитных свечей преобладает верхняя тень (цена поднималась к максимальной, однако медведям удалось значительно снизить ее);
Аналогами являются разворотные модели японских свечей "Молот" (Hammer) и "Повешенный" (Hanging Man).


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

Для открытия длинной позиции необходимо формирование "бычьей" композитной свечи. Если композитная свеча не является "бычьей", то выходим из функции. В случае бычьей композитной свечи определяется ее размер и затем рассчитываются параметры размещаемого отложенного ордера на покупку.

Следует отметить, что тип устанавливаемого ордера (Buy Limit или Buy Stop) определяется знаком входного параметра Limit (если Limit=0 или |price-ask|<stops level, то размещается рыночный ордер на покупку , если Limit>0, размещается Buy Limit ордер, если Limit<0, то будет размещен отложенный ордер типа Buy Stop).

//+------------------------------------------------------------------+
//| Проверяет выполнение условий для покупки                         |
//+------------------------------------------------------------------+
bool CSignalCandles::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
//--- проверка типа композитной свечи, если она не сформирована или не является бычьей, выходим 
   if(Candle(1)<=0) return(false);
//--- рассчитываем размер полученной свечи,
//--- поскольку уровни выставляются в единицах размера композитной свечи
   double size=m_high_composite-m_low_composite;
//--- расчет цены отложенного ордера на покупку
   price=m_symbol.NormalizePrice(m_symbol.Ask()-m_limit*size);
//--- расчет уровня Stop Loss
   sl   =m_symbol.NormalizePrice(price-m_stop_loss*size);
//--- расчет уровня Take Profit
   tp   =m_symbol.NormalizePrice(price+m_take_profit*size);
//--- расчет времени истечения отложенного ордера
   expiration+=m_expiration*PeriodSeconds(m_period);
//--- условия открытия длинной позиции выполнены, возвращаем true
   return(true);
  }


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

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

//+------------------------------------------------------------------+
//| Проверяет выполнение условий для закрытия длинной позиции        |
//+------------------------------------------------------------------+
bool CSignalCandles::CheckCloseLong(double& price)
  {
//--- если композитная свеча не сформировалась или является бычьей, выходим
   if(Candle(1)>=0) return(false);
//---
   price=0.0;
//--- условия закрытия длинной позиции выполнены, возвращаем true
   return(true);
  }


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

Для открытия короткой позиции необходимо формирование "медвежьей" композитной свечи. Если композитная свеча не сформирована или сформированная композитная свеча не является "медвежьей", то выходим из функции. В случае сформировавшейся "медвежьей" композитной свечи определяется ее размер и затем рассчитываются параметры размещаемого отложенного ордера на продажу (тип размещаемого ордера определяется значением входного параметра Limit, см. "Открытие длинной позиции").

//+------------------------------------------------------------------+
//| Проверяет выполнение условий для продажи                         |
//+------------------------------------------------------------------+
bool CSignalCandles::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
//--- проверка типа композитной свечи, если она не сформирована или не является медвежьей, выходим 
   if(Candle(1)>=0) return(false);
//--- рассчитываем размер полученной свечи,
//--- поскольку уровни выставляются в единицах размера композитной свечи
   double size=m_high_composite-m_low_composite;
//--- расчет цены отложенного ордера на продажу
   price=m_symbol.NormalizePrice(m_symbol.Bid()+m_limit*size);
//--- расчет уровня Stop Loss
   sl   =m_symbol.NormalizePrice(price+m_stop_loss*size);
//--- расчет уровня Take Profit
   tp   =m_symbol.NormalizePrice(price-m_take_profit*size);
//--- расчет времени истечения отложенного ордера
   expiration+=m_expiration*PeriodSeconds(m_period);
//--- условия открытия короткой позиции выполнены, возвращаем true
   return(true);
  }

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

Сигналом к закрытию короткой позиции является формирование бычьей композитной свечи.

//+------------------------------------------------------------------+
//| Проверяет выполнение условий для закрытия короткой позиции       |
//+------------------------------------------------------------------+
bool CSignalCandles::CheckCloseShort(double& price)
  {
//--- если композитная свеча не сформировалась или является медвежьей, уходим
  if(Candle(1)<=0) return(false);
//---
   price=0.0;
//--- условия закрытия короткой позиции выполнены, возвращаем true
   return(true);
  }

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

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

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

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

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


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

Результаты тестирования советника на исторических данных (EURUSD H1, период тестирования: 1.1.2010-05.01.2011, Range=3, Minimum=50, ShadowBig=0.5, ShadowSmall=0.2, Limit=0, StopLoss=2.0, TakeProfit=1.0, Expiration=4).

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

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

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


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

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


sChartsSynchroScroll_v2 sChartsSynchroScroll_v2

Новая версия скрипта sChartsSynchroScroll.

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

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

Export Indicator's Values Export Indicator's Values

Скрипт экспортирует значения индикатора в файл CSV.

Библиотека хеш-функций и конвертаций в другие системы исчисления Библиотека хеш-функций и конвертаций в другие системы исчисления

В библиотеке содержатся алгоритмы хеш-функции общего назначения: adler32, CRC-32, MaHash8v64. А также функции преобразования из десятичной системы исчисления в строковое представление в Base системе исчисления и наоборот.