- Функции для получения основных свойств текущего графика
- Идентификация графиков
- Получение списка графиков
- Получение символа и таймфрейма произвольного графика
- Обзор функций для работы с полным набором свойств
- Описательные свойства графика
- Проверка состояния основного окна
- Получение количества и признака видимости окон/подокон
- Режимы отображения графика
- Управление видимостью элементов графика
- Отступы по горизонтали
- Горизонтальный масштаб (по времени)
- Вертикальный масштаб (по цене и показаниям индикаторов)
- Цвета
- Управление мышью и клавиатурой
- Открепление окна графика
- Получение координат буксировки MQL-программы на график
- Перевод экранных координат во время/цену и обратно
- Прокрутка графика по оси времени
- Запрос перерисовки графика
- Переключение символа и таймфрейма
- Управление индикаторами на графике
- Открытие и закрытие графиков
- Работа с tpl-шаблонами графика
- Сохранение изображения графика
Управление мышью и клавиатурой
В данном разделе мы познакомимся с группой свойств, которые влияют на перехват графиком некоторых манипуляций с мышью и клавиатурой, которые расцениваются по умолчанию как управляющие действия. В частности, пользователи MetaTrader 5 хорошо знают, что график можно прокручивать мышью, а для выполнения наиболее востребованных команд можно вызвать контекстное меню. MQL5 позволяет отключить такое поведение графика полностью или частично. Важно отметить, что сделать это можно только программно: аналогичных опций в пользовательском интерфейсе терминала нет.
Исключение составляет лишь опция CHART_DRAG_TRADE_LEVELS (см. в таблице ниже): для неё в настройках терминала, на закладке Графики имеется выпадающий список, управляющий разрешением перетаскивать торговые уровни мышью.
Все свойства данной группы имеют логический тип (true — действие разрешено, false — действие отключено) и потому находятся в перечислении ENUM_CHART_PROPERTY_INTEGER.
Идентификатор |
Описание |
---|---|
CHART_CONTEXT_MENU |
Включение/отключение доступа к контекстному меню по нажатию правой клавиши мышки. Значение false отключает только контекстное меню графика, при этом контекстное меню для объектов на графике остается доступным. Значение по умолчанию true. |
CHART_CROSSHAIR_TOOL |
Включение/отключение доступа к инструменту "Перекрестие" по нажатию средней клавиши мышки. Значение по умолчанию true. |
CHART_MOUSE_SCROLL |
Прокрутка графика левой кнопкой мышки или колесиком. Когда прокрутка разрешена, это относится не только к прокрутке по горизонтали, но и по вертикали, однако последняя доступна только при установленном фиксированном масштабе: одном из свойств CHART_SCALEFIX, CHART_SCALEFIX_11 или CHART_SCALE_PT_PER_BAR. Значение по умолчанию true. |
CHART_KEYBOARD_CONTROL |
Разрешение на управление графиком с клавиатуры (кнопками Home, End, PageUp/PageDown, +/-, стрелки вверх/вниз и т.д.). Установка в значение false позволяет отключить прокрутку и масштабирование графика, но при этом сохраняется возможность получать события нажатия данных клавиш в OnChartEvent. Значение по умолчанию true. |
CHART_QUICK_NAVIGATION |
Разрешение на работу в графике строки быстрой навигации, которая автоматически появляется в левом углу шкалы времени при двойном клике мышки или нажатии клавиш Пробел или Ввод. Таким образом можно быстро сменить символ, таймфрейм или дату первого видимого бара. По умолчанию свойство равно true, и активация быстрой навигации включена. |
CHART_DRAG_TRADE_LEVELS |
Разрешение на перетаскивание торговых уровней на графике с помощью мышки. По умолчанию режим перетаскивания включен (true). |
В тестовом скрипте ChartInputControl.mq5 установим монитор на все вышеперечисленные свойства, а кроме того предусмотрим входные переменные для произвольной установки значений пользователем. За счет того, что наш скрипт сохраняет резервную копию настроек при запуске, все измененные свойства будут восстановлены при завершении работы скрипта.
#property script_show_inputs
|
Например, мы можем при запуске скрипта сбросить в false разрешения для контекстного меню, инструмента "перекрестие", управления мышью и клавиатурой. В результате получим следующий журнал.
Initial state:
|
При этом вы не сможете двигать график ни мышью, ни клавиатурой, и даже вызвать контекстное меню. Поэтому для того, чтобы восстановить его работоспособность, придется набросить на график этот же или другой скрипт (напомним, что скрипт на графике может быть только один, и при нанесении нового происходит выгрузка предыдущего;). Новый экземпляр скрипта достаточно набросить, но не запускать (нажать Отмена в диалоге ввода входных переменных).