- Функции для получения основных свойств текущего графика
- Идентификация графиков
- Получение списка графиков
- Получение символа и таймфрейма произвольного графика
- Обзор функций для работы с полным набором свойств
- Описательные свойства графика
- Проверка состояния основного окна
- Получение количества и признака видимости окон/подокон
- Режимы отображения графика
- Управление видимостью элементов графика
- Отступы по горизонтали
- Горизонтальный масштаб (по времени)
- Вертикальный масштаб (по цене и показаниям индикаторов)
- Цвета
- Управление мышью и клавиатурой
- Открепление окна графика
- Получение координат буксировки MQL-программы на график
- Перевод экранных координат во время/цену и обратно
- Прокрутка графика по оси времени
- Запрос перерисовки графика
- Переключение символа и таймфрейма
- Управление индикаторами на графике
- Открытие и закрытие графиков
- Работа с tpl-шаблонами графика
- Сохранение изображения графика
Вертикальный масштаб (по цене и показаниям индикаторов)
Установка и анализ свойств, относящихся к масштабу по вертикали, производится с помощью элементов двух перечислений: ENUM_CHART_PROPERTY_INTEGER и ENUM_CHART_PROPERTY_DOUBLE. В следующей таблице свойства указаны вместе с типом их значений.
Некоторые свойства позволяют обращаться не только к основному окну, но и подокну, для чего в ChartSet- и ChartGet-функциях следует задействовать параметр window (0 означает основное окно и является значением по умолчанию для краткой формы ChartGet).
Идентификатор |
Описание |
Тип значений |
---|---|---|
CHART_SCALEFIX |
Режим фиксированного масштаба |
bool |
CHART_FIXED_MAX |
Фиксированный максимум подокна window или начальный максимум основного окна |
double |
CHART_FIXED_MIN |
Фиксированный минимум подокна window или начальный минимум основного окна |
double |
CHART_SCALEFIX_11 |
Режим масштаба 1:1 |
bool |
CHART_SCALE_PT_PER_BAR |
Режим указания масштаба в пунктах на бар |
bool |
CHART_POINTS_PER_BAR |
Значение масштаба в пунктах на бар |
double |
CHART_PRICE_MIN |
Минимум значений в окне или подокне window (r/o) |
double |
CHART_PRICE_MAX |
Максимум значений в окне или подокне window (r/o) |
double |
CHART_HEIGHT_IN_PIXELS |
Фиксированная высота окна или подокна в пикселях, требуется параметр window |
int |
CHART_WINDOW_YDISTANCE |
Дистанция в пикселях по вертикальной оси Y между верхней рамкой подокна window и верхней рамкой основного окна графика. (r/o) |
int |
По умолчанию графики поддерживают адаптивный масштаб, чтобы котировки или линии индикаторов полностью умещались по вертикали на видимом временном отрезке. Для некоторых применений желательно фиксировать масштаб, в связи с чем терминал предлагает несколько режимов. В них график можно прокручивать мышью или клавишами (Shift+стрелка) не только влево/вправо, но и вверх/вниз, а у правой шкалы появляется "движок", за который можно быстро проматывать график мышью.
Фиксированный режим устанавливается включением флага CHART_SCALEFIX и указанием требуемых максимума и минимума в полях CHART_FIXED_MAX и CHART_FIXED_MIN (в основном окне пользователь сможет передвинуть график вверх или вниз, из-за чего значения CHART_FIXED_MAX и CHART_FIXED_MIN синхронно изменятся, но вертикальный масштаб сохранится). Также пользователь сможет изменить вертикальный масштаб, нажав кнопку мыши на шкале цен и, не отпуская её, двигая вверх или вниз. В подокнах интерактивное редактирование вертикального масштаба не предусмотрено. В связи с этим мы позднее представим индикатор SubScaler.mq5 (см. раздел про события клавиатуры), который позволит пользователю управлять диапазоном значений в подокне с помощью клавиатуры (а не из диалога настрок, с помощью полей на закладке Шкала).
Режим CHART_SCALEFIX_11 обеспечивает примерное видимое равенство сторон квадрата на экране: X баров в пикселях (по горизонтали) будут равны X пунктам в пикселях (по вертикали). Равенство примерное, потому что размер пикселей, как правило, не одинаков по вертикали и горизонтали.
Наконец, существует режим фиксации соотношения количества пунктов на бар — он включается опцией CHART_SCALE_PT_PER_BAR, а само требуемое соотношение задается с помощью свойства CHART_POINTS_PER_BAR. В отличие от режима CHART_SCALEFIX, пользователь не сможет интерактивно изменить масштаб мышью на графике. В этом режиме горизонтальная дистанция в один бар будет отображаться на экране в таком же отношении к заданному количеству пунктов по вертикали, как соотношение сторон графика (в пикселях). При равенстве таймфремов и размеров двух графиков, один будет выглядеть сжатым по цене по сравнению с другим в соответствии с отношением их величин CHART_POINTS_PER_BAR. Очевидно, что чем меньше таймфрейм, тем меньше размах баров, и потому при одном и том же масштабе мелкие таймфреймы выглядят более "сплюснутыми".
Программная установка свойства CHART_HEIGHT_IN_PIXELS делает невозможным редактирование размера окна/подокна пользователем. Это часто используется для окон, в которых размещаются торговые панели с предопределенным набором элементов управления (кнопок, полей ввода и т.д.). Для того чтобы убрать фиксацию размера, следует установить значение свойства в -1.
Значение CHART_WINDOW_YDISTANCE требуется для перевода абсолютных координат основного графика в локальные координаты подокна для корректной работы с графическими объектами. Дело в том, что при наступлении событий мыши координаты курсора передаются относительно основного окна графика, в то время как координаты графических объектов в подокне индикатора задаются относительно верхнего левого угла подокна.
Подготовим скрипт для анализа изменений вертикальных масштабов и размеров ChartScalePrice.mq5.
void OnStart()
|
Он реагирует на манипуляции с графиком следующим образом:
Initial state:
|