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

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

для MetaTrader4

uCopyLow

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

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

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

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

Параметры

symbol

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

timeframe

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

start_pos

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

count

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

low_array[]

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

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

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

Примечание

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

Пример:

double low1[];
int ibars=iBars(_Symbol,PERIOD_M15);
int Count=uCopyLow(_Symbol,PERIOD_M15,ibars,15,low1);

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

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

Параметры

symbol

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

timeframe

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

start_time

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

count

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

low_array[]

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

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

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

Примечание

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

Пример:

double low1[];
datetime itime=iTime(_Symbol,PERIOD_M1,iBars(_Symbol,PERIOD_M1)-1);
int Count=uCopyLow(_Symbol,PERIOD_M1,itime,5,low1);

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

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

Параметры

symbol

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

timeframe

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

start_time

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

stop_time

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

low_array[]

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

full_bar=false

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

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

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

Примечание

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

Пример:

double LowF[];
double LowT[];
datetime time1=D'2014.09.15 07:05:00';
datetime time2=D'2014.09.15 12:07:00';
int CountF=uCopyLow(_Symbol,PERIOD_M15,time1,time2,LowF);
int CountT=uCopyLow(_Symbol,PERIOD_M15,time1,time2,LowT,true);

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