Коллеги, поделитесь опытом - как оптимально закачать в индикатор историю тиков с момента нулевого (или N-го) бара до текущего бара.
Тиковый индикатор должен сначала обработать все исторические тики, а потом приступить к обработке новых приходящих тиков.
Алгоритм работы с теми и другими разный, поэтому необходимо сначала загрузить тиковую историю с момента T (известно) до самого последнего тика доступного в истории, а потом приступить к обработке всех последующих приходящих тиков.
Сколько тиков доступно в истории не известно. Существует ли какой-то флаг того, что тик уже текущий или хотя бы точно последний?
Так "нулевого" или самого правого тика?
Если нужно получить вообще все тики - то через CopyTicks закажите миллиард тиков и первый раз повторяйте через каждый секунд 30, пока CopyTicks не перестанет возвращать "-1". Вот только от такого количество тиков компьютер может лопнуть :)
Так "нулевого" или самого правого тика?
Если нужно получить вообще все тики - то через CopyTicks закажите миллиард тиков и первый раз повторяйте через каждый секунд 30, пока CopyTicks не перестанет возвращать "-1". Вот только от такого количество тиков компьютер может лопнуть :)
От самого "левого" (старого) тика в истории.
Проблема сложнее.
Тиковый индикатор легко обрабатывает приходящие тики по одному (суммирует объем по определенному алгоритму) когда последний пришедший тик вызывает функцию OnCalculate().
Дальше встает задача обработать историю. Допустим я знаю время открытия самого первого бара в истории. Я могу перевести это время в миллисекунды и заказать историю тиков с этого момента (например 1 миллиард).
Дальше я последовательно, бар за баром, обрабатываю историю тиков. Но, я не могу знать, загрузил ли я всю историю или нет. Допустим, пропала "-1" и функция вернула мне 5 000 тиков.
Это все тики в истории до текущего бара (rates_total)? Возможно нет... мне придется еще раз загрузить историю тиков.
С какого момента? Логично с момента последнего обработанного тика. Я смотрел в логе. Время нескольких (иногда до 8) последовательных тиков совпадает до миллисекунды. То есть, итерационный метод обработки тиков не годится.
Нужно загружать все тики с момента T до последнего. Тогда как определить, что я загрузил последний?
Я вижу решение проблемы в том, чтобы загружать тики по барам. Я точно знаю время открытия бара, так что я могу каждый раз загружать тики с открытия бара (скажем 5000 штук). Обрабатывать, переходить к новому бару и снова загружать тики.
Вопрос в том, является ли этот способ оптимальным. Боюсь что нет, так как я трачу слишком много времени на перегрузку тиков.
Конечно, лучше всего загрузить до последнего.
Посмотрите на новую функцию CopyTicksRange, появившуюся в 1485 релизе.
Посмотрите на новую функцию CopyTicksRange, появившуюся в 1485 релизе.
Ренат, а где можно посмотреть описание функции? В документации нет пока.
Пока в тултипе редактора, документацию выпустим чуть позже.
У меня вопрос off-topic, но дело срочное, а служба поддержки молчит.
Не могу загрузить мультивалютный советник на маркет, так как он не проходит валидацию на золоте. Но на золоте он торговать в принципе не будет. Ему нужны три валютные пары, образующие треугольник.
Что делать?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Коллеги, поделитесь опытом - как оптимально закачать в индикатор историю тиков с момента нулевого (или N-го) бара до текущего бара.
Тиковый индикатор должен сначала обработать все исторические тики, а потом приступить к обработке новых приходящих тиков.
Алгоритм работы с теми и другими разный, поэтому необходимо сначала загрузить тиковую историю с момента T (известно) до самого последнего тика доступного в истории, а потом приступить к обработке всех последующих приходящих тиков.
Сколько тиков доступно в истории не известно. Существует ли какой-то флаг того, что тик уже текущий или хотя бы точно последний?