MACD модификация

Лучший брокер бинарных опционов за 2020 год:
  • БИНАРИУМ
    БИНАРИУМ

    Лидер среди всех брокеров бинарных опционов! Бесплатное обучение и демо-счет! Идеально для начинающих и средне-опытных трейдеров.
    Получите свой бонус за регистрацию:

Индикатор BB MACD — удачная модификация знаменитого осциллятора

Индикатор BB MACD, как можно понять из названия, является модификацией знаменитого осциллятора MACD. Он прост в применении, у него хорошо, недвусмысленно, реализована визуальная индикация, так что пользоваться им удобно.

BB MACD это трендовый индикатор, позволяющий находить точки разворота рынка, определять силу тенденции, идентифицировать флэт.

Бесплатно скачать данный алгоритм Вы можете вот здесь:

Отличительные особенности BB MACD

В данном алгоритме добавлен канал из двух линий, верхней и нижней. Этот канал показывает, куда движется рынок – вверх, вниз или вбок. Если линии сужены, находятся близко друг к другу или вообще параллельны, имеем рендж. Если линии расходятся в противоположные стороны (верхняя вверх, нижняя вниз), получаем начало восходящего или нисходящего движения.

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

Центральная линия в виде точек демонстрирует изменение направления тренда. Все элементарно:

  • сиреневые точки – продаем;
  • зеленые точки – покупаем.

Настройки индикатора BB MACD

Осциллятор BB MACD не отличается большим количеством разнообразных настроек. Хотя у него переменных больше, чем у MACD, но работать с ним в достаточной мере удобно.

  • FastLen – период построения «быстрой» средней (значение по умолчанию 12).
  • SlowLen – здесь вводится значение для «медленной» средней (стандартно 26).
  • Length – период расчета средней и стандартного отклонения (обычно используется 10).
  • BarsCount – цифра в этом поле определяет, на какую глубину в истории строить индикатор, то есть, на каком количестве баров или свечей назад будет отображаться работа алгоритма (по умолчанию 400).
  • St.Dv. (standart deviation) – коэффициент для отображения индикатора стандартного отклонения в сравнении со скользящей среднее (обычное значение 2.5). Этому параметру следует уделить особое внимание, так как, меняя его значение, можно получить неплохие результаты индикативности. Поэкспериментируйте с St.Dv., например, значение 20 дает хорошее представление о периоде консолидации или выхода из нее.

Внешний вид индикатора представлен на иллюстрации ниже. Разработчики предоставили два варианта BB MACD, написанных на языке программирования mql4 и mql5, поэтому его можно использовать как в MetaTrader 4, так и в MetaTrader 5 версии.

Сигналы индикатора BB MACD

На предыдущей иллюстрации показана валютная пара AUDNZD на 4 часовом таймфрейме. Чем выше используемый временной промежуток, тем выше надежность сигнала. Выбраны стандартные настройки.

Подсказка: если Вы изменили параметры и забыли, какие использовались разработчиками, следует нажать на кнопку «сброс» в окне настроек для отката всех изменений.

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

Обзоры двух других осцилляторов:

Условия для заключения сделки Sell:

  • Верхняя и нижняя граница канала расположены близко друг к другу и начинают равно удаляться.
  • Средняя линия поменяла раскраску на сиреневую.

Условия для заключения сделки Buy:

  • Линии отклонений канала близки или параллельны.
  • Центральная линия имеет зеленый цвет.

Для подтверждения сигналов осциллятора BB MACD и отсечения шума, можно использовать экспоненциальную скользящую среднюю – MA14, где 14 это значение периода для расчета.

Добавив MA14 на график, мы берем сигналы на покупку только тогда, когда цена поднимается выше «машки». Условия для продажи противоположны: когда цена закрепляемся ниже средней линии, рассматриваем возможность заключения сделки sell. На основе этих двух индикаторов можно построить хорошую торговую стратегию, прикрутив грамотно настроенный мани менеджмент.

Еще один снимок того же инструмента, но с настройками St.Dv. = 20.

Индикатор BB MACD можно посоветовать начинающим трейдерам, ищущим несложный, но в то же время удобный и информативный осциллятор. С его помощью легко следовать за рынком, так как наглядность индикатора на высоте. Внедрение в программный код канала девиации – это отличное решение авторов алгоритма, повышающее эффективность программного продукта.

Обзор Ларсон и Хольц и отзывы о лицензированном брокере

Брокеры бинарных опционов, у которых есть бесплатные технические индикаторы

Крупнейший бинарный опцион — обзор самой большой брокерской компании.

© 2020 RATINGS Forex, Все права защищены

MACD индикатор

Построение линейного MACD

Для того, чтобы рассчитать линейный MACD необходимо вычесть из цены экспоненциальной скользящей средней с наименьшим периодом, цену экспоненциальной средней с наибольшим периодом, а результат можно увидеть на столбиках и гистограммах (можно перепутать с другой модификацией — MACD гистограмма). Итоговый результат сглаживается при помощи третьей экспоненциальной средней и переносится под видом скользящей линии, которая называется сигнальная линия.
В настройках по умолчанию на дневных графиках установлены такие настройки: короткая средняя – период 12 дней, длинная средняя – период 26 дней, а сглаживающая скользящая имеет период 9 дней.

1) В основном MACD используют для того, чтобы выявить торговый сигнал при боковом движении цены (консолидационный период).

2) Покупать нужно тогда, когда в нижней части индикатора сигнальная линия пересечет изнутри наружу столбиковую гистограмму.

3) Продавать нужно тогда, когда в верхней части индикатора сигнальная линия изнутри наружу пересекает столбиковую гистограмму.

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

5) Когда MACD гистограмма стоит ниже нуля, можно понять, что на рынке сейчас нисходящий тренд. В таком случае при пересечении сверху вниз нулевой линии дает понять, что нужно продавать. При этом необходимо учесть насколько долго индикатор был ниже нуля.

6) Если гистограмма расходится с графиком цен — это самый сильный сигнал.

7) Если сигнал менее сильный, но более частый – нужно ждать изменения направления наклона MACD гистограммы.

1) MACD на внутридневных графиках дает много ложных сигналов, из-за этого его лучше использовать на дневных или выше таймфреймах.

MACD Sample — эксперт для MetaTrader 5

Советник MACD Sample входит в комплект стандартной поставки клиентского терминала MetaTrader 5 и представляет собой пример советника, торгующего при помощи индикатора MACD.

Файл советника MACD Sample.mq5 располагается в папке: «каталог_данных_терминала\MQL5\Experts\Examples\MACD\». Данный советник представляет собой пример использования объектно-ориентированного подхода к разработке советников.

Рассмотрим подробнее структуру этого советника и принцип его работы.

1. Свойства советника

1.1. Свойства советника

Первые 5 строк содержат комментарий, следующие 7 строк задают свойства MQL5-программы (copyright, link, version, description) при помощи директивы препроцессора #property.

При запуске советника они отображаются во вкладке «Общие»:

Рис. 1. Общие параметры советника MACD Sample

1.2. Включаемые файлы

Далее при помощи директивы #include следует указание компилятору о необходимости включения файлов, содержащих торговые классы Стандартной библиотеки:

  • Trade.mqh (CTrade — класс для совершения торговых операций);
  • SymbolInfo.mqh (CSymbolInfo — класс для работы со свойствами торгового инструмента);
  • PositionInfo.mqh (CPositionInfo — класс для работы со свойствами открытой позиции);
  • AccountInfo.mqh (CAccountInfo — класс для работы со свойствами торгового счета).

Экземпляры соответствующих классов в дальнейшем используются как переменные-члены класса CExpert (раздел 3).

1.3. Входные параметры

После этого указываются тип, наименования, значения по умолчанию и комментарии, роль которых показана на рис. 2.

Обратите внимание на то, что наименования входных параметров имеют префикс «Inp». Также отметим, что глобальные переменные имеют префикс «Ext». Подобный подход к наименованию переменных упрощает работу при использовании большого количества различных переменных.

InpLots — торговый объем, параметры InpTakeProfit и InpTrailingStop определяют уровни Take Profit и Trailing Stop,

Текст, указанный в комментариях в строке входного параметра, наряду со значениями по умолчанию, отображается во вкладке «Параметры» вместо наименования входного параметра:

Рис. 2. Входные параметры советника MACD Sample

1.4. Глобальные переменные

После этого объявляется глобальная переменная ExtTimeOut, она будет использоваться для контроля времени совершения торговых операций.

После объявления класса CSampleExpert в строке 76 объявляется другая глобальная переменная: ExtExpert — экземпляр класса CSampleExpert:

Объект ExtExpert (экземпляр класса CSampleExpert) содержит базовую логику торговой стратегии (раздел 3).

2. Функции обработки событий

Функции обработки событий

2.1. Функция инициализации OnInit()

Функция OnInit() вызывается один раз при первом запуске советника. В обработчике события OnInit() обычно производится подготовка советника к работе: проверка корректности входных параметров, инициализация индикаторов, переменных и т.д. В случае критических ошибок, при которых дальнейшая работа не имеет смысла, используется выход из функции с кодом возврата INIT_FAILED.

В данном случае вызывается метод Init() объекта ExtExpert, который возвращает true или false в зависимости от успешности подготовки всех объектов, необходимых для работы (подробнее в разделе 3.4). В случае ошибки производится выход из функции OnInit() с кодом возврата INIT_FAILED — это правильный способ завершения работы советника/индикатора в случае неудачной инициализации.

2.2. Функция OnTick()

Функция OnTick() вызывается каждый раз при поступлении новой котировки по символу графика, на котором запущен советник.

В обработчике события OnTick() реализован механизм периодического вызова метода ExtExpert.Processing(), который используется для анализа рынка и проведения торговых операций при выполнении торговых условий.

Интервал времени между вызовами задается значением входного параметра ExtTimeOut.

2.3. Функция деинициализации OnDeInit()

Функция деинициализации OnDeInit() вызывается при удалении советника с графика. Если в процессе работы программа размещает графические объекты, их можно убрать с графика.

В данном примере функция деинициализации отсутствует и никаких действий не производится.

3. Класс CSampleExpert

3.1. Класс CSampleExpert

Класс советника содержит декларацию переменных (членов класса) и функций (методов класса).

Для удобства работы с переменными все переменные-члены класса содержат префикс «m_» (member), который указывает на то, что данная переменная является членом класса. Перед объявлением переменной или метода указывается ее тип (или возвращаемое значение для функций).

Видимость переменных и методов-членов класса задается при помощи модификаторов доступа. В классе CSampleExpert используется модификаторы protected и public. Все переменные и методы, объявленные в секции public, являются публичными и доступны извне. Класс CSampleExpert имеет 5 таких методов:

    CSampleExpert(void) — конструктор (вызывается автоматически при создании экземпляра класса);

CSampleExpert(void) — деструктор (вызывается автоматически при удалении экземпляра класса);

  • bool Init(void) — метод инициализации, в котором производится подготовка все данных, необходимых для работы;
  • void Deinit(void) — метод деинициализации;
  • bool Processing(void) — метод обработки.
  • Переменные-члены класса CSampleExpert, объявленные с модификатором доступа protected, будут доступны только внутри методов класса CSampleExpert (и его потомков).

    1. double m_adjusted_point — переменная-множитель для корректной работы с 3/5-значными котировками;
    2. CTrade m_trade — экземпляр класса СTrade;
    3. CSymbolInfo m_symbol — экземпляр класса CSymbolInfo;
    4. CPositionInfo m_position — экземпляр класса СPositionInfo;
    5. CAccountInfo m_account — экземпляр класса CAccountInfo;
    6. int m_handle_macd — переменная для хранения значения хендла индикатора MACD.
    7. int m_handle_ema — переменная для хранения значения хендла индикатора EMA;
    8. double m_buff_MACD_main[] — динамический массив значений типа double, используется для запроса значений основной линии индикатора MACD;
    9. double m_buff_MACD_signal[] — динамический массив значений типа double, используется для запроса значений сигнальной линии индикатора MACD;
    10. double m_buff_EMA[] — динамический массив значений типа double, используется для запроса значений индикатора EMA;
    11. double m_macd_current — используется для хранения текущего значения основной линии индикатора MACD;
    12. double m_macd_previous — используется для хранения предыдущего значения основной линии индикатора MACD;
    13. double m_signal_current — используется для хранения текущего значения сигнальной линии индикатора MACD;
    14. double m_signal_previous — используется для хранения предыдущего значения сигнальной линии индикатора MACD;
    15. double m_ema_current — используется для хранения текущего значения индикатора EMA;
    16. double m_ema_previous используется для хранения предыдущего значения индикатора EMA;
    17. double m_macd_open_level,
    18. double m_macd_close_level,
    19. double m_traling_stop,
    20. double m_take_profit — используются для хранения значений ценовых уровней (заданных во входных параметрах) с учетом множителя m_adjusted_point.

    Методы класса CSampleExpert, объявленные с модификатором доступа protected:

    1. bool InitCheckParameters(const int digits_adjust) — проверка на корректность входных параметров и инициализация параметров работы эксперта;
    2. bool InitIndicators(void) — инициализация (создание) индикаторов MACD и Moving Average;
    3. bool LongClosed(void) — возвращает true (и закрывает открытую длинную позицию) при выполнении условий закрытия длинной позиции;
    4. bool ShortClosed(void) — возвращает true (и закрывает открытую короткую позицию) при выполнении условий закрытия короткой позиции;
    5. bool LongModified(void) — возвращает true (и модифицирует цену Stop Loss) при выполнении условий изменения уровня Stop Loss открытой длинной позиции;
    6. bool ShortModified(void) — возвращает true (и модифицирует цену Stop Loss) при выполнении условий изменения уровня Stop Loss открытой короткой позиции;
    7. bool LongOpened(void) — возвращает true (и открывает длинную позицию) при выполнении условий открытия длинной позиции;
    8. bool ShortOpened(void) — возвращает true (и открывает короткую позицию) при выполнении условий открытия короткой позиции.

    3.2. Конструктор класса CSampleExpert

    Конструктор класса вызывается автоматически при создании объекта-экземпляра класса. При его вызове устанавливаются значения по умолчанию (в скобках) для переменных-членов класса и задается направление индексации как в таймсериях для массивов m_buff_MACD_main[], m_buff_MACD_signal[], m_buff_EMA[].

    3.3. Деструктор класса CSampleExpert

    Деструктор класса CSampleExpert кода не содержит.

    3.4. Метод Init класса CSampleExpert

    В методе Init() производится инициализация переменных членов-класса и проверка корректности входных параметров.

    Вызовом метода Name() объекта m_symbol (экземпляр класса CSymbolInfo) устанавливается наименование инструмента, на котором запущен советник, затем вызывается метод SetExpertMagicNumber(), устанавливающий значение идентификатора эксперта (magic) для объекта m_trade (будет использоваться при проведении торговых операций). После этого при помощи метода Digits() запрашивается количество знаков после запятой у символа, и при необходимости производится корректировка значений уровней.

    Далее вызывается метод SetDeviationInPoints() объекта m_trade, в котором устанавливается величина допустимого проскальзывания при проведении торговых операций.

    Топ лучших площадок для торговли опционами на русском языке:
    • БИНАРИУМ
      БИНАРИУМ

      Лидер среди всех брокеров бинарных опционов! Бесплатное обучение и демо-счет! Идеально для начинающих и средне-опытных трейдеров.
      Получите свой бонус за регистрацию:

    3.5. Метод InitCheckParameters класса CSampleExpert

    В методе InitCheckParameters() производится проверка на корректность входных параметров советника. Если какой-либо параметр имеет недопустимое значение, то выводится соответствующее сообщение, а функция возвращает false.

    3.6. Метод InitIndicators() класса CSampleExpert

    В методе InitIndicators() производится проверка начальных значений переменных m_handle_macd и m_handle_ema (они должны быть равны INVALID_HANDLE, т.к. инициализированы в конструкторе) и создание технических индикаторов MACD и Moving Average (при помощи функций iMACD и iMA). При успешном завершении функция возвращает true, а хендлы индикаторов сохраняются в членах класса m_handle_macd и m_handle_ema.

    Хендлы созданных индикаторов затем будут использованы для проверки количества рассчитанных данных (BarsCalculated) и получения численных значений (CopyBuffer) данных индикаторов в методе Processing().

    3.7. Метод LongClosed() класса CSampleExpert

    Метод LongClosed() возвращает true (и закрывает открытую длинную позицию) при выполнении условий закрытия длинной позиции:

    1. m_macd_current>0 — текущее значение главной линии индикатора MACD положительное (MACD-гистограмма выше нулевой линии);
    2. m_macd_current m_signal_previous — основная линия индикатора MACD пересекла сигнальную сверху вниз.
    3. m_macd_current>m_macd_close_level — текущее значение главной линии индикатора MACD больше m_macd_close_level.

    3.8. Метод ShortClosed() класса CSampleExpert

    Метод ShortClosed() возвращает true (и закрывает открытую короткую позицию) при выполнении условий закрытия короткой позиции:

    1. m_macd_current m_signal_current && m_macd_previous m_macd_close_level — текущее значение главной линии индикатора MACD по модулю больше m_macd_close_level.

    3.9. Метод LongModified() класса CSampleExpert

    Метод LongModified() возвращает true (и изменяет значение параметра Stop Loss позиции) при выполнении условий модификации длинной позиции. Если значение входного параметра InpTrailingStop>0, то производится проверка факта прохождения цены InpTrailingStop пунктов от цены открытия в направлении позиции. Далее производится расчет нового значения уровня Stop Loss и модификация параметра Stop Loss открытой позиции.

    3.10. Метод ShortModified класса CSampleExpert

    Метод ShotModified() возвращает true (и изменяет значение параметра Stop Loss позиции) при выполнении условий модификации короткой позиции. Если значение входного параметра InpTrailingStop>0, то производится проверка факта прохождения цены InpTrailingStop пунктов от цены открытия в направлении позиции. Далее производится расчет нового значения уровня Stop Loss и модификация параметра Stop Loss открытой позиции.

    3.11. Метод LongOpened() класса CSampleExpert

    Метод LongOpened() возвращает true (и открывает длинную позицию) в случае выполнения условий для открытия позиции на покупку:

    При выполнении всех условий производится проверка наличия достаточного количества свободных средств (используется метод FreeMarginCheck() класса CAccountInfo Стандартной библиотеки) и открытие длинной позиции при помощи метода PositionOpen() класса CTrade.

    3.12. Метод ShortOpened класса CSampleExpert

    Метод ShortOpened() возвращает true (и открывает короткую позицию) в случае выполнения условий для открытия позиции на продажу:

    1. m_macd_current>0 — текущее значение главной линии индикатора MACD положительное (MACD-гистограмма выше нулевой линии);
    2. m_macd_current m_signal_previous — основная линия индикатора MACD пересекла сигнальную сверху вниз;
    3. m_macd_current>m_macd_open_level — текущее значение главной линии индикатора MACD больше m_macd_open_level;
    4. m_ema_current

    Рис. 3. Результаты тестирования на исторических данных советника MACD Sample

    Выводы

    Советник MACD Sample, входящий в поставку клиентского терминала MetaTrader 5, представляет собой пример применения объектно-ориентировнного подхода к разработке советников.

    Лучшие платформы для бинарных опционов, дающие бонусы за регистрацию счета:
    • БИНАРИУМ
      БИНАРИУМ

      Лидер среди всех брокеров бинарных опционов! Бесплатное обучение и демо-счет! Идеально для начинающих и средне-опытных трейдеров.
      Получите свой бонус за регистрацию:

    Добавить комментарий