MACD

icon_macd

Добрый день, уважаемые подписчики ресурса 4exlab.ru . Сегодня за тему поста решили взять написание индикатора MACD. Этот индикатор очень распространен среди трейдеров, так как обладает достаточной точностью в определении настроения рынка. Как и у любого индикатора у MACD имеются не только плюсы, но сейчас это не играет большой роли. Главное в этом уроке –научиться писать индикатор MACD и знать, как устроен этот индикатор.

Торговый метод схождения – расхождения скользящих средних (MACD — moving average convergence divergence)

Данный индикатор имеется в вашем торговом терминале MetaTrader, но исходника на .ex4 в терминале нет, и это не из-за того, что разработчики не положили его туда специально. А это из-за того, чтобы сам трейдер не вносил изменения во все советники, индикаторы и скрипты имеющиеся в торговом терминале по-умолчанию. Исходники же лежат в открытом доступе в интернете.

И так для того, чтобы научиться программировать на языке MQL4 нам по-прежнему понадобится компьютер, интернет, большое желание научиться и, конечно же, упорство. И так, поехали.

Индикатор (MACD – moving average convergence divergence), как было упомянуто ранее, используется многими трейдерами на рынке форекс. Этот индикатор помещается в отдельном окне на графике валютной пары. В этом окне имеется гистограмма, расположенная на реперной линии. Помимо всего в отдельном окне располагается и сигнальная moving average, которая и дает трейдеру сигналы для покупки/продажи валюты.

indicator macd

Обратите внимание на информацию, расположенную в верхнем левом углу. Многим трейдерам она вообще не понятна и поэтому считают эту информацию лишней, потому что она «засоряет» и без того сложный график… Конечно же, такие трейдеры сольют свой счет. Дело состоит в том, что ничего лишнего здесь нет. Все эти цифры – это параметры MACD, просто нужно научиться пользоваться подобной информацией. А суть её заключается в том, что MACD – это название индикатора. Цифры, расположенные в скобках (12,26,9) – это средние moving average, которые использует MACD. Первые две цифры 12,26 – это два периода moving average быстрая и медленная (в этом случае это стандартные и рекомендуемые moving average), на основе которых получают гистограмму. Формула для вычисления гистограммы

ExtMapBuffer1[i]=iMA[FastEMA]-iMA[SlowEMA]; /* Воспользуемся ею в будущем*/

Эта формула «говорит», что из более быстрой moving average мы вычитаем более медленную moving average, а затем полученное значение отображаем в отдельном окне виде гистограммы. Для уменьшения недостатков скользящих средних полученную гистограмму экспоненциально сглаживают.


Последняя цифра, присутствующая в скобках – это сигнальная линия индикатора MACD. Она просто отображается в отдельном графике наряду с гистограммой (SignalSMA). Это такая же moving average, как и предыдущие линии прописанные в этих скобках.

Теперь Вы понимаете что такое (12,26,9). Зайдите в свойства MACD и поиграйте с этими значениями. Если Вы будете изменять первые два значения, то вы увидите, как меняется сама гистограмма. А если вы поменяете последнее значение, то будет меняться только сигнальная линия (SignalSMA). Помните, что, если Вы измените настройки MACD, то и сигналы на покупку/продажу будут совершенно разные!!! Поэтому для MACD нужно применять оптимизированные настройки.

В верхнем левом углу также расположены другие «непонятные» для многих трейдеров цены. У всех они разные, но в нашем случае это -0,015341 -0,018178 . Это и есть значения moving average. Первое значение прописывается, как Вы уже поняли, для гистограммы, второе – для сигнальной moving average. Проверить это легко. Наведите перекрестие на не сформировавшиеся нулевой бар рядом с вершинкой гистограммы и второйана раз на сигнальной moving average и вы получите эти значения. Это очень информативно, вам необходимо знать какая разница между гистограммой и сигнальной линией, особенно, когда отдельное окно масштабируется в автоматическом режиме. Масштаб в автоматическом режиме в отдельном окне настроен практически у всех индикаторов, а зря!!! Потому как торговля должна осуществляться именно по точным и скоординированным пределам, которые должны быть–таки оптимизированными, в противном случае, в настоящем и долгом флете, Вы будете получать масштабированную информацию, которая будет выглядеть как тренд! Запомните это! Иначе слив депозита Вам обеспечен…

Вроде с описанием MACD мы разобрались. Теперь мы знаем, откуда берется гистограмма moving average и сигнальная линия. (О том, как пользоваться MACD, можно почитать в этой статье).

Теперь разберемся с самим написанием индикатора MACD. Внешние параметры индикатора MACD – это его линии moving average. Их нам и нужно указать в «Мастере создания советника». Опишем их как FastEMA, SlowEMA, SignalSMA. У всех значений выставим тип int, так как данные будут представлены целыми числами скользящих средних moving average.

master_macd

Теперь в следующем окне выставляем параметры отображения пользовательского индикатора. Не забудьте поставить галочку в первой строке «Индикатор в отдельном окне». Еще обязательно нужно отметить две линии красного и серого цвета. Именно в таких цветах мы будем видеть сигнальную линию и гистограмму.

cveta_macd

Нажимаем «Готово». Теперь мы можем непосредственно перейти к написанию самого индикатора. Вспоминаем из предыдущих уроков, что сначала необходимо проинициализировать переменные, поэтому будем работать со специальной функцией int init(), в которой пропишем

Данную строку можно писать по желанию. С моим Дилинговым Центром она не очень и нужна, так как после десятичной точки у меня идет 5 знаков (что считается приемлемой точностью). Строка в коде выше добавляет еще один знак, всего то на всего…

Функции, написанные выше, мы уже упоминали при создании индикатора Alligator . Поясним лишь, что эти функции отвечают за связывание переменной-массива, с буфером пользовательского индикатора.

Аналогичны и приведенные выше строчки. Они показывают конкретные значения баров в отдельном окне «-0,015341 -0,018178». Если они Вам так не нужны поставьте вместо значений «MACD» – NULL, ,»Signal» – NULL и значение вообще не будут отображаться. Или удалите эти две строчки, тогда значения подставятся по умолчанию. Индикатор все равно будет работать.


Со специальной функией int init() мы разобрались. Теперь переходим в другую специальную функцию int start(), в которой будут происходить все вычисления и отображаться индикатором в виде линии и гистограммы. Используем следующий блок кода для оптимизации вычислений, так как сформировавшиеся бары нет необходимости пересчитывать при новых тиках.

Этим блоком кода мы экономим ресурсы компьютера. Это важно!

Следующий этап –это непосредственное заполнение самого буфера данными

На этом можно заканчивать работу со специальной функцией int start(). Теперь остается специальная функция int deinit() которую мы просто удаляем. Она нам и не понадобится. Но для приличия её можно просто оставить, она не несет в себе каких-либо важных моментов.

Тогда получается, что дописывать больше особо ничего не нужно и можно уже опробовать наш индикатор. Для этого скомпилируем клавишей F5 наш индикатор и откроем торговый терминал MetaTrader. Если при компиляции у Вас не возникло никаких ошибок, то можно переходить к непосредственной пробе индикатора, если при компиляции возникли ошибки, то Вам следует пересмотреть код, исправить ошибки и скомпилировать исходный код заново.

Теперь присоединим этот индикатор к любому графику. В отдельном нижнем окне появится долгожданный MACD. Поздравляю, Вы только что написали индикатор на языке MQL4 самостоятельно.


Теперь Вы больше знаете про индикатор MACD, как он устроен изнутри и можете начать писать свои индикаторы на основе полученных знаний. Помните, что индикаторов очень много, но действительно хороших — как капли воды в пустыне. Также хорошим индикатором можно назвать только тот индикатор, алгоритм которой Вы знаете! Профита Вам!

Скачать MACD

13.11.2010 · Группа авторов · Комментариев нет
Метки: , , , , , ,  · Рубрика: MetaEditor

Комментировать