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

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

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



Аналогичная ситуация возникает, когда значения таких промежуточных массивов заполняются с помощью функции CopyBuffer, когда мы строим пользовательский индикатор на основе других индикаторов.

Функция 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"



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

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



#property indicator_level1 30.0

#property indicator_levelcolor Red

#property indicator_levelstyle STYLE_SOLID

#property indicator_levelwidth 2

В результате добавления этих строк кода в индикатор ADX, у него появится горизонтальный уровень.



Теперь, на примере индикатора ADX, при присоединении индикатора к графику в MetaTrader 5, во-первых, откроется диалоговое окно индикатора, которое во вкладке Общие отобразит значения свойств copyright, link и description.



А во вкладке Цвета отобразятся значения свойств indicator_label, indicator_color, indicator_width, indicator_style.

Само же название индикатора определяется именем файла индикатора.

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



При наведении курсора на название индикатора в окне Navigator терминала всплывает подсказка, отображающая свойство copyright.



После присоединения индикатора свойство:

#property indicator_label1 "ADX"

работать не будет, так как в функции OnInit с помощью вызова функции:

string short_name="ADX("+string(ExtADXPeriod)+")";

IndicatorSetString(INDICATOR_SHORTNAME,short_name);

изменена подпись индикатора на ADX(14) – период индикатора.



А вызовом функции:

PlotIndexSetString(0,PLOT_LABEL,short_name);

изменена метка индикатора в окне Окно Данных, которое открывается в меню Вид терминала.

Перейти на страницу:

Похожие книги

1С:Предприятие. Зарплата и кадры. Секреты работы
1С:Предприятие. Зарплата и кадры. Секреты работы

Книга посвящена ведению автоматизированного учета заработной платы на предприятиях, в организациях и учреждениях в программе "1С: Предприятие. Зарплата и Кадры". Излагаются принципы работы системы с учетом всех нормативных требований. Представлены сведения об автоматизированном формировании бухгалтерских проводок и аналитических отчетов широкого спектра, ведении первичной документации и многое другое. Обсуждаются схемы движения документов во всех разделах учета заработной платы, аспекты налогового учета и особенности ведения персонифицированного учета в новом плане счетов. Изложение материала сопровождается практическими примерами, позволяющими быстрее понять и усвоить приемы и методы работы с системой "1С: Предприятие". Рассматриваются ошибки и сложности, которые могут возникнуть при работе с программой. Книга открывает широкие возможности для дальнейшего самостоятельного изучения данной темы.Для менеджеров, бухгалтеров и операторов, не имеющих опыта работы с системой "1С: Предприятие"

Дмитрий Николаевич Рязанцев , Наталья Александровна Рязанцева

Финансы / Личные финансы / Финансы и бизнес
Дорога в лето (ЛП)
Дорога в лето (ЛП)

Расставшись с парнем, который приносил одни неприятности, Рейган О'Нил готова оставить всё плохое позади. Как и её лучшая подруга, суперзвезда кантри-музыки Лайла Монтгомери — она тоже залечивает своё разбитое сердце.  К счастью, Лайла вот-вот отправится в тур по двадцати четырём городам, и девушки смогут провести всё лето, исполняя баллады о несчастной любви и залечивая свои сердца. Но когда в качестве «разогрева» к турне присоединяется Мэт Финч, Рейган становится трудно сопротивляться его очарованию «соседского мальчишки». Даже несмотря на то, что она пообещала себе жить без драм.  Этим летом дружба Лайлы и Рейган пройдёт испытание славой, а сами девушки поймут простую истину — игра стоит свеч, если отдать своё сердце правильному человеку.

Автор Неизвестeн

Личные финансы / Ценные бумаги, инвестиции / Зарубежная деловая литература