Копирование истории тиков в матрицу или вектор

Аналогично барам вы можете копировать в матрицу или вектор и тики: для этих целей предоставлена пара перегрузок методов CopyTicks и CopyTicksRange. Они работают по принципу, схожему с функциями CopyTicks и CopyTicksRange, но получают данные в вызывающий объект. Эти функции будут подробно описаны в 5-ой главе, в разделе о работе с массивами реальных тиков в структурах MqlTick. Здесь мы лишь покажем прототипы и упомянем основные моменты.

bool matrix<T>::CopyTicks(const string symbol, uint flags, ulong from_msc, uint count)

bool vector<T>::CopyTicks(const string symbol, uint flags, ulong from_msc, uint count)

bool matrix<T>::CopyTicksRange(const string symbol, uint flags, ulong from_msc, ulong to_msc)

bool matrix<T>::CopyTicksRange(const string symbol, uint flags, ulong from_msc, ulong to_msc)

Параметр symbol задает название финансового инструмента, тики которого запрашиваются. Диапазон тиков можно указать по-разному:

  • в CopyTicks — как количество тиков (параметр count), начиная с некоторого момента (from_msc) в формате времени в миллисекундах;
  • в CopyTicksRange — как диапазон двух моментов времени(от from_msc по to_msc).

Состав копируемых данных о каждом тике указывается в параметре flags как битовая маска значений из перечисления ENUM_COPY_TICKS.

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

Значение

Описание

COPY_TICKS_INFO

1

Тики, вызванные изменениями Bid и/или Ask

COPY_TICKS_TRADE

2

Тики, вызванные изменениями Last и Volume

COPY_TICKS_ALL

3

Все тики

COPY_TICKS_TIME_MS

1 << 8

Время в миллисекундах

COPY_TICKS_BID

1 << 9

Цена Bid

COPY_TICKS_ASK

1 << 10

Цена Ask

COPY_TICKS_LAST

1 << 11

Цена Last

COPY_TICKS_VOLUME

1 << 12

Объем

COPY_TICKS_FLAGS

1 << 13

Флаги тика

Первые три бита (младший байт) обуславливают набор запрашиваемых тиков, а остальные биты (старший байт) — свойства этих тиков.

Комбинировать флаги старшего байта можно только для матриц, поскольку в вектор помещается только один ряд со значениями конкретного поля из всех тиков. Таким образом, для заполнения вектора следует выбрать лишь один бит старшего байта.

При выборе нескольких свойств тиков в процессе заполнения матрицы порядок строк в ней будет соответствовать порядку элементов в перечислении. Например, цена Bid всегда окажется в строке выше (с меньшим индексом), чем строка с ценами Ask.

Пример совместной работы с тиками и векторами будет представлен в разделе о машинном обучении.