CustomTicksReplace

Полностью заменяет ценовую историю пользовательского инструмента в указанном временном интервале данными из массива типа MqlTick.

int  CustomTicksReplace(
   const string     symbol,            // имя символа
   long             from_msc,          // с какой даты
   long             to_msc,            // по какую дату
   const MqlTick&   ticks[],           // массив с тиковыми данными, которые необходимо применить к пользовательскому инструменту
   uint             count=WHOLE_ARRAY  // количество элементов, которые будут использованы из массива ticks[]
   );

Параметры

symbol

[in]  Имя пользовательского инструмента.

from_msc

[in]  Время первого тика в ценовой истории из указанного диапазона, подлежащего удалению. Время в миллисекундах с 01.01.1970.

to_msc

[in]  Время последнего тика в ценовой истории из указанного диапазона, подлежащего удалению. Время в миллисекундах с 01.01.1970.

ticks[]

[in]   Массив тиковых данных типа MqlTick, упорядоченных по времени в порядке возрастания.

count=WHOLE_ARRAY

[in]  Количество элементов из массива ticks[], которые будут использованы для замены в указанном интервале времени. Значение WHOLE_ARRAY означает, что необходимо использовать все элементы массива ticks[].

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

Количество обновленных тиков либо -1 в случае ошибки.

Примечание

Так как в потоке котировок нередко несколько тиков могут иметь одно и то же время с точностью до миллисекунды (точное время тика хранится в поле time_msc структры MqlTick), то функция CustomTicksReplace не делает автоматической сортировки элементов массива ticks[] по времени. Поэтому массив тиков должен быть предварительно упорядочен по возрастанию времени.

Замена тиков производится последовательно день за днём до времени указанного в to_msc либо до момента возникновения ошибки. Сначала обрабатывается первый день из указанного диапазона, затем следующий, и так далее.  Как только обнаружится несоответствие времени тика порядку возрастания (неубывания), то процесс замены тиков сразу же прекращается на текущем дне. При этом тики за предыдущие дни будут успешно заменены, а текущий день (на момент неправильного тика) и все оставшиеся дни в указанном интервале останутся без изменения.

Если в массиве ticks[] отсутствуют тиковые данные за какой-то день (вообще говоря, интервал любой длительности), то после применения тиковых данных из ticks[] в истории пользовательского инструмента образуется "дыра", соответствующая пропущенным данным. Другим словами, вызов CustomTicksReplace с вырезанными тиками за конкретный интервал будет равносильно удалению части тиковой истории как будто вызывается CustomTicksDelete с интервалом "дыры".

Если в базе тиков в указанном интервале времени данные отсутствуют, то CustomTicksReplace просто добавит в нее тики из массива ticks[].

Функция CustomTicksReplace работает напрямую с базой данных тиков.

 

Смотри также

CustomRatesDelete, CustomRatesUpdate, CustomTicksDelete, CopyTicks, CopyTicksRange