Читаем Язык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5. Издание 2-е, исправленное и дополненное полностью

Функция ArraySetAsSeries меняет лишь программный доступ к элементам массива — от последнего элемента массива к первому элементу массива.

В функции OnInit () также может осуществляться проверка входных параметров на корректность, так как пользователь может ввести все, что угодно.

При этом значение входного параметра переназначается с помощью глобальной переменной, и далее в расчетах используется уже значение глобальной переменной.

Например, для индикатора ADX это выглядит так:



здесь ExtADXPeriod — глобальная переменная, а InpPeriodADX — входной параметр.

При использовании хэндлов индикатора, можно указывать символ (финансовый инструмент) для которого индикатор будет создаваться.

При этом такой символ может определяться пользователем.

В функции OnInit () также полезно проверить этот входной параметр на корректность.



Например, в коде индикатора MACD пусть определен входной параметр:

input string symbol=«»;

Объявим глобальную переменную:

string name=symbol;

И в функции OnInit () произведем проверку — удалим пробелы слева и справа с помощью функции StringTrimRight, и если после этого длина строки name нулевая, возьмем символ с графика, на котором запущен индикатор.



Программная установка свойств индикатора осуществляется с помощью функций IndicatorSetDouble, IndicatorSetInteger, IndicatorSetString, PlotIndexSetDouble, PlotIndexSetInteger, PlotIndexSetString.



Функция IndicatorSetDouble позволяет программным способом определять такие свойства индикатора как indicator_minimum, indicator_maximum и indicator_levelN, например:

IndicatorSetDouble (INDICATOR_LEVELVALUE, 0, 50)

является аналогом:

property indicator_level1 50



Функция IndicatorSetInteger позволяет программным способом определять такие свойства индикатора как indicator_height, indicator_levelcolor, indicator_levelwidth, indicator_levelstyle.

При этом для уровней необходимо определить их количество, используя функцию IndicatorSetInteger. Например, для индикатора RSI это выглядит следующим образом.



Свойства индикатора, связанные с уровнями, заменяем на код, используя функцию IndicatorSetInteger.

Функция IndicatorSetInteger также позволяет определить точность индикатора, например:

IndicatorSetInteger (INDICATOR_DIGITS,2);

В результате будут отображаться только два знака после запятой значения индикатора.

Для функции IndicatorSetString нет соответствующих ей свойств индикатора property.



С помощью функции IndicatorSetString можно определить короткое наименование индикатора, например для индикатора MACD:



Это выглядит следующим образом.

И соответственно имя индикатора будет отображаться в окне индикатора как:

MACD (12, 26, 9)

Кроме того, функция IndicatorSetString позволяет установить подписи к уровням индикатора, например для индикатора RSI:



Можно отобразить подписи к уровням Oversold и Overbought.



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

Диаграмма индикатора рисуется от одного непустого значения до другого непустого значения индикаторного буфера, пустые значения пропускаются. Чтобы указать, какое значение следует считать «пустым», необходимо определить это значение в свойстве PLOT_EMPTY_VALUE. Например, если индикатор должен рисоваться по ненулевым значениям, то нужно задать нулевое значение в качестве пустого значения буфера индикатора:

PlotIndexSetDouble (индекс_построения, PLOT_EMPTY_VALUE,0);



Функция PlotIndexSetInteger позволяет программным способом, динамически, задавать такие свойства диаграммы индикатора, как код стрелки для стиля DRAW_ARROW, смещение стрелок по вертикали для стиля DRAW_ARROW, количество начальных баров без отрисовки и значений в Окне Данных, тип графического построения, признак отображения значений построения в Окне Данных, сдвиг графического построения индикатора по оси времени в барах, стиль линии отрисовки, толщина линии отрисовки, количество цветов, индекс буфера, содержащего цвет отрисовки.

Давайте разберем каждое из этих свойств по порядку на примере индикатора Custom Moving Average.



Изменим свойство indicator_type1 индикатора Custom Moving Average:

#property indicator_type1 DRAW_ARROW

В функции OnInit () добавим вызов функции PlotIndexSetInteger, определяя различный код стрелки для стиля DRAW_ARROW:

PlotIndexSetInteger (0,PLOT_ARROW,2);

В результате получим соответствующий вид стрелки.



Со значением 3 свойства PLOT_ARROW получим другую стрелку.

И так далее, меняя значение свойства, мы будет видеть разные стрелки.



В функции OnInit () добавим вызов функции PlotIndexSetInteger, определяя смещение стрелок по вертикали для стиля DRAW_ARROW:

PlotIndexSetInteger (0,PLOT_ARROW_SHIFT,100);

В результате диаграмма индикатора сдвинулась вниз.



В индикаторе Custom Moving Average для определения количества начальных баров без отрисовки используется вызов функции PlotIndexSetInteger:

PlotIndexSetInteger (0,PLOT_DRAW_BEGIN, InpMAPeriod);

где InpMAPeriod — период скользящей средней.



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

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

Самоучитель UML
Самоучитель UML

Самоучитель UMLПервое издание.В книге рассматриваются основы UML – унифицированного языка моделирования для описания, визуализации и документирования объектно-ориентированных систем и бизнес-процессов в ходе разработки программных приложений. Подробно описываются базовые понятия UML, необходимые для построения объектно-ориентированной модели системы с использованием графической нотации. Изложение сопровождается примерами разработки отдельных диаграмм, которые необходимы для представления информационной модели системы. Цель книги – помочь программистам освоить новую методологию разработки корпоративных программных приложений для последующего применения полученных знаний с использованием соответствующих CASE-инструментов.

Александр Васильевич Леоненков , Александр Леоненков

Зарубежная компьютерная, околокомпьютерная литература / Программирование / Прочая компьютерная литература / Книги по IT
Компьютер для тех, кому за…
Компьютер для тех, кому за…

В наш век высоких технологий без компьютера не обходится практически ни один человек. Но что делать, если вам уже за…, а компьютер вы так и не освоили? Не стоит отчаиваться! Эта книга была написана специально для тех, кто по каким-то причинам не смог освоить его раньше. Легким и доступным языком в книге изложены основные принципы работы на компьютере. Вы узнаете, как создать документ в текстовом редакторе, выстроить таблицы и диаграммы в экселе, освоите графический редактор, который позволит вам рисовать и редактировать фото и рисунки, научитесь самостоятельно подключать принтер и печать, общаться с родными и друзьями по скайпу и ICQ, узнаете, какие бывают игры, как выбрать игру для себя, и многое-многое другое.Никогда не поздно осваивать что-то новое! А уж тем более — компьютер. Он откроет вам целый мир безграничных возможностей. Не упустите свой шанс узнать что-то новое и интересное — дайте компьютеру прочно войти в вашу жизнь. Ведь пользоваться им так же просто, как и обычным телефоном, только в тысячу раз интереснее!

Оксана Грибова

Зарубежная компьютерная, околокомпьютерная литература / Интернет / Программное обеспечение / Прочая компьютерная литература / Книги по IT
Omert@. Руководство по компьютерной безопасности и защите информации для Больших Боссов
Omert@. Руководство по компьютерной безопасности и защите информации для Больших Боссов

Увы, друг мой, защита твоей информации - или хотя бы четкое понимание того, что это такое и как подобная защита должна строиться - это Твое Личное Дело! Не Cosa Nostra (хотя твои проблемы могут стать и Нашим Делом тоже), а Cosa Roba - Твое Дело!  Я знаю, что ты солидный человек, который привык платить, чтобы за него решали проблемы. Однако есть проблемы, которые за тебя никто не решит, - даже за очень большие деньги. Например, заниматься любовью со своей женой должен ты сам. Но кто тебе сказал, что защита твоей информации - это менее интимное дело, и его можно поручить постороннему?  Первая книга по безопасности для Менеджеров, а не для ботаников-компьютерщиков, информации от широко неизвестного благодаря своей репутации эксперта международного класса. Только благодаря ей Большой Босс сможет понять, каким образом он сможет чувствовать себя хотя бы в относительной безопасности!  Ты должен сам знать, что такое безопасность информации! Ни один нанятый специалист не решит это за тебя!  Если ты нанимаешь студента-компьютерщика за двести баксов в месяц и совершенно серьезно считаешь его специалистом по информационной безопасности, - не понятно, как ты вообще смог стать менеджером подобного уровня.

Алекс Экслер , Карл Шкафиц

Зарубежная компьютерная, околокомпьютерная литература / Прочая компьютерная литература / Книги по IT