Колбеки оналлтраде приходят по разным инструментам не обязательно в порядке возрастания времени. Таблица всех сделок терминала на взгляд формируется сразу в хронологическом.
Какой подход использует терминал для упорядочивания?
Здравствуйте Михаил, В рамках одного инструмента хронология всегда соблюдена, если это не так то это форс мажорная ситуация. ни терминал, ни сервер, ни шлюз, абсолютно никак специально не упорядочивают данные а транслируют в той хронологии которая едет с биржи. И эта хронология хранится на сервере. Есть еще ситуация докачки данных, например если у пользователя была включена опция "Получать информацию по всем сделкам с текущего момента" а потом он ее отключил, то терминал получит пропущенные ранее данные и добавит их в таблицу,согласно той хронологии которая хранится на сервере.
Sergey Gorokhov пишет: Здравствуйте Михаил, В рамках одного инструмента хронология всегда соблюдена, если это не так то это форс мажорная ситуация.
Да, Сергей, это понятно. Вопрос звучал про "по разным инструментам".
Пример. в таблице всех сделок заказаны сбер и газп. Судя по колбекам ничто не мешает сделке по сберу раньше, чем сделка по газп при том, что таймштамп газа раньше. Тем не менее в таблице всех сделок, построенных по этим 2 инструментам, порядок хронологический. Значит, идет какая-то обработка. Вот и вопрос - каков ее принцип?
s_mike@rambler.ru пишет: Значит, идет какая-то обработка. Вот и вопрос - каков ее принцип?
Михаил, да нет там никакой обработки, все льется в том порядке как пришло с биржи. Другой вопрос, на сколько адекватна ситуация когда хронология относительно разных инструментов идет по разному. Нужен конкретный пример, чтобы можно было дать точный ответ. Если не затруднит, укажите точное время/дату, когда и что шло не так.
В визуальной Таблице всех сделок, очевидно, сделки сортируются по номеру сделки. В этом можно наглядно убедиться заказав сначала все сделки по одной (нескольким) бумаге, а через некоторое время после заполнения ТВС заказав все сделки ещё по другой (другим) бумаге.
Надо делать так, как надо. А как не надо - делать не надо.
s_mike@rambler.ru пишет: Никогда нельзя полагаться, что содержимое строки с номером N для таблицы всех сделок (и иных таблиц) будет неизменным в течение сессии?
s_mike@rambler.ru пишет: Никогда нельзя полагаться, что содержимое строки с номером N для таблицы всех сделок (и иных таблиц) будет неизменным в течение сессии?
Да, такое может быть при докачке данных
Sergey Gorokhov, Вы имели в виду физический номер строки, на который ссылаемся при обращении к таблице всех сделок с помощью функции getItem, или номер строки в таблице всех сделок, которую мы видим на экране?
Sergey Gorokhov пишет: По номеру и по времени, НО в разрезе класса.
В разрезе класса достаточно сортировки по номеру сделки. Или нет? А как сортируются сделки в визуальной таблице, по разным классам? Почему в примере #7 сделка со временем 23:49:43 вклинилась в между сделками со временем 23:49:51?
Дмитрий пишет: физический номер строки, на который ссылаемся при обращении к таблице всех сделок с помощью функции getItem
В таблице Lua "all_trades" при докачке данных (если не использовать функцию "Получить заново данные по всем сделкам") новые сделки добавляются в конец таблицы. Те, что были в таблице остаются на своих местах.
Надо делать так, как надо. А как не надо - делать не надо.
Серж пишет: В разрезе класса достаточно сортировки по номеру сделки. Или нет?
Да достаточно.
Цитата
Серж пишет: А как сортируются сделки в визуальной таблице, по разным классам?
в визуальной таблице, данные отображаются в том порядке как они хранятся на сервере (если не настроена какая либо сортировка)
Цитата
Серж пишет: Почему в примере #7 сделка со временем 23:49:43 вклинилась в между сделками со временем 23:49:51?
потому что сделка из другого класса.
Цитата
Серж пишет: В таблице Lua "all_trades" при докачке данных (если не использовать функцию "Получить заново данные по всем сделкам") новые сделки добавляются в конец таблицы. Те, что были в таблице остаются на своих местах.
В этом месте все действительно так, мой предыдущий ответ Михаилу был не верен. Порядок данных в хранилище терминала, всегда соответствует порядку загрузки данных с сервера. А порядок данных в визуальной таблице всегда соответствует порядку на сервере QUIK (если не настроено иное) Это значит что: Если докачки данных не было, то есть терминал подключен с начала сессии, в хранилище данных терминала и в визуальной таблице порядок совпадает и он такой же как на сервере. Если докачка данных была, но была очистка данных или была смена торговой сессии, то порядок в хранилище и в визуальной таблице также будет такой же как на сервере. Если очистки данных не было, то в хранилище данных терминала порядок будет отличаться от того что представлен в визуальной таблице
Sergey Gorokhov пишет: Порядок данных в хранилище терминала, всегда соответствует порядку загрузки данных с сервера. А порядок данных в визуальной таблице всегда соответствует порядку на сервере QUIK (если не настроено иное)
А чему соответствует порядок строк в файле, созданном с помощью пункта контекстного меню визуальной таблицы всех сделок "Сохранить в файл обезличенные сделки из таблицы", а также пункта "Сохранить в файл все обезличенные сделки"?
"в хранилище данных терминала порядок будет отличаться от того что представлен в визуальной таблице"
Таким образом, подыживаем:
Использовать для накопления истории и работы с таблицей всех сделок терминала (getitem) в готовом виде невозможно по причине неопределенной последовательности сделок в ней. Отследить в луа все возможные моменты, когда может измениться порядок следования сделок нереально.
Серж пишет: Можете пояснить, каким образом достигается синхронизация порядка отображения сделок в ТВС с сервером?
На сервере, таблица всех сделок хранится в соответствии с порядком получения записей, каждой записи присваивается порядковый номер в хранилище. Ровно этот порядковый номер затем и используется на клиентском месте при отображении всех-сделок.
Sergey Gorokhov пишет: На сервере, таблица всех сделок хранится в соответствии с порядком получения записей, каждой записи присваивается порядковый номер в хранилище.Ровно этот порядковый номер затем и используется на клиентском месте при отображении всех-сделок.
Т.е., вместе со сделкой на клиентское место передаётся её порядковый номер в хранилище сервера? Раннее вы писали:
Цитата
Sergey Gorokhov пишет: да нет там никакой обработки, все льется в том порядке как пришло с биржи.
Получается, что на клиентском месте в ТВС обработка всё-таки осуществляется? Но для Lua-скрипта это не имеет никакого значения. В Lua можно только самостоятельно отсортировать по номеру сделки в рамках одного класса и по времени по нескольким классам.
Надо делать так, как надо. А как не надо - делать не надо.
Кажется этот вопрос надо задать бирже. Однако трудно представить чтобы все биржи мира синхронизировали свои часы по одному источнику. Как Вы наверное в курсе NTP источников очень много. К тому же, отставание времени может быть не только из за биржи, но и из за проблем на стороне брокера.
Я хочу сказать, что, если время на торговых площадках биржи не синхронизировано, то это - повод для судебного разбирательства. Поэтому этот вариант, как наименее вероятный я отметаю. Так что вернёмся к вопросу:
Цитата
Серж пишет: Получается сервер брокера получает сделки с задержкой, как минимум, в 2 сек по одной из площадок? Или шлюз брокера?
Как такое может быть? 2 сек задержки на сервере (шлюзе) брокера - это достаточно много.
Надо делать так, как надо. А как не надо - делать не надо.
Серж, При всем уважении я не буду давать диагноз без проведения какой-либо экспертизы. Возможных причин задержек великое множество. И каждую из них нужно начинать исследовать через брокера а не через этот форум. Я могу только накинуть пару десятков возможных вариантов и то не факт что попаду пальцем в небо.
ДД 1 ."Затеваю" связанный вопрос в соседней ветке (по тематике ближе) 2. Возможно, "интерессанты" уже с проблемой разобрались, НО, как говорится, истина должна быть известна всем интересующимся. В свете вышесказанного такой вопрос: Допустим у биржи несколько "торговых площадок" (не я ввел данное утверждение). Вопрос: А не по принципу ли брокеров с биржей они должны работать? Поясняю (на всякий случай): Есть "Центральный офис" (ЦО), в котором фиксируются и обрабатываются все заявки по МЕРЕ ПОПАДАНИЯ в этот самый ЦО? Если заявки должны быть обработаны в соответствии со временем прихода на торговую площадку, ТО: Варианты развития событий, очевидно, -- следующие: 1. Конечный вердикт по принятию решения в чью пользу состоится сделка решается путем: а) по принципу первенства прихода в ЦО; б) руководствуясь принципом: если со всех офисов, пришли "следующие" транзакции, то опоздавших -- НЕТ; в) назначением таймаута, после которого заявка с какой-либо торговой площадки обрабатывается не по времени заявки, а по времени прихода в ЦО; г) "А, ПОФИГ", "используем" заявки, как НАМ "УДОБНЕЕ". Поэтому несколько изменяю вопрос. Как же (не синхронизируется время, а) упорядочиваются и обрабатываются заявки не бирже (ЦО), (как это выглядит для сервера QUIK)?
Sergey Gorokhov пишет: Порядок данных в хранилище терминала, всегда соответствует порядку загрузки данных с сервера. А порядок данных в визуальной таблице всегда соответствует порядку на сервере QUIK (если не настроено иное)
А чему соответствует порядок строк в файле, созданном с помощью пункта контекстного меню визуальной таблицы всех сделок "Сохранить в файл обезличенные сделки из таблицы", а также пункта "Сохранить в файл все обезличенные сделки"?
Так и не ответили на мой вопрос... Все же хотелось бы узнать - при сохранении сделок таким вот образом в файл они записываются в него точно в той последовательности, в какой были сохранены в таблице всех сделок терминала, или же в отсортированном виде? И если в отсортированном, то каким образом?
Sergey Gorokhov пишет: Порядок данных в хранилище терминала, всегда соответствует порядку загрузки данных с сервера. А порядок данных в визуальной таблице всегда соответствует порядку на сервере QUIK (если не настроено иное)
А чему соответствует порядок строк в файле, созданном с помощью пункта контекстного меню визуальной таблицы всех сделок "Сохранить в файл обезличенные сделки из таблицы", а также пункта "Сохранить в файл все обезличенные сделки"?
Так и не ответили на мой вопрос... Все же хотелось бы узнать - при сохранении сделок таким вот образом в файл они записываются в него точно в той последовательности, в какой были сохранены в таблице всех сделок терминала, или же в отсортированном виде? И если в отсортированном, то каким образом?
В файл сохраняется в том же порядке как на сервере, без сортировок.
PFelix написал: ДД 1 ."Затеваю" связанный вопрос в соседней ветке (по тематике ближе) 2. Возможно, "интерессанты" уже с проблемой разобрались, НО, как говорится, истина должна быть известна всем интересующимся. В свете вышесказанного такой вопрос: Допустим у биржи несколько "торговых площадок" (не я ввел данное утверждение). Вопрос: А не по принципу ли брокеров с биржей они должны работать? Поясняю (на всякий случай): Есть "Центральный офис" (ЦО), в котором фиксируются и обрабатываются все заявки по МЕРЕ ПОПАДАНИЯ в этот самый ЦО? Если заявки должны быть обработаны в соответствии со временем прихода на торговую площадку, ТО: Варианты развития событий, очевидно, -- следующие: 1. Конечный вердикт по принятию решения в чью пользу состоится сделка решается путем: а) по принципу первенства прихода в ЦО; б) руководствуясь принципом: если со всех офисов, пришли "следующие" транзакции, то опоздавших -- НЕТ; в) назначением таймаута, после которого заявка с какой-либо торговой площадки обрабатывается не по времени заявки, а по времени прихода в ЦО; г) "А, ПОФИГ", "используем" заявки, как НАМ "УДОБНЕЕ". Поэтому несколько изменяю вопрос. Как же (не синхронизируется время, а) упорядочиваются и обрабатываются заявки не бирже (ЦО), (как это выглядит для сервера QUIK)?
Интересно почему Вы задаете вопрос к бирже здесь, а не на форуме самой биржи, что было бы куда правильней? Как уже несколько раз было сказано и еще раз повторим, со стороны QUIK записи отправляются клиенту тогда когда их получит сервер и в том порядке как их получит сервер, и не важно какое время у конкретной записи, никаких принудительных задержек в этом месте нет и не будет, т.к. любые принудительные задержки есть великое зло. Существуют естественные задержки (даже у света есть скорость) с которыми ничего сделать нельзя, а есть не естественные задержки (вина провайдера или проблемы у брокера/биржи) и с ними можно и нужно бороться. Касаемо времени на сделках, до тех пор пока биржи всего мира не начнут синхронизировать свои часы с одним единым источником (NTP сервером), никакой гарантии синхронизации времени на сделках разных площадок не будет. Даже если речь про одну биржу с разными торговыми площадками, все равно синхронизация не гарантируется, чтобы убедиться достаточно посмотреть на сделки по акциям и фьючерсам. И надо учиться с этим жить.
Sergey Gorokhov написал: В файл сохраняется в том же порядке как на сервере, без сортировок.
Если без сортировок, то они должны сохраняться в том порядке, в котором они записаны в хранилище терминала. И как следует из приведенной ниже цитаты, в файл информация о сделках при этом совсем не обязательно должна сохраняться в том же порядке, как на сервере.
Цитата
Sergey Gorokhov написал: Порядок данных в хранилище терминала, всегда соответствует порядку загрузки данных с сервера.А порядок данных в визуальной таблице всегда соответствует порядку на сервере QUIK (если не настроено иное)Это значит что:Если докачки данных не было, то есть терминал подключен с начала сессии, в хранилище данных терминала и в визуальной таблице порядок совпадает и он такой же как на сервере.Если докачка данных была, но была очистка данных или была смена торговой сессии, то порядок в хранилище и в визуальной таблице также будет такой же как на сервере.Если очистки данных не было, то в хранилище данных терминала порядок будет отличаться от того что представлен в визуальной таблице
Или все-таки сортировка присутствует и она происходит так же, как по умолчанию в визуальной таблице всех сделок - по порядковому номеру сделки в хранилище сервера, который передается в терминал вместе со сделкой, но не виден пользователю и средствам QLUA?
Дмитрий, Принудительной сортировки в QUIK нет, уже миллион раз было сказано, сколько можно повторять? Данные поступают на сервер УЖЕ в отсортированном виде, за этим следит биржа. По этому, нарушение хронологии в QUIK исключено. По этому, данные в хранилище сервера и данные в хранилище терминала всегда идут в одинаковом порядке По этому, НЕТ никакой разницы при сохранении в файл, будут ли данные в том порядке как в терминале или же в том порядке как на сервере. Естественно, речь про рамки одного рынка. Если говорить про разные рынки, то как УЖЕ было несколько раз сказано, на разных рынках никакой синхронизации между биржами нет и не может быть в принципе, пока они не синхронизируют часы, а это они естественно делать не будут.
Sergey Gorokhov написал: данные в хранилище сервера и данные в хранилище терминала всегда идут в одинаковом порядкеПо этому, НЕТ никакой разницы при сохранении в файл, будут ли данные в том порядке как в терминале или же в том порядке как на сервере.
А как тогда понимать вот эти ваши слова, которые процитированы ниже?
Цитата
Sergey Gorokhov написал: Если очистки данных не было, то в хранилище данных терминала порядок будет отличаться от того что представлен в визуальной таблице
Отсюда и возник этот вопрос о том, в каком порядке сохраняются сделки в текстовый файл:
Цитата
Дмитрий написал: Или все-таки сортировка присутствует и она происходит так же, как по умолчанию в визуальной таблице всех сделок - по порядковому номеру сделки в хранилище сервера, который передается в терминал вместе со сделкой, но не виден пользователю и средствам QLUA?
Дмитрий написал: А как тогда понимать вот эти ваши слова, которые процитированы ниже?
А что не так? не вижу противоречий. В Визуальной таблице данные могут быть в любом порядке, как отсортируете или отфильтруете. Но в хранилище терминала эти данные не поменяют своего места.
Дмитрий написал: А как тогда понимать вот эти ваши слова, которые процитированы ниже?
Перечитал еще раз, теперь понятно в чем вопрос.
При дозаказе, данные в хранилище терминала действителньо могут находиться не в том месте. Т.к. хранилище наполняется в конец файла. Но в QUIK в визуальной таблице данные будут отсортированы по индексу записи. От сюда и ответ на вопрос, данные сохраняются в файл по индексу записи.
Хочу вернуться к данной теме. При перезаказе данных в течение торговой сессии по обезличенным сделкам (кнопка "Получить заново данные по обезличенным сделкам", настройка "Получать информацию по всем обезличенным сделкам с текущего момента" отключена) нарушается порядок следования сделок в хранилище.
В таблице параметр index - это индекс строки, получаемой функцией
Перезаказ был осуществлен примерно в 12:04. Как видно, первые несколько строк идут с этим временем, далее хронология начинается с начала веченей сессии. На мой взгляд, это косяк, надо исправить. А то приходится закрывать QUIK и вручную удалять файл alltrade.dat, чтобы восстановить порядок следования сделок.
Надо делать так, как надо. А как не надо - делать не надо.
Старатель написал: Хочу вернуться к данной теме. При перезаказе данных в течение торговой сессии по обезличенным сделкам (кнопка " Получить заново данные по обезличенным сделкам ", настройка "Получать информацию по всем обезличенным сделкам с текущего момента" отключена ) нарушается порядок следования сделок в хранилище.
В таблице параметр index - это индекс строки, получаемой функцией
Код
SearchItems ( 'all_trades' , 0 , getNumberOf ( 'all_trades' ) - 1 , function (class_code,sec_code) return sec_code = = 'SiU9' and class_code = = 'SPBFUT' end , 'class_code,sec_code' )
Перезаказ был осуществлен примерно в 12:04. Как видно, первые несколько строк идут с этим временем, далее хронология начинается с начала веченей сессии. На мой взгляд, это косяк, надо исправить . А то приходится закрывать QUIK и вручную удалять файл alltrade.dat, чтобы восстановить порядок следования сделок.
Добрый день. Воспроизвести описанное Вами поведение не удалось, т.е все сделки идут по времени. Просьба прислать нам архив рабочего места QUIK на quiksupport@arqatech.com (на момент возникновения проблемы, т.е нужно еще раз воспроизвести) Также дополните проблема только по сделкам срочного рынка?
Старатель написал: При перезаказе данных в течение торговой сессии по обезличенным сделкам
Ключевые слова здесь "в течение". Если вы тестируете на демо, да ещё когда торги не активны, то, очевидно, что не воспроизводится. Запустите на боевом QUIK в момент высокой активности торгов, чтобы сделки поступали в терминал непрерывно. Что касается других площадок, я не проверял.
Надо делать так, как надо. А как не надо - делать не надо.
Старатель написал: При перезаказе данных в течение торговой сессии по обезличенным сделкам
Ключевые слова здесь "в течение". Если вы тестируете на демо, да ещё когда торги не активны, то, очевидно, что не воспроизводится. Запустите на боевом QUIK в момент высокой активности торгов, чтобы сделки поступали в терминал непрерывно. Что касается других площадок, я не проверял.
Проверили, сделку идут также по времени. Ждем запрошенную информацию для разбора.