uCopyRates - Библиотека Custom HLOC pro

17 октября 2014, 00:00
Yurij Kozhevnikov
0
125
Библиотека Custom HLOC pro

для MetaTrader4

uCopyRates

Получает в массив rates_array исторические данные структуры MqlRates указанного символа-периода. Отсчет элементов от стартовой позиции ведется от настоящего к прошлому, то есть стартовая позиция, равная 0, означает текущий бар.

Существует 3 варианта функции.

1. Обращение по начальной позиции и количеству требуемых элементов

int  uCopyRates(
   string           symbol,            // символ
   uint             timeframe,         // период
   int              start_pos,         // откуда начнем
   int              count,             // сколько копируем
   MqlRates         rates_array[]      // массив, куда будут скопированы данные
   );

Параметры

symbol

[in]  Символьное имя инструмента. NULL означает текущий символ.

timeframe

[in]  Период. Может быть любым целым неотрицательным числом. 0 означает период текущего графика.

start_pos

[in]  Номер первого копируемого элемента.

count

[in]  Количество копируемых элементов.

rates_array[]

[out]  Массив типа MqlRates.

Возвращаемое значение

Количество скопированных элементов массива либо -1 в случае невозможности возвратить данные.

Примечание

Обращение к первому варианту функции во всём аналогично обращению к первому варианту функции CopyRates кроме типа входного параметра timeframe. Если для функции CopyRates диапазон доступных для копирования баров ограничен барами, отображаемыми на соответствующем графике, то для функции uCopyRates этот диапазон ограничен только глубиной хранящейся в файле истории.

Пример:

MqlRates Rate[];
int ibars=iBars(_Symbol,PERIOD_M30);
int Count=uCopyRates(_Symbol,PERIOD_M30,ibars-2,5,Rate);

2. Обращение по начальной дате и количеству требуемых элементов

int  uCopyRates(
   string           symbol,            // символ
   uint             timeframe,         // период
   datetime         start_time       // с какой даты
   int              count,             // сколько копируем
   MqlRates         rates_array[]      // массив, куда будут скопированы данные
   );

Параметры

symbol

[in]  Символьное имя инструмента. NULL означает текущий символ.

timeframe

[in]  Период. Может быть любым целым неотрицательным числом. 0 означает период текущего графика.

start_time

[in]  Время бара, соответствующее первому элементу.

count

[in]  Количество копируемых элементов.

rates_array[]

[out]  Массив типа MqlRates.

Возвращаемое значение

Количество скопированных элементов массива либо -1 в случае невозможности возвратить данные.

Примечание

Обращение ко второму варианту функции во всём аналогично обращению ко второму варианту функции CopyRates кроме типа входного параметра timeframe. Если для функции CopyRates диапазон доступных для копирования баров ограничен барами, отображаемыми на соответствующем графике, то для функции uCopyRates этот диапазон ограничен только глубиной хранящейся в файле истории.

Пример:

MqlRates Rate[];
datetime itime=iTime(_Symbol,PERIOD_M5,iBars(_Symbol,PERIOD_M5)-1);
int Count=uCopyRates(_Symbol,PERIOD_M5,itime,5,Rate);

3. Обращение по начальной и конечной датам требуемого интервала времени

int  uCopyRates(
   string           symbol,            // символ
   uint             timeframe,         // период
   datetime         start_time       // с какой даты
   datetime         stop_time,         // по какую дату
   MqlRates         rates_array[],     // массив, куда будут скопированы данные
   bool             full_bar=false     // признак полной свечи в указанном диапазоне
   );

Параметры

symbol

[in]  Символьное имя инструмента. NULL означает текущий символ.

timeframe

[in]  Период. Может быть любым целым неотрицательным числом. 0 означает период текущего графика.

start_time

[in]  Время бара, соответствующее первому элементу.

stop_time

[in]  Время бара, соответствующее последнему элементу.

rates_array[]

[out]  Массив типа MqlRates.

full_bar=false

[in]  Принцип отбора баров для копирования. Если full_bar=false, то для копирования отбираются все бары, время начала которых находится в заданном диапазоне. Если full_bar=true, то для копирования отбираются только бары, которые полностью находятся в заданном диапазоне.

Возвращаемое значение

Количество скопированных элементов массива либо -1 в случае невозможности возвратить данные.

Примечание

Третий вариант функции работает по логике, отличной от логики третьего варианта функции CopyRates. Если в первых двух вариантах отсчёт идёт от настоящего к прошлому, то в третьем - от прошлого к настоящему. Это означает, что если начальная и конечная даты находятся внутри баров указанного таймфрейма, то бар, которому принадлежит более ранняя дата, не будет скопирован, а бар, которому принадлежит более поздняя дата, будет скопирован только при full_bar=false. Указанная логика работает и в случае попадания дат на дыры в истории или выходные дни.

Пример:

MqlRates RateF[];
MqlRates RateT[];
datetime time1=D'2014.09.15 07:05:00';
datetime time2=D'2014.09.15 12:07:00';
int CountF=uCopyRates(_Symbol,PERIOD_M15,time1,time2,RateF);
int CountT=uCopyRates(_Symbol,PERIOD_M15,time1,time2,RateT,true);

Поделитесь с друзьями: