Запрос перерисовки графика

В большинстве случаев графики автоматически реагируют на изменения данных и настроек терминала, соответствующим образом перестраивая изображение окна (графики цен, диаграммы индикаторов и т.д.). Однако MQL-программы слишком разнообразны и могут выполнять произвольные действия, для которых не столь просто определить, требуется ли перерисовка или нет. Кроме того анализировать на этот счет любое действие каждой MQL-программы может быть накладно в плане падения общей производительности терминала. Поэтому MQL5 API предоставляет функцию ChartRedraw, с помощью которой сама MQL-программа может при необходимости запросить перерисовку графика.

void ChartRedraw(long chartId = 0)

Функция вызывает принудительную перерисовку графика с указанным идентификатором (значение по умолчанию 0 — означает текущий график). Обычно она применяется после того, как программа изменяет свойства графика или размещенных на нем объектов.

Мы видели пример использования ChartRedraw в индикаторе IndSubChart.mq5 в разделе Режимы отображения графика. Еще один пример будет приведен в разделе Открытие и закрытие графиков.

Данная функция влияет именно на перерисовку графика, не вызывая пересчета таймсерий с котировками и индикаторов. Последний вариант обновления (фактически, перестроения) графика является более "жестким" и выполняется другой функцией ChartSetSymbolPeriod (см. следующий раздел).