Лишний тик в избыточных данных (редко)
Иногда сервер выдаёт лишние данные справа (CopyTicksRange), что учитывается в коде. В этом коде ошибка - пропускается один лишний тик.
if (ticks[i].time_msc > time_to_ms - 1) // вот этого -1 не хватало
{
tick_count = i;
break;
}
Возможно, этот баг или особенность уже исправили в последних билдах, но проверку лучше оставить и исправить.