Вход/Регистрация
Язык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5
вернуться

Машнин Тимур Сергеевич

Шрифт:

PlotIndexSetInteger (0, PLOT_LINE_WIDTH, 2);

Программным способом задать свойство индикатора indicator_colorN позволяет вызов функции PlotIndexSetInteger с идентификаторами PLOT_COLOR_INDEXES и PLOT_LINE_COLOR, например:

#property indicator_color1 clrGreen, clrRed

Или

PlotIndexSetInteger (0,PLOT_COLOR_INDEXES,2);

PlotIndexSetInteger (0,PLOT_LINE_COLOR,0,clrGreen);

PlotIndexSetInteger (0,PLOT_LINE_COLOR,1,clrRed);

Функция PlotIndexSetString позволяет программным способом задать свойство индикатора indicator_labelN. Например, для индикатора MACD это будет выглядеть следующим образом:

#property indicator_label1 «MACD»

#property indicator_label2 «Signal»

Или

PlotIndexSetString (0, PLOT_LABEL, «MACD»);

PlotIndexSetString (1, PLOT_LABEL, «Signal»);

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

Функция OnDeinit 

Процитируем справочник:

Событие Deinit генерируется для экспертов и индикаторов в следующих случаях:

– перед переинициализацией в связи со сменой символа или периода графика, к которому прикреплена mql5-программа;

– перед переинициализацией в связи со сменой входных параметров;

– перед выгрузкой mql5-программы.

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

Под освобождением занимаемых ресурсов для индикатора подразумевается очищение графика символа от дополнительных графических объектов.

То есть помимо диаграммы индикатора, мы можем присоединять к графику символа различные объекты – линии, графические фигуры треугольник, прямоугольник и эллипс, знаки, подписи и др. Об этом мы поговорим позже.

Соответственно при деинициализации индикатора было бы неплохо все это убрать с графика символа.

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

void Comment (

argument, // первое значение

…// последующие значения

);

Для очистки от комментариев используются пустые комментарии:

Comment (»»);

Далее используется функция ObjectDelete, которая удаляет объект с указанным именем с указанного графика:

bool ObjectDelete (

long chart_id, // chart identifier

string name // object name

);

Позже мы продемонстрируем применение этих функций.

Функция OnCalculate 

Функция OnCalculate вызывается клиентским терминалом при поступлении нового тика по символу, для которого рассчитывается индикатор.

Хотя функция OnCalculate имеет два вида – для индикатора, который может быть рассчитан на основе только одной из ценовых таймсерий:

int OnCalculate (const int rates_total, // размер массива price []

const int prev_calculated, // обработано баров на предыдущем вызове

const int begin, // откуда начинаются значимые данные

const double& price [] // массив для расчета

);

и для индикатора, который рассчитывается с использованием нескольких ценовых таймсерий:

int OnCalculate (const int rates_total, // размер входных таймсерий

const int prev_calculated, // обработано баров на предыдущем вызове

const datetime& time [], // Time

const double& open [], // Open

const double& high [], // High

const double& low [], // Low

const double& close [], // Close

const long& tick_volume [], // Tick Volume

const long& volume [], // Real Volume

const int& spread [] // Spread

);

Здесь мы будем пользоваться полной версией функции OnCalculate как наиболее гибкой и предоставляющей наибольшие возможности.

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

Продемонстрируем это на примере индикатора MACD и индикатора Custom Moving Average, который использует как раз усеченную функцию OnCalculate .

  • Читать дальше
  • 1
  • ...
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • ...

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

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: