Перенумерация свечек и SetUpdateCallback

Страницы: 1
RSS
Перенумерация свечек и SetUpdateCallback
 
В 10:20 запустил скрипт, анализирующий свечки SiH7 на минутном интервале.
CreateDataSource предоставил историю в 6021 свечек (свеча 10:00 имела номер 6001), callback стал вызываться для текущих свечек, начиная с 6021 свечки.
Через несколько минут скрипт был остановлен, а, затем, в 10:42 запущен вновь.
И что мы видим?  :shock:
CreateDataSource предоставил историю в 3043 свечек (свеча 10:00 имела номер 3001), callback стал вызываться для текущих свечек, начиная с 3043 свечки.

1. Если бы скрипт не останавливался, произошла бы перенумерация свечек?
Если бы произошла, то callback просто выдал бы следующую свечу в новой нумерации? Например, если перенумерация произошла бы ровно в 10:30: была свеча 6031, а следом за ней, вдруг пришла бы свеча 3031?
Или же callback бы в этом случае был бы вызван для всей истории в новой нумерации, начиная с 1-й свечи.

2. Если терминал запустить круглосуточно и скрипт вообще не останавливать, то как себя ведет callback от CreateDataSource при смене сессии?
Он в конце торгов выдаст свечу 23:49 за номером 3810, а потом в 10:00 выдаст свечу 3001 (или 6810 ->6001 соответственно)?
Или же callback в случае перенумерации будет вызван для всех свечей в новой нумерации, начиная с 1?
 
Здравствуйте,
На сервере есть ограничение в 3000 исторических свечек на каждый интервал.
Т.е. более 3000 свечек получить из хранилища нельзя. Далее идет текущая сессия, она считается отдельно.

Почему у Вас получилось 6к+ свечек, сказать затруднительно. Возможно что-то не так с самим скриптом, или версия старая, по идее так не должно быть.
"перенумерация" должна происходить после смены сессии. Сервер удаляет старые свечки, и добавляет в архив новые, так чтобы в архиве по прежнему было 3000 свечек. Таким образом, при условии что в архиве сервера уже 3000 свечек, каждый день, первая свечка на графике должна быть под номером 3001.
На это еще может влиять настройка в разделе "Программа" - "Сохранение данных", "Очищать данные после смены даты"
 
Меня больше интересовал ответ на второй вопрос:
Речь идет не о работе индикатора (там с OnCalculate все понятно), а о принципе работы callback от CreateDataSource.

2. Если терминал запустить круглосуточно и скрипт вообще не останавливать, то как себя ведет callback от CreateDataSource при смене сессии?
Он в конце торгов выдаст свечу 23:49 за номером 3810, а потом в 10:00 выдаст свечу 3001?
Или же callback в случае перенумерации будет вызван для всех свечей в новой нумерации, начиная с 1?
 
Алексей,
Боюсь что ответ можно узнать только проведя эксперимент. Т.к. поведение зависит от Ваших настроек, скрипта и т.д.
 
Хорошо, переформулирую вопрос.
Понятно, что номера свечкам в OnCalculate присваивает терминал. И он же в случае перенумерации гарантировано перезапустит цикл вызовов OnCalculate c 1-й свечки.

А номера свечкам, получаемым от CreateDataSource, также присваивает терминал, или сервер брокера?

Я хочу сказать, что если присваивает сервер брокера, то при перенумерации он должен заново послать пакетом всю историю на терминал.
В этом случае, по идее, терминал должен обеспечить вызовы callbackа от CreateDataSource аналогично OnCalculate, т.е. начиная с 1-й свечки "новой" истории.
 
Алексей,

По идее после смены сессии, счетчик должен пройтись с 1й свечки до последней.
 
Кстати, повнимательнее проанализировал лог с 6000+ свечками:
была выдана история с 27.01.2017 14:05:00 по 01.02.2017 23:49:00 свечи 1-3000 и далее с 03.02.2017 14:05:00 по 08.02.2017 23:49:00 свечи 3001-6000.
Quik 7.2.2.3 Настройка "Очищать данные после смены даты: На сервере (при установлении связи)".
Связь установлена в 09:50, данные запрошены через CreateDataSource в 10:20. Окон с графиком на минутном таймфрейме открыто в терминале не было, т.е. именно скрипт был инициатором запроса этих данных.
Это баг терминала или сервера?
 
Цитата
Алексей написал:
Это баг терминала или сервера?

Баги, как и разруха в головах...
 
Алексей,

Как уже было сказано, так не должно быть.
Как уже было сказано, проблема либо в старом терминале либо в самом скрипте.
Из этого следует, что 1 - Вам надо обновить терминал, 2 - если не поможет воспроизвести ситуацию и предоставить нам скрипт / скриншоты и копию папки с терминалом (без ключей доступа) на ящик quiksupport@arqatech.com
 
Sergey Gorokhov,

Заранее прошу простить, если задаю тупой вопрос. Но я недавний пользователь QUIK.

А откуда мне взять свежую версию терминала, если брокер предоставляет 7.2.2.3?
И будет ли она корректно работать с таким брокером?
 
Sergey Gorokhov,

по п.2
Сомневаюсь, что что-то не так со скриптом, поскольку он элементарный: заказ через CreateDataSource и установка callbackа - просто сброс лога в файл. В рамках одного скрипта идентичным механизмом параллельно запрашиваются данные сразу для нескольких инструментов Forts.
Проблема же 10.02.2017 опять воспроизвелась и только для SiH7. Только в этот раз скрипт я не выключал. В 10:25 связь была принудительно разорвана со стороны сервера (крайне редкое явление во время торгов, на моей памяти это в 3-й или 4-й раз), далее сработало автоподключение, и, вуаля, имеем 3000+ свечек.
 
Цитата
Алексей написал:
А откуда мне взять свежую версию терминала, если брокер предоставляет 7.2.2.3?

Вы можете запросить последнюю версию у брокера. Если брокер ее Вам не предоставит, Можете запросить у нас. Но есть риск что терминал не подключится, если у брокера старая версия сервера.

Цитата
Алексей написал:
Сомневаюсь, что что-то не так со скриптом, поскольку он элементарный

У нас описанное поведение не воспроизводится. Если есть проблема нам нужно ее исследовать.  
А для исследования нам требуется ранее запрошенная информация.
Страницы: 1
Читают тему
Наверх