- Функции для получения основных свойств текущего графика
- Идентификация графиков
- Получение списка графиков
- Получение символа и таймфрейма произвольного графика
- Обзор функций для работы с полным набором свойств
- Описательные свойства графика
- Проверка состояния основного окна
- Получение количества и признака видимости окон/подокон
- Режимы отображения графика
- Управление видимостью элементов графика
- Отступы по горизонтали
- Горизонтальный масштаб (по времени)
- Вертикальный масштаб (по цене и показаниям индикаторов)
- Цвета
- Управление мышью и клавиатурой
- Открепление окна графика
- Получение координат буксировки MQL-программы на график
- Перевод экранных координат во время/цену и обратно
- Прокрутка графика по оси времени
- Запрос перерисовки графика
- Переключение символа и таймфрейма
- Управление индикаторами на графике
- Открытие и закрытие графиков
- Работа с tpl-шаблонами графика
- Сохранение изображения графика
Переключение символа и таймфрейма
Иногда MQL-программе требуется переключить текущий символ или таймфрейм графика. В частности, это является привычным функционалом для многих мультивалютных, мультитаймфреймных торговых панелей или утилит анализа торговой истории. Для этой цели в MQL5 API имеется функция ChartSetSymbolPeriod.
С её помощью также удобно инициировать пересчет всего графика, включая расположенные на нем индикаторы, — достаточно в качестве параметров указать текущие символ и таймфрейм. Данный прием может пригодиться для индикаторов, которые не смогли полностью рассчитаться при первом вызове OnCalculate и ожидают подгрузки сторонних данных ("чужих" символов, тиков или других индикаторов). Также смена символа/таймфрейма влечет за собой переинициализацию эксперта, прикрепленного к графику. Скрипт (если он выполняется периодически в цикле) при данной процедуре и вовсе пропадет с графика (будет выгружен на старом сочетании символ/таймфрейм, но не загрузится автоматически на новом сочетании).
bool ChartSetSymbolPeriod(long chartId, string symbol, ENUM_TIMEFRAMES timeframe)
Функция меняет символ и таймфрейм указанного графика с идентификатором chartId, на значения соответствующих параметров: symbol и timeframe. 0 в параметре chartId означает текущий график, NULL в параметре symbol — текущий символ, а 0 в параметре timeframe — текущий таймфрейм.
Изменения вступают в силу асинхронно, то есть функция только посылает терминалу команду и не ждет ее выполнения. Команда поступает в очередь сообщений графика и выполняется только после обработки всех предыдущих команд.
Функция возвращает true в случае удачного помещения команды в очередь графика или false в случае проблем. Информацию об ошибке можно получить в _LastError.
Мы видели примеры использования функции для обновления нескольких индикаторов, в частности:
- IndDeltaVolume.mq5 (см. Ожидание данных и управление видимостью)
- IndUnityPercent.mq5 (см. Мультивалютные и мультитаймфреймовые индикаторы)
- UseWPRMTF.mq5 (см. Поддержка множества символов и таймфреймов)
- UseM1MA.mq5 (см. Использование встроенных индикаторов)
- UseDemoAllLoop.mq5 (см. Удаление экземпляров индикаторов)
- IndSubChart.mq5 (см. Режимы отображения графика)