- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Язык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5. Издание 2-е, исправленное и дополненное - Тимур Машнин
Шрифт:
Интервал:
Закладка:
Задаем количество индексов цветов для графического построения с помощью функции:
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);
изменена метка индикатора в окне Окно Данных, которое открывается в меню Вид терминала.
Значения же свойств:
#property indicator_label2 "+DI»
#property indicator_label3 "-DI»
отображаются, как и было определено, во всплывающих подсказках к диаграммам индикатора и отображаются в окне Окно Данных.
В коде индикатора ADX объявленное количество буферов индикатора больше, чем количество графических построений.
Свойство indicator_buffers равно 6
А свойство indicator_plots равно 3
Сделано это для того, чтобы использовать три буфера индикатора для промежуточных расчетов.
Это массивы ExtPDBuffer, ExtNDBuffer и ExtTmpBuffer.
В функции OnCalculate индикатора, значения массивов ExtPDBuffer, ExtNDBuffer, ExtTmpBuffer рассчитываются на основе загруженной ценовой истории, а затем уже на их основе рассчитываются значения массивов ExtADXBuffer, ExtPDIBuffer, ExtNDIBuffer, которые используются для отрисовки диаграмм индикатора.
Как уже было сказано, буферы индикатора для промежуточных вычислений здесь объявляются с константой INDICATOR_CALCULATIONS, так как заранее неизвестен размер загружаемой ценовой истории.
Теперь, в описании индикатора ADX сказано, что:
Сигнал на покупку формируется тогда, когда +DI поднимается выше — DI и при этом сам ADX растет.
В момент, когда +DI расположен выше — DI, но сам ADX начинает снижаться, индикатор подает сигнал о том, что рынок «перегрет» и пришло время фиксировать прибыль.
Сигнал на продажу формируется тогда, когда +DI опускается ниже — DI и при этом ADX растет.
В момент, когда +DI расположен ниже — DI, но сам ADX начинает снижаться, индикатор подает сигнал о том, что рынок «перегрет» и пришло время фиксировать прибыль.
Давайте, модифицируем код индикатора ADX таким образом, чтобы раскрасить диаграмму ADX в четыре цвета, которые соответствуют описанным выше четырем торговым сигналам.
В качестве первого шага изменим свойство indicator_type1 на DRAW_COLOR_LINE.
Далее увеличим на единицу значение свойства indicator_buffers на значение 7.
Объявим массив для буфера цвета ExtColorsBuffer.
И в функции OnInit () свяжем объявленный массив с буфером цвета с помощью функции SetIndexBuffer.
Тут есть хитрость — индекс буфера цвета должен следовать за индексом буфера значений индикатора.
Если, например, связать массив ExtColorsBuffer с буфером с индексом 6, тогда индикатор не будет корректно отрисовываться.
В свойство indicator_color1 добавим цветов.
И увеличим толщину линии с помощью свойства indicator_width1.
В функции OnCalculate в конце перед закрывающей скобкой цикла for добавим код заполнения буфера цвета значениями согласно описанной нами стратегии.
Откомпилируем код и получим индикатор с визуальным отображением сигналов на покупку и продажу:
В редакторе MQL5 откроем другой индикатор из папки Examples — RSI.
Данный индикатор имеет два ключевых уровня, которые определяют области перекупленности и перепроданности.
В коде индикатора эти уровни определены как свойства:
#property indicator_level1 30
#property indicator_level2 70
Давайте улучшим отображение этих уровней, добавив им цвета и стиля.
Для этого добавим свойства:
#property indicator_levelcolor Red
#property indicator_levelstyle STYLE_SOLID
#property indicator_levelwidth 1
Теперь индикатор будет выглядеть следующим образом.
Параметры ввода и переменные индикатора
Параметры ввода это те параметры индикатора, которые отображаются пользователю перед присоединением индикатора к графику во вкладке Входные параметры диалогового окна.
Например, для индикатора MACD — это периоды скользящих средних и тип применяемой цены.
Здесь пользователь может поменять параметры индикатора по умолчанию, и индикатор присоединится к графику с уже измененными параметрами.
Также пользователь может поменять параметры индикатора после присоединения индикатора к графику, щелкнув правой кнопкой мышки на индикаторе и выбрав свойства индикатора.
В коде индикатора такие параметры задаются input переменными с модификатором input, который указывается перед типом данных. Как правило, input переменные объявляются сразу после свойств индикатора.
Например, для индикатора MACD — это периоды для
экспоненциальной скользящей средней с коротким периодом от цены, экспоненциальной скользящей средней с длинным
