Доступ к таймсериям и индикаторам
© 2000-2011, MetaQuotes Software Corp.
517
Доступ к таймсериям и данным индикаторов
Функции для работы с таймсериями и индикаторами. Таймсерия отличается от обычного массива
тем, что индексация элементов таймсерии производится от конца массива к началу (от самых
свежих данных к самым старым). Для копирования значений таймсерий и индикаторов
рекомендуется использовать только динамические массивы, так как функции копирования
самостоятельно распределяют необходимый размер массивов-приемников значений.
Из этого правила есть важное исключение: если копирование таймсерий и значений индикаторов
необходимо делать часто, например, при каждом вызове OnTick() в экспертах или при каждом
вызове OnCalculate() в индикаторах, то в этом случае лучше использовать статически
распределенные массивы, так как операции распределения памяти под динамические массивы
требуют дополнительного времени и это скажется при тестировании и оптимизации экспертов.
При использовании функций доступа к таймсериям и значениям индикаторов необходимо
учитывать направление индексации, это подробно описано в разделе Направление индексации в
массивах и таймсериях.
Доступ к данным индикаторов и таймсерий осуществляется независимо от факта готовности
запрашиваемых данных (так называемый асинхронный доступ). Это критически важно для
расчета пользовательских индикаторов, поэтому при отсутствии запрашиваемых данных функции
типа Copy...() сразу же возвращают ошибку. Однако при доступе из экспертов и скриптов
производится несколько попыток получения данных с небольшой паузой, призванной обеспечить
время, необходимое для загрузки недостающих таймсерий либо для расчета значений
индикаторов.
В разделе Организация доступа к данным дается подробное описание тонкостей получения,
хранения и запроса ценовых данных в клиентском терминале MetaTrader 5.