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

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

для MetaTrader4

uCopyTickVolume

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

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

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

int  uCopyTickVolume(
   string           symbol,            // символ
   uint             timeframe,         // период
   int              start_pos,         // откуда начнем
   int              count,             // сколько копируем
   long             volume_array[]     // массив для копирования тиковых объемов
   );

Параметры

symbol

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

timeframe

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

start_pos

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

count

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

volume_array[]

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

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

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

Примечание

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

Пример:

long vol[];
int ibars=iBars(_Symbol,PERIOD_M15);
int Count=uCopyTickVolume(_Symbol,PERIOD_M15,ibars,15,vol);

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

int  uCopyTickVolume(
   string           symbol,            // символ
   uint             timeframe,         // период
   datetime         start_time       // с какой даты
   int              count,             // сколько копируем
   long             volume_array[]     // массив для копирования тиковых объемов
   );

Параметры

symbol

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

timeframe

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

start_time

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

count

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

volume_array[]

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

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

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

Примечание

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

Пример:

long vol[];
datetime itime=iTime(_Symbol,PERIOD_M1,iBars(_Symbol,PERIOD_M1)-1);
int Count=uCopyTickVolume(_Symbol,PERIOD_M1,itime,5,vol);

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

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

Параметры

symbol

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

timeframe

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

start_time

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

stop_time

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

volume_array[]

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

full_bar=false

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

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

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

Примечание

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

Пример:

long VolF[];
long VolT[];
datetime time1=D'2014.09.15 07:05:00';
datetime time2=D'2014.09.15 12:07:00';
int CountF=uCopyTickVolume(_Symbol,PERIOD_M15,time1,time2,VolF);
int CountT=uCopyTickVolume(_Symbol,PERIOD_M15,time1,time2,VolT,true);

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