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

Метод matrix<T>::CopyRates копирует временные ряды с историей котировок прямо в матрицу или вектор. Данный метод работает по аналогии с функциями, которые мы подробно рассмотрим в 5-ой Части, в главе о временных рядах, а именно: CopyRates и раздельные Copy-функции для каждого поля структуры MqlRates.

bool matrix<T>::CopyRates(const string symbol, ENUM_TIMEFRAMES tf, ulong rates_mask,
  ulong start, ulong count)

bool matrix<T>::CopyRates(const string symbol, ENUM_TIMEFRAMES tf, ulong rates_mask,
  datetime from, ulong count)

bool matrix<T>::CopyRates(const string symbol, ENUM_TIMEFRAMES tf, ulong rates_mask,
  datetime from, datetime to)

В параметрах требуется указать символ, таймфрейм, а также диапазон запрашиваемых баров: либо по номеру и количеству, либо по диапазону дат. Данные копируются таким образом, что самый старый по времени элемент помещается в начало матрицы/вектора.

Параметр rates_mask предназначен для указания комбинации флагов из перечисления ENUM_COPY_RATES с набором доступных полей. Комбинация флагов позволяет за один запрос получить несколько временных рядов из истории. При этом порядок строк в матрице будет соответствовать порядку значений в перечислении ENUM_COPY_RATES, в частности, строка с данными High будет в матрице всегда выше строки с данными Low.

При копировании в вектор можно указать только одно значение из перечисления ENUM_COPY_RATES, иначе будет ошибка.

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

Значение

Описание

COPY_RATES_OPEN

1

цены Open

COPY_RATES_HIGH

2

цены High

COPY_RATES_LOW

4

цены Low

COPY_RATES_CLOSE

8

цены Close

COPY_RATES_TIME

16

времена открытия баров

COPY_RATES_VOLUME_TICK

32

тиковые объемы

COPY_RATES_VOLUME_REAL

64

реальные объемы

COPY_RATES_SPREAD

128

спреды

 

Комбинации

COPY_RATES_OHLC

15

Open, High, Low, Close

COPY_RATES_OHLCT

31

Open, High, Low, Close, Time

Мы покажем пример использований этой функции в разделе о Решении уравнений.