Пользовательские индикаторы
© 2000-2011, MetaQuotes Software Corp.
721
Все цветовые версии стилей отличаются от базовых тем, что позволяют задавать цвет для каждой
части графического построения. Минимальной частью построения является бар, поэтому можно
сказать, что цветовые версии позволяют задавать цвет построения на каждом баре.
Для того, чтобы задавать цвет построения на каждом баре, в цветовые версии стилей был
добавлен дополнительный специальный буфер для хранения индекса цвета. Эти индексы
указывают на номер цвета в специальном массиве, содержащем заранее определенный набор
цветов. Размер массива цветов – 64. Это означает, что каждая цветовая версия стиля позволяет
раскрасить графическое построение 64-мя различными цвета.
Набор и количество цветов в специальном массиве цветов можно задавать директивой
компилятора #property indicator_color, где через запятую указываются все необходимые цвета.
Например, такая запись в индикаторе:
//--- зададим 8 цветов для раскраски свечей (они хранятся в специальном массиве)
#property indicator_color1 clrRed,clrBlue,clrGreen,clrYellow,clrMagenta,clrCyan,clrLime,clrOrange
Здесь указано, что для графического построения номер 1 заданы 8 цветов, которые будут
помещены в специальный массив. Далее в программе мы будем указывать не сам цвет, которым
будет отображаться графическое построение, а только его индекс. Если мы хотим задать для
бара красный цвет, то для этого необходимо установить в цветовом буфере индекс красного
цвета из массива. Красный цвет задан в директиве первым первым, ему соответствует индекс
номер 0.
//--- зададим цвет свечи clrRed
col_buffer[buffer_index]=0;
Набор цветов для раскрашивания не является раз и навсегда заданным, его можно менять
динамически с помощью функции PlotIndexSetInteger(). Пример:
//--- установим цвет для каждого индекса как свойство PLOT_LINE_COLOR
PlotIndexSetInteger(0, // номер графического стиля
PLOT_LINE_COLOR, // идентификатор свойства
plot_color_ind, // индекс цвета, куда запишем цвет
color_array[i]); // новый цвет
Свойства индикатора и графических построений
Для графических построений свойства можно устанавливать как с помощью директив
компилятора, так и с помощью соответствующих функций. Подробней об этом написано в разделе
Связь между свойствами индикатора и функциями. Динамическое изменение свойств индикатора
с помощью функций позволяет создавать более гибкие пользовательские индикаторы.
Начало отрисовки индикатора на графике
Во многих случаях по условиям алгоритма расчет значений индикатора невозможно начать сразу
же с текущего бара, требуется обеспечить минимальное количество предыдущих доступных баров
в истории. Например, многие виды сглаживания подразумевают, что берется массив цен за
предыдущие N баров, и на основании этих значений рассчитывается значение индикатора для