Roc индикатор

roc индикаторЗдравствуйте, уважаемые читатели форекс блога 4exlab.ru . Сегодня пришла очередь окунуться в программирование на языке MQL, поэтому было решено написать пост про индикатор на языке MQL.

Перебрав несколько пользовательских индикаторов, внимание остановилось на индикаторе Roc (The Rate of Cange).

Этот индикатор, как один из самых простых, но в то же время очень эффективных осцилляторов, который отображает скорость изменения цены от периодов.

Вычисляется этот индикатор по формуле:

ROC = (MA1-MA2)/MA2 ;

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


Если перекинуть этот индикатор в папку торгового терминала, затем запустить терминал MetaTrader и прикрепить индикатор к любому графику, то мы увидим, что к графику добавилось отдельное окно снизу, а сам индикатор представляет из себя только одну желтую линию, которая показывает скорость изменения цены.

Roc цена

Теперь постараемся написать этот индикатор, тем более слово «постараемся» здесь не очень уместно, потому что стараться почти не придется, так как этот индикатор я считаю довольно легким в написании, и чем-то напоминающим объединение других индикаторов, описанных на примерах в предыдущих уроках по языку программирования MQL.

Откроем MQL редактор и зайдем в «мастер создания советников». Выберем из предложенного списка, пользовательский индикатор. Не будем долго останавливаться на мастере создания советников, укажу вам, лишь то, что в нем мы обязательно пропишем, что данный индикатор будет представлять из себя желтую линию, прорисованную в отдельном окне. Так как в прошлых статьях я Вам это уже объяснял, то думаю, у Вас этот этап написания советника не вызовет трудностей.

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

Первым в коде индикатора будут базовые параметры индикатора.

глобальные параметры индикатора

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

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

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


Отличить необходимость в этой функции очень просто: если наша программа выполняет одну команду циклично (в один цикл), то специальную функцию для выхода из программы мы можем не ставить. Вы, наверное, уже догадались, что речь идет именно о скриптах. Именно они подходят под данное описание. Поэтому в скриптах упоминание специальной функции int deinit() вовсе не обязательно. Это вам для будущего.

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

Следующим этапом написания нашего советника будет основная часть – непосредственно, написание самого кода, в котором будет заключено вычисление по формулам линии Roc.

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

На этом этапе мы можем считать наш написанный советник почти готовым; мы указали все необходимые специальные функции:

int init() – инициализация данных,

int start() – основная часть программы, где происходят все вычисления,

int deinit() – завершение работы индикатора;

Мы указали эти специальные функции в немножко другом порядке, но, поверьте, для редактора MetaEditor, будет считывать все в нужном порядке, так что последовательность таких функций особого смысла не несет.

Теперь нам необходимо проверить индикатор на наличие ошибок – скомпилируем его, нажав кнопку F5 или кнопку «Компилировать». Если у вас код написан без ошибок, то создастся файл с расширением .4ex, который и будет выполняться в торговом терминале. Если ошибка найдена, то вам придется искать её самостоятельно. Здесь я Вам ничем помочь не смогу.

Теперь Вам необходимо открыть торговый терминал MetaEditor и прикрепить к любому инструменту наш только что написанный индикатор Roc .4ex. В итоге мы получи ту же самую картину, которую видели в самом начале, когда анализировали индикатор и решали, какие параметры нам понадобятся для написания индикатора скорости изменения цены Roc.

roc индикатор

Сейчас можно уже сказать, что индикатор написан и отображается в терминале. Этот индикатор хоть и отличается своей простотой, но его написание является хорошей тренировкой при написании более сложных индикаторов. Здесь самое главное – это работа с клавиатурой. Как и в любом программировании, здесь необходимо чтобы пальцы сами «знали» что необходимо писать, а глаза сразу же фиксировали допущенные ошибки. Если у вас что-то не получилось – не отчаивайтесь. Могу Вам посоветовать больше тренироваться – у Вас все получится. Профита Вам!

Скачать индикатор Roc.mq4

09.12.2010 · Группа авторов · комментария 2
Метки: , , , , , ,  · Рубрика: Индикаторы

комментария 2

  1. александр - 29.03.2011

    у меня не отображаются картинки, поправьте пожалуйста

  2. Группа авторов - 30.03.2011

    все исправлено

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