CopyTicksRange

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

bool  matrix::CopyTicksRange(
   string           symbol,                // имя символа
   ulong            flags,                 // флаг, определяющий тип получаемых тиков
   ulong            from_msc,              // время, начиная с которого запрашиваются тики
   ulong            to_msc                 // время, по которое запрашиваются тики
   );

Метод вектора

bool  vector::CopyTicksRange(
   string           symbol,                // имя символа
   ulong            flags,                 // флаг, определяющий тип получаемых тиков
   ulong            from_msc,              // время, начиная с которого запрашиваются тики
   ulong            to_msc                 // время, по которое запрашиваются тики
   );

Параметры

symbol

[in]  Символ.

flags

[in]  Комбинация флагов из перечисления ENUM_COPY_TICKS, указывающих состав запрашиваемых данных. При копировании в вектор можно указать только одно значение из перечисления ENUM_COPY_TICKS, иначе будет ошибка.

from_msc

[in]  Время, начиная с которого запрашиваются тики. Указывается в миллисекундах с 01.01.1970. Если параметр from_msc не указан, то отдаются тики от самого начала истории. Отдаются тики со временем >= from_msc.

to_msc

[in]  Время, по которое запрашиваются тики. Указывается в миллисекундах с 01.01.1970. Отдаются тики со временем <= to_msc. Если параметр to_msc не указан, то отдаются все тики до конца истории.

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

Возвращает true в случае успеха, иначе false в случае ошибки. GetLastError() может возвращать следующие ошибки:

  • ERR_HISTORY_TIMEOUT – время ожидание синхронизации тиков вышло, функция отдала всё что было.
  • ERR_HISTORY_SMALL_BUFFER – статический буфер слишком маленький, отдано столько, сколько поместилось в массив.
  • ERR_NOT_ENOUGH_MEMORY – не хватает памяти для получения истории из указаного диапазона в динамический массив тиков. Не удалось выделить нужный объем памяти под массиве тиков.

 

Чтобы узнать, какие именно данные изменились с текущим тиком, анализируйте его флаги:

  • TICK_FLAG_BID – тик изменил цену бид
  • TICK_FLAG_ASK  – тик изменил цену аск
  • TICK_FLAG_LAST – тик изменил цену последней сделки
  • TICK_FLAG_VOLUME – тик изменил объем
  • TICK_FLAG_BUY – тик возник в результате сделки на покупку
  • TICK_FLAG_SELL – тик возник в результате сделки на продажу

Примечание

Метод CopyTicksRange() предназначен для запроса тиков из строго указанного диапазона, например, за конкретный день истории. В то время как CopyTicks() позволяет указать только начальную дату, например – получить все тики с начала месяца по текущий момент.

Смотри также

Доступ к таймсериям и индикаторам, CopyTicksRange