Продвинутое использование торговой платформы MetaTrader 5. Создание индикаторов и торговых роботов на MQL5 и Python. Издание 3-е, исправленное и дополненное. Тимур Машнин. Читать онлайн. Newlib. NEWLIB.NET

Автор: Тимур Машнин
Издательство: Автор
Серия:
Жанр произведения:
Год издания: 2022
isbn:
Скачать книгу
на основе других индикаторов.

      Функция CopyBuffer распределяет размер принимающего массива под размер копируемых данных.

      Если копируется вся ценовая история, то проблем нет и в этом случае использовать INDICATOR_CALCULATIONS необязательно.

      Если же мы хотим скопировать только одно новое поступившее значение, функция CopyBuffer определит размер принимающего массива как 1, и нужно будет использовать этот принимающий массив как еще один массив-посредник, из которого уже записывать значение в промежуточный массив индикатора. И в этом случае просто функцией ArrayResize для принимающего массива проблему не решить.

      Теперь что нам делать, если мы хотим раскрашивать наши диаграммы индикатора в разные цвета в зависимости от цены?

      Во-первых, мы должны указать, что наша графическая форма нашего графического построения является цветной, например:

      #property indicator_type1 DRAW_COLOR_LINE

      В идентификатор геометрической формы добавляется слово COLOR.

      Далее значение свойства #property indicator_buffers увеличивается на единицу и объявляется еще один массив для хранения цвета.

      Функцией SetIndexBuffer объявленный дополнительный массив сопоставляется с буфером цвета индикатора, например:

      SetIndexBuffer(1,ExtColorsBuffer,INDICATOR_COLOR_INDEX);

      В свойстве #property indicator_color, раскрашиваемого графического построения, указывается несколько цветов, например:

      #property indicator_color1 Red,Green,Blue

      И, наконец, каждому элементу массива, представляющего буфер цвета индикатора, присваивается номер цвета, определенный в свойстве #property indicator_color.

      В данном случае, это 0, 1 и 2.

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

      Вместо свойства #property indicator_color, цвета графического построения можно задать программным способом:

      Задаем количество индексов цветов для графического построения с помощью функции:

      PlotIndexSetInteger(0,PLOT_COLOR_INDEXES,3);

      И задаем цвет для каждого индекса с помощью функции:

      PlotIndexSetInteger(0,PLOT_LINE_COLOR,0,Red);

      Где первый параметр – индекс графического построения, соответственно первое графическое построение имеет индекс 0.

      Это идентично объявлению:

      #property indicator_color1 Red,Green,Blue

      Давайте продолжим рассмотрение свойств индикатора.

      Толщина линии диаграммы индикатора задается свойством 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"

      Другие свойства индикатора можно посмотреть в справочнике.

      Правда можно отметить еще одну группу