Горизонтальный масштаб (по времени)

Для определения масштаба и количества баров по горизонтальной оси следует использовать группу целочисленных свойств из ENUM_CHART_PROPERTY_INTEGER. Среди них только CHART_SCALE является редактируемым.

Идентификатор

Описание

CHART_SCALE

Масштаб (от 0 до 5)

CHART_VISIBLE_BARS

Количество баров, видимых в данный момент на графике (может быть меньше CHART_WIDTH_IN_BARS за счет отступа CHART_SHIFT_SIZE) (r/o)

CHART_FIRST_VISIBLE_BAR

Номер первого видимого бара на графике. Нумерация идет справа налево, как в таймсерии. (r/o)

CHART_WIDTH_IN_BARS

Ширина графика в барах (потенциальная вместимость, крайние бары слева и справа могут быть видны частично) (r/o)

CHART_WIDTH_IN_PIXELS

Ширина графика в пикселях (r/o)

Свойства ENUM_CHART_PROPERTY_INTEGER на графике

Свойства ENUM_CHART_PROPERTY_INTEGER на графике

У нас все готово для реализации очередного тестового скрипта ChartScaleTime.mq5, позволяющего анализировать изменения этих свойств.

void OnStart()
{
   int flags[] =
   {
      CHART_SCALE,
      CHART_VISIBLE_BARS,
      CHART_FIRST_VISIBLE_BAR,
      CHART_WIDTH_IN_BARS,
      CHART_WIDTH_IN_PIXELS
   };
   ChartModeMonitor m(flags);
   ...
}

Ниже показан фрагмент журнала с комментариями о выполненных действиях.

Initial state:
    [key] [value]
[0]     5       4
[1]   100      35
[2]   104      34
[3]   105      45
[4]   106     715
                                  // 1) изменили масштаб на более мелкий:
CHART_SCALE 4 -> 3                // - изменилось значение свойства "масштаб"
CHART_VISIBLE_BARS 35 -> 69       // - увеличилось количество видимых баров
CHART_FIRST_VISIBLE_BAR 34 -> 68  // - увеличился номер первого видимого бара
CHART_WIDTH_IN_BARS 45 -> 90      // - увеличилось потенциальное количество баров
                                  // 2) отключили отступ у правого края
CHART_VISIBLE_BARS 69 -> 89       // - увеличилось количество видимых баров
CHART_FIRST_VISIBLE_BAR 68 -> 88  // - увеличился номер первого видимого бара
                                  // 3) уменьшили размер окна
CHART_VISIBLE_BARS 89 -> 86       // - уменьшилось количество видимых баров
CHART_WIDTH_IN_BARS 90 -> 86      // - уменьшилось потенциальное количество баров
CHART_WIDTH_IN_PIXELS 715 -> 680  // - уменьшилась ширина в пикселях
                                  // 4) нажали кнопку "End" для перехода к текущему времени
CHART_VISIBLE_BARS 86 -> 85       // - уменьшилось количество видимых баров
CHART_FIRST_VISIBLE_BAR 88 -> 84  // - уменьшился номер первого видимого бара