| int ArrayCopySeries( |
void array[], int series_index, string symbol=NULL, int timeframe=0) |
Копирует массив-таймсерию в пользовательский массив и возвращает количество скопированных элементов.
Реального распределения памяти под массив данных и копирования не происходит. При обращении
к такому массиву производится перенаправление доступа. Исключение составляют массивы, назначенные в качестве индексных
в пользовательских индикаторах. В этом случае производится реальное копирование данных.
Если копируются данные "чужого" инструмента и/или таймфрейма, то возможна ситуация отсутствия требуемых данных.
В этом случае в переменную last_error будет помещена ошибка
ERR_HISTORY_WILL_UPDATED (4066 - запрошенные исторические данные в состоянии обновления) и необходимо через некоторое время повторить попытку копирования.
Замечание: если series_index - MODE_TIME, то передаваемый в функцию массив должен иметь тип datetime[].
Параметры:
| array[] |
- |
Ссылка на одномерный числовой массив. |
| series_index |
- |
Идентификатор массива-таймсерии. Должен быть одним из перечисленных идентификаторов таймсерий. |
| symbol |
- |
Наименование инструмента (символ валютной пары). |
| timeframe |
- |
Период графика (таймфрейм). Может быть любым значением из перечисленных периодов. |
Пример:
datetime daytimes[];
int shift=10,dayshift,error;
//---- массив Time[] отсортирован в порядке убывания
ArrayCopySeries(daytimes,MODE_TIME,Symbol(),PERIOD_D1);
error=GetLastError();
if(error==4066)
{
//---- делаем еще 2 попытки чтения
for(int i=0;i<2; i++)
{
Sleep(5000);
ArrayCopySeries(daytimes,MODE_TIME,Symbol(),PERIOD_D1);
//---- проверим время текущего дневного бара
datetime last_day=daytimes[0];
if(Year()==TimeYear(last_day) && Month()==TimeMonth(last_day) && Day()==TimeDay(last_day)) break;
}
}
if(Time[shift]>=daytimes[0]) dayshift=0;
else
{
dayshift=ArrayBsearch(daytimes,Time[shift],WHOLE_ARRAY,0,MODE_DESCEND);
if(Period()<PERIOD_D1) dayshift++;
}
Print(TimeToStr(Time[shift])," corresponds to ",dayshift," day bar opened at ", TimeToStr(daytimes[dayshift]));
|