Доступ к таймсериям

 
При создании советника или индикатора необходимо считывать информацию с графика. С текущим графиком проще, об этом мы уже говорили. Для этого существует группа предопределённых переменных. На данном этапе нас интересуют переменные-массивы, точнее таймсерии

High [ ] Массив содержит максимальные цены каждого бара
Low [ ] Массив содержит минимальные цены каждого бара
Close [ ] Массив содержит цены закрытия каждого бара
Open [ ] Массив содержит цены открытия каждого бара
Time [ ] Массив содержит время открытия каждого бара
Volume [ ] Массив содержит тиковые объемы каждого бара

Но эти массивы содержат информацию только по текущему графику. Если необходимо получить информацию с другого таймфрейма по этой же валютной паре или о другой паре применяется группа функций доступа к таймсериям.

Например:

Пусть текущий график у нас евродоллар Н 4, но нам для проверки какого то условия необходима цена открытия дневного бара. С помощью предопределённого массива Open [ ] мы можем получить цену открытия любого бара, но только по паре евродоллар и на периоде Н 4.
Для получения цены открытия дневного бара используем функцию iOpen() Выглядит она так

double open; open=iOpen ( string symbol ( название пары ), int timeframe ( период графика ) , int shift ( номер свечи ) );

То есть возвращает значение типа Double, поскольку это цена и имеет 3 входных параметра.

string symbol строка обозначающая валютную пару ( здесь это "EURUSD" )
int timeframe период графика ( у нас это будет Period_D1 )
int shift Номер свечи ( у нас по условию будет 0 )

определим переменную для сохранения результата (возвращаемого значения) функции и запишем полностью:

double D_openprice;
D_openprice=iOpen("EURUSD",PERIOD_D1,0);

После выполнения этих операторов в переменной D_openprice будет содержаться цена открытия дня, хотя текущий график у нас Н4
Можно записать эту функцию немного по другому:

D_openprice=iOpen("EURUSD",1440,0);

то есть вместо имени константы (PERIOD_D1) просто указать тайм в минутах (в сутках 1440 минут)))))
поскольку график у нас тот же самый (евродоллар) первый параметр функции не обязательно указывать явно, то есть можно просто написать NULL или Symbol(), тогда в первом параметре функции автоматически подставится наименование текущей валютной пары.

D_openprice=iOpen(NULL,1440,0);

D_openprice=iOpen(Symbol(),1440,0);

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

D_openprice=iOpen("GBPUSD",1440,0);

Функции для других цен, времени открытия бара и тикового обьёма аналогичны.

iClose(Symbol(),1440,0);
iHigh(Symbol(),1440,0);
iLow(Symbol(),1440,0);
iVolume(Symbol(),1440,0);
iTime(Symbol(),1440,0);

(не забываем что для последнего примера ( iTime ) возвращаемое значение будет иметь тип datetime)))))

Часто требуется найти бар или (свечу) с максимальной или минимальной ценой ( это может быть одна из 4х цен high open close low )
Можно конечно написать функцию, к примеру с использоваением цикла, для поиска такого бара), но лучше использовать готовые встроенные функции
iHighest и iLowest ( думаю нетрудно догадаться что iHighest ищет максимальное, а iLowest минмальное значение)))))

синтаксис функций такой:

int N;
N= iHighest( string symbol, int timeframe, int type, int count, int start) ( для iLowest аналогично)

эти функции целочисленные ( тип int ) так как возвращают номер бара и имеют 5 входных параметров. первые 2 параметра те же что и в предыдущих функциях (наименование пары и таймфрейм) с ними должно быть всё понятно.
следующие входные параметры:

1. int type идентификатор таймсерии, их может быть 6
MODE_OPEN Цена открытия
MODE_LOW Минимальная цена
MODE_HIGH Максимальная цена
MODE_CLOSE Цена закрытия
MODE_VOLUME Объем ( точнее количество тиков, сформировавших бар)
MODE_TIME Время открытия бара
здесь MODE_OPEN,MODE_LOW и т.д предопределённые константы, это просто числа от 0 до 5 имеющие свои имена

MODE_OPEN 0
MODE_LOW 1
MODE_HIGH 2
MODE_CLOSE 3
MODE_VOLUME 4
MODE_TIME 5

2. int count количество элементов для поиска ( из скольки баров будем искать максимум или минимум)

3. int start начальный бар для поиска (необязательно искать начиная с нулевого бара,это может быть любой)

 

 

 Назад

 

 

TEXT.RU - 100.00%

 

 

Комментарии (0)

Нет комментариев. Ваш будет первым!

 

Яндекс.Метрика