Язык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5. Тимур Машнин
Читать онлайн книгу.Язык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5 - Тимур Машнин
копируется вся ценовая история, то проблем нет и в этом случае использовать INDICATOR_CALCULATIONS необязательно.
Если же мы хотим скопировать только одно новое поступившее значение, функция CopyBuffer определит размер принимающего массива как 1, и нужно будет использовать этот принимающий массив как еще один массив-посредник, из которого уже записывать значение в промежуточный массив индикатора. И в этом случае просто функцией ArrayResize для принимающего массива проблему не решить.
Теперь что нам делать, если мы хотим раскрашивать наши диаграммы индикатора в разные цвета в зависимости от цены?
Во-первых, мы должны указать, что наша графическая форма нашего графического построения является цветной, например:
#property indicator_type1 DRAW_COLOR_LINE
В идентификатор геометрической формы добавляется слово COLOR.
Далее значение свойства #property indicator_buffers увеличивается на единицу и объявляется еще один массив для хранения цвета.
Функцией SetIndexBuffer объявленный дополнительный массив сопоставляется с буфером цвета индикатора, например:
SetIndexBuffer (4,ExtColorsBuffer, INDICATOR_COLOR_INDEX);
В свойстве #property indicator_color, раскрашиваемого графического построения, указывается несколько цветов, например:
#property indicator_color1 Green, Red
И, наконец, каждому элементу массива, представляющего буфер цвета индикатора, присваивается номер цвета, определенный в свойстве #property indicator_color.
В данном случае, это 0.0 и 1.0.
Теперь при отрисовке диаграммы индикатора, из буфера берется значение диаграммы, по позиции значения оно сопоставляется со значением буфера цвета, и элемент диаграммы становится цветным.
Вместо свойства #property indicator_color, цвета графического построения можно задать программным способом:
//Задаем количество индексов цветов для графического построения
PlotIndexSetInteger (0,PLOT_COLOR_INDEXES,2);
//Задаем цвет для каждого индекса
PlotIndexSetInteger (0,PLOT_LINE_COLOR,0,Blue); //Нулевой индекс цвета – синий цвет
PlotIndexSetInteger (0,PLOT_LINE_COLOR,1,Orange); //Первый индекс цвета – оранжевый цвет
Где первый параметр – индекс графического построения, соответственно первое графическое построение имеет индекс 0.
Это идентично объявлению:
#property indicator_color1 Blue, Orange
Двинемся дальше по свойствам индикатора.
Толщина линии диаграммы индикатора задается свойством indicator_widthN, где N – номер графического построения, например:
#property indicator_width1 1
Также можно задать стиль линии диаграммы индикатора – сплошная линия, прерывистая, пунктирная, штрих-пунктирная, штрих – с помощью свойства indicator_styleN, где N – номер графического построения, например:
#property indicator_style1 STYLE_SOLID
И, наконец, свойство indicator_labelN указывает метки диаграмм индикатора в DataWindow или Окно данных, например:
#property indicator_label1 «ADX»
#property indicator_label2 "+DI»
#property indicator_label3 "-DI»
Другие свойства можно посмотреть в справочнике.
Правда можно отметить еще одну группу свойств, которая позволяет нарисовать горизонтальный уровень индикатора в отдельном окне, например:
#property indicator_level1 0.0
#property indicator_levelcolor Red
#property