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

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

для MetaTrader4

uCopyTime

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

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

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

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

Параметры

symbol

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

timeframe

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

start_pos

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

count

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

time_array[]

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

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

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

Примечание

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

Пример:

datetime time1[];
int ibars=iBars(_Symbol,PERIOD_M15);
int Count=uCopyTime(_Symbol,PERIOD_M15,ibars,15,time1);

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

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

Параметры

symbol

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

timeframe

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

start_time

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

count

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

time_array[]

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

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

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

Примечание

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

Пример:

datetime time1[];
datetime itime=iTime(_Symbol,PERIOD_M1,iBars(_Symbol,PERIOD_M1)-1);
int Count=uCopyRates(_Symbol,PERIOD_M1,itime,5,time1);

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

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

Параметры

symbol

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

timeframe

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

start_time

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

stop_time

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

time_array[]

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

full_bar=false

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

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

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

Примечание

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

Пример:

datetime TimeF[];
datetime TimeT[];
datetime time1=D'2014.09.15 07:05:00';
datetime time2=D'2014.09.15 12:07:00';
int CountF=uCopyTime(_Symbol,PERIOD_M15,time1,time2,TimeF);
int CountT=uCopyTime(_Symbol,PERIOD_M15,time1,time2,TimeT,true);

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