- Основные характеристики индикаторов
- Главное событие индикаторов: OnCalculate
- Два типа индикаторов: для главного и отдельного окна
- Настройка количества буферов и графических построений
- Назначение массива в качестве буфера: SetIndexBuffer
- Настройка графических построений: PlotIndexSetInteger
- Правила сопоставления буферов и диаграмм
- Применение директив для настройки графических построений
- Установка названий для графических построений
- Визуализация пропусков данных (пустых элементов)
- Индикаторы с собственным подокном: размер и уровни
- Общие свойства индикаторов: заголовок и точность значений
- Поэлементное раскрашивание диаграмм
- Пропуск отрисовки на начальных барах
- Ожидание данных и управление видимостью (DRAW_NONE)
- Мультивалютные и мультитаймфреймовые индикаторы
- Отслеживание формирования баров
- Тестирование индикаторов
- Ограничения и преимущества индикаторов
- Создание заготовки индикатора в Мастере MQL
Два типа индикаторов: для главного и отдельного окна
Как известно, индикаторы в MetaTrader 5 способны отображать свои линии в двух местах: в главном окне поверх котировок или в отдельном окне, создаваемой под графиком котировок. Эти два режима являются взаимоисключающими: каждый индикатор проектируется либо для главного окна, либо для отдельного, но не может совместить оба способа.
Для тех случаев, когда от программы требуется визуализация данных и там, и там, существует несколько альтернативных решений. Например, проект можно реализовать в виде двух взаимодействующих индикаторов (техническая сторона взаимодействия остается открытой: это могут быть ресурсы, файлы, СУБД, или разделяемая память, доступная через DLL). Другой подход предполагает использовать индикаторные буфера в одном из окон, например, в нижней панели, а визуализацию на главном графике выполнять с помощью графических объектов.
Напомним, что как в основном окне, так и в нижней панели пользователи могут наносить несколько индикаторов. Если индикатор предназначен для работы в отдельной панели, то его перетаскивание мышью из Навигатора в основное окно приведет к автоматическому созданию новой панели под этот индикатор. Однако если в окне уже существует нижняя панель с другим индикатором, то новый можно перетащить туда же, совместив тем самым два или более индикатора. При этом возможны различные режимы масштабирования индикаторов в одном окне. По умолчанию, построения каждого индикатора масштабируются автоматически и независимо друг от друга на всю высоту панели, но это можно изменить (см. пример SubScaler.mq5 в разделе про события клавиатуры на графиках).
Выбор окна отображения индикатора производится с помощью одной из двух директив компиляции.
#property indicator_chart_window // выводим индикатор в окно графика
|
Разработчик индикатора должен вставить одну из них в начало исходного кода. Если ни одной из директив нет, по умолчанию предполагается вывод в основное окно, но компилятор выдает предупреждение. Мы видели это в предыдущем разделе. Далее в примерах мы будем обязательно указывать #property indicator_chart_window или #property indicator_separate_window.
Второе предупреждение при компиляции IndStub.mq5 касалось отсутствующей настройки буферов и диаграмм. Займемся им в следующем разделе.
Действие выпадающего списка Применить к в настройках индикатора зависит от того, для какого окна он разработан.
Индикатор для отдельного окна можно Применить к индикатору в подокне, но не к индикатору в главном окне.
Однако индикатор для главного окна можно Применить к любому индикатору, как к тому, что в главном окне, так и в подокне.