Загрузка исторических тиков от момента T до последнего доступного тика

 

Коллеги, поделитесь опытом - как оптимально закачать в индикатор историю тиков с момента нулевого (или N-го) бара до текущего бара.

Тиковый индикатор должен сначала обработать все исторические тики, а потом приступить к обработке новых приходящих тиков.

Алгоритм работы с теми и другими разный, поэтому необходимо сначала загрузить тиковую историю с момента T (известно) до самого последнего тика доступного в истории, а потом приступить к обработке всех последующих приходящих тиков.

Сколько тиков доступно в истории не известно. Существует ли какой-то флаг того, что тик уже текущий или хотя бы точно последний? 

 
Oleg Shenker:

Коллеги, поделитесь опытом - как оптимально закачать в индикатор историю тиков с момента нулевого (или N-го) бара до текущего бара.

Тиковый индикатор должен сначала обработать все исторические тики, а потом приступить к обработке новых приходящих тиков.

Алгоритм работы с теми и другими разный, поэтому необходимо сначала загрузить тиковую историю с момента T (известно) до самого последнего тика доступного в истории, а потом приступить к обработке всех последующих приходящих тиков.

Сколько тиков доступно в истории не известно. Существует ли какой-то флаг того, что тик уже текущий или хотя бы точно последний? 

Так "нулевого" или самого правого тика? 

Если нужно получить вообще все тики - то через CopyTicks закажите миллиард тиков и первый раз повторяйте через каждый секунд 30, пока CopyTicks не перестанет возвращать "-1". Вот только от такого количество тиков компьютер может лопнуть :)

 
Oleg Shenker:
Здесь присутствует полный алгоритм того, что требуется.
 
Vladimir Karputov:

Так "нулевого" или самого правого тика? 

Если нужно получить вообще все тики - то через CopyTicks закажите миллиард тиков и первый раз повторяйте через каждый секунд 30, пока CopyTicks не перестанет возвращать "-1". Вот только от такого количество тиков компьютер может лопнуть :)

От самого "левого" (старого) тика в истории.

Проблема сложнее.

Тиковый индикатор легко обрабатывает приходящие тики по одному (суммирует объем по определенному алгоритму) когда последний пришедший тик вызывает функцию OnCalculate().

Дальше встает задача обработать историю. Допустим я знаю время открытия самого первого бара в истории. Я могу перевести это время в миллисекунды и заказать историю тиков с этого момента (например 1 миллиард).

Дальше я последовательно, бар за баром, обрабатываю историю тиков. Но, я не могу знать, загрузил ли я всю историю или нет. Допустим, пропала "-1" и функция вернула мне 5 000 тиков.

Это все тики в истории до текущего бара (rates_total)? Возможно нет... мне придется еще раз загрузить историю тиков.

С какого момента? Логично с момента последнего обработанного тика. Я смотрел в логе. Время нескольких (иногда до 8) последовательных тиков совпадает до миллисекунды. То есть, итерационный метод обработки тиков не годится.

Нужно загружать все тики с момента T до последнего. Тогда как определить, что я загрузил последний?

Я вижу решение проблемы в том, чтобы загружать тики по барам. Я точно знаю время открытия бара, так что я могу каждый раз загружать тики с открытия бара (скажем 5000 штук). Обрабатывать, переходить к новому бару и снова загружать тики.

Вопрос в том, является ли этот способ оптимальным. Боюсь что нет, так как я трачу слишком много времени на перегрузку тиков.

Конечно, лучше всего загрузить до последнего. 

 
Посмотрите на новую функцию CopyTicksRange, появившуюся в 1485 релизе.
 
Renat Fatkhullin:
Посмотрите на новую функцию CopyTicksRange, появившуюся в 1485 релизе.
Спасибо, Ренат, обязательно изучу.
 
Renat Fatkhullin:
Посмотрите на новую функцию CopyTicksRange, появившуюся в 1485 релизе.
Ренат, а где можно посмотреть описание функции? В документации нет пока.
 
Oleg Shenker:
Ренат, а где можно посмотреть описание функции? В документации нет пока.
Пока в тултипе редактора, документацию выпустим чуть позже.
 
Renat Fatkhullin:
Пока в тултипе редактора, документацию выпустим чуть позже.

У меня вопрос off-topic, но дело срочное, а служба поддержки молчит.

Не могу загрузить мультивалютный советник на маркет, так как он не проходит валидацию на золоте. Но на золоте он торговать в принципе не будет. Ему нужны три валютные пары, образующие треугольник.

Что делать? 

 
Уважаемый Oleg Shenker:


Совет просто  не забивайте свою голову такими мыслями .Этики вам ничем все рано не помогут ..Торгую система должна быть основана совсем на другом и движение даже 100(пунктов) не вашу сторону вообще не в одном глазу не будет влиять на вашу систему ..
Причина обращения: