← Назад

Периоды обновления данных

Понаблюдал с помощью фрапса за обновлением данных таблицы квика и выводом через S# - много данных пропадает... Судя по записям в моей бд обновление раз в 1сек... Хотя таблица и не предназначена для быстрых действий. Вопрос как часто обновляется стакан? и с какой задержкой?

Комментарии (55)

Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий

skuvv
skuvv Автор

это я в первую очередь прописал -) кто-нибудь еще делал аналогичные замеры?

Mikhail Sukhov
Mikhail Sukhov

Минутку, а у Вас свой программа выводит данные или Вы мой пример Sample запускаете? Если последнее, то смысла не имеет замерять. Там обновление по таймеру, а не по поступлению новых данных.

skuvv
skuvv Автор

своя прога, по ивенту public void _trader_NewSecurities(IEnumerable<Security> securities) сверяю новые данные с записанными в переменные данные и потом в базу. но походу ивент срабатывает с определенной частотой, имхо

skuvv
skuvv Автор

ошибся, по ивенту: void _trader_SecuritiesChanged(IEnumerable<Security> obj)

skuvv
skuvv Автор

×ĎÔ ÎĹÓËĎĚŘËĎ ÓŇÁÂÁÔŮ×ÁÎÉĘ É×ĹÎÔÁ... 29.06.2010 17:06:57 SBERP03 56,09 200 56,1 200 29.06.2010 17:06:57 LKOH 1660,16 12 1661,02 1 29.06.2010 17:06:57 SRU0 7786 65 7788 7 29.06.2010 17:06:57 LKU0 16651 3 16660 2 29.06.2010 17:06:57 RIU0 135000 3 135005 4 29.06.2010 17:06:57 GZU0 15012 8 15016 4 29.06.2010 17:06:57 SiU0 31426 10 31430 20 29.06.2010 17:06:57 GAZP 149,94 468 149,99 2194 29.06.2010 17:06:57 GMKN 4707,66 1 4709,92 24 29.06.2010 17:06:57 SBERP03 56,09 200 56,1 200 29.06.2010 17:06:57 GAZP 149,94 468 149,99 2194 29.06.2010 17:06:57 GMKN 4707,66 1 4709,92 24 29.06.2010 17:06:57 SBERP03 56,09 200 56,1 200 29.06.2010 17:06:57 LKOH 1660,16 12 1661,02 1 29.06.2010 17:06:57 SRU0 7786 65 7788 7 29.06.2010 17:06:57 LKU0 16651 3 16660 2 29.06.2010 17:06:57 RIU0 135000 3 135005 4 29.06.2010 17:06:57 SiU0 31426 10 31430 20 29.06.2010 17:06:58 LKOH 1660,16 12 1661 10 29.06.2010 17:06:58 GMKN 4707,66 1 4709,94 10 29.06.2010 17:06:58 LKU0 16651 3 16666 9 29.06.2010 17:06:58 RIU0 135000 4 135015 1 29.06.2010 17:06:58 SiU0 31427 9 31430 2 29.06.2010 17:06:58 GMKN 4707,66 1 4709,94 10 29.06.2010 17:06:58 LKOH 1660,16 12 1661 10 29.06.2010 17:06:58 GAZP 149,94 468 149,99 2694 29.06.2010 17:06:58 GMKN 4707,66 1 4709,94 10 29.06.2010 17:06:58 LKOH 1660,16 12 1661 10 29.06.2010 17:06:58 LKU0 16651 3 16666 9 29.06.2010 17:06:58 RIU0 135000 4 135015 1 29.06.2010 17:06:58 SiU0 31427 9 31430 2 29.06.2010 17:06:58 SBER03 77,52 100 77,53 19648 29.06.2010 17:06:58 GMKN 4707,66 1 4709,94 10 29.06.2010 17:06:58 SBER03 77,52 100 77,53 19648 29.06.2010 17:06:59 LKOH 1660,16 12 1661,03 12 29.06.2010 17:06:59 LKU0 16652 6 16663 2 29.06.2010 17:07:00 RIU0 135015 2 135025 1 29.06.2010 17:07:00 GZU0 15012 9 15016 4 29.06.2010 17:07:00 GAZP 149,94 458 149,99 2694 29.06.2010 17:07:00 GMKN 4707,67 6 4709,94 10 29.06.2010 17:07:00 LKOH 1660,16 12 1661,03 12 29.06.2010 17:07:00 LKOH 1660,16 12 1661,03 12 29.06.2010 17:07:00 LKU0 16652 6 16663 2 29.06.2010 17:07:00 RIU0 135015 2 135025 1 29.06.2010 17:07:01 SBER03 77,51 12728 77,52 900 29.06.2010 17:07:01 SBER03 77,51 12728 77,52 900 29.06.2010 17:07:01 EDU0 1,2209 1501 1,2212 501 29.06.2010 17:07:01 SRU0 7787 8 7790 11 29.06.2010 17:07:01 LKU0 16652 6 16661 13 29.06.2010 17:07:01 RIU0 135035 3 135050 6 29.06.2010 17:07:01 GZU0 15012 9 15018 21 29.06.2010 17:07:01 GMKN 4707,68 20 4709,94 10 29.06.2010 17:07:01 GAZP 149,94 458 149,99 500 29.06.2010 17:07:01 GMKN 4707,69 24 4709,94 10 29.06.2010 17:07:01 LKOH 1660,16 12 1661,02 11 29.06.2010 17:07:01 EDU0 1,2209 1501 1,2212 501 29.06.2010 17:07:01 SRU0 7787 8 7790 11 29.06.2010 17:07:01 LKU0 16652 6 16661 13 29.06.2010 17:07:01 RIU0 135035 3 135050 6 29.06.2010 17:07:01 GZU0 15012 9 15018 21 29.06.2010 17:07:01 GMKN 4707,69 24 4709,94 10

Mikhail Sukhov
Mikhail Sukhov

Если речь по инструменты, то они вроде бы по заявлению квиковцей обновляются не чаще раза в секунду. Смысла нет, потому что там поток не такой быстрый как стакан и лента сделок. А у Вас получается что быстрее.

skuvv
skuvv Автор

вообще мне интересно стало почему есть пауза в 1 сек между всеми событиями дде? добавил вывод таблицы всех сделок и миллисеккунды:

9.06.2010 17:18:03.421 1357,93 1 29.06.2010 17:18:03.425 1604,05 1 29.06.2010 17:18:03.429 818,41 1 29.06.2010 17:18:03.433 9104,83 1 29.06.2010 17:18:03.437 235,8 1 29.06.2010 17:18:03.441 164,21 1 29.06.2010 17:18:03 445.LKOH 1655,33 181 1656 13 29.06.2010 17:18:04 449.GMKN 4703,22 4 4705,57 5 29.06.2010 17:18:04 454.SRU0 7780 18 7781 20 29.06.2010 17:18:04 459.RIU0 134880 3 134900 19 29.06.2010 17:18:04 464.GZU0 15010 5 15013 5 29.06.2010 17:18:04 470.SiU0 31432 24 31433 5 29.06.2010 17:18:04.475 SBERP03 56,03 23 29.06.2010 17:18:04.480 28,465 2 29.06.2010 17:18:04.484 SiU0 31433 2 29.06.2010 17:18:04.490 RIU0 134895 1 29.06.2010 17:18:04.495 RIU0 134895 1 29.06.2010 17:18:04.500 RIU0 134895 1 29.06.2010 17:18:04.504 RIU0 134890 1 29.06.2010 17:18:04 508.GMKN 4703,22 4 4705,57 5 29.06.2010 17:18:04.512 MICEXINDEXCF 1325,45 1 29.06.2010 17:18:04.516 3119,89 1 29.06.2010 17:18:04 520.LKU0 16611 8 16617 2 29.06.2010 17:18:04 524.RIU0 134890 1 134900 19 29.06.2010 17:18:04 529.SiU0 31432 22 31433 2 29.06.2010 17:18:04.533 2454,55 1 29.06.2010 17:18:04.537 2136,7 1 29.06.2010 17:18:04.541 5458,73 1 29.06.2010 17:18:04.545 3979,75 1 29.06.2010 17:18:04 549.VTBR 0,0767 83748 0,0768 49522 29.06.2010 17:18:04 553.SRU0 7780 18 7781 20 29.06.2010 17:18:04 557.LKU0 16611 8 16617 2 29.06.2010 17:18:04 561.RIU0 134890 1 134900 19 29.06.2010 17:18:04 565.GZU0 15010 5 15013 1 29.06.2010 17:18:04 569.SiU0 31432 22 31433 2 29.06.2010 17:18:04.574 SiU0 31433 2 29.06.2010 17:18:04.578 SiU0 31433 1 29.06.2010 17:18:04.582 SRU0 7780 8 29.06.2010 17:18:04.586 SRU0 7780 2 29.06.2010 17:18:04.590 SiU0 31433 1 29.06.2010 17:18:04.594 SiU0 31433 1 29.06.2010 17:18:04.598 RIU0 134890 1 29.06.2010 17:18:04.602 RIU0 134880 1 29.06.2010 17:18:04.606 MICEXINDEXCF 1325,47 1 29.06.2010 17:18:04.610 3119,88 1 29.06.2010 17:18:05 614.GMKN 4703,23 17 4705,57 5 29.06.2010 17:18:05 618.SRU0 7780 13 7781 19 29.06.2010 17:18:05 621.LKU0 16612 2 16618 3 29.06.2010 17:18:05 625.RIU0 134895 1 134900 19 29.06.2010 17:18:05 629.GZU0 15010 5 15015 3

Mikhail Sukhov
Mikhail Sukhov

А версия какая S#?

skuvv
skuvv Автор

2.0.1

skuvv
skuvv Автор

собственно пример где я задержку смотрел можно скачать здесь:

http://ifolder.ru/18354582

ps нужно библиотеки из сборки и прописать путь до квика в коде

Mikhail Sukhov
Mikhail Sukhov

Посмотрел код. Вроде все в порядке. Насчет буферизации могу лишь догадываться. Сделки, я так понял, идет примерно по 10 инструментам. Возможно, сам квик уже буферизирует такой объем. Насчет инструментов я уже писал - эта таблица обновляется не чаще, чем раз в секунду.

Tauler
Tauler

А вот на глаз в квике видно, что инструменты обновляются чаще чем раз в секунду. или вы имеете ввиду - по ДДЕ инструменты раз в секунду выбрасываются?

skuvv
skuvv Автор

в квике да, часто обновляются, а по дде приходят партиями с таймаутом в 1сек вот например 2 строчки из моего поста выше: 29.06.2010 17:18:04.610 3119,88 1 29.06.2010 17:18:05 614.GMKN 4703,23 17 4705,57 5 таймайт 1сек... а вообще мне кажется буфер дде в s# не освобождает память - пример выше занимает ~150Мб после выгрузки... а вот в самом начале выгрузки таймаут маленький, но с ростом буфера увеличивается до 1сек

Mikhail Sukhov
Mikhail Sukhov

Я бы освобождал буффер, будь такой =)

Память растет потому что приходят новые данные - сделки. Их ведь хранить где-то надо. А в самом начале - это когда экспорт запускается? Тогда конечно нет задержки, потому что Квик все скопом, разбивая на пакеты, шлет.

Ок, если Вы тестируете на том самом примере, что опубликовал, я тоже проведу тест. Дополнительный вопрос - а како

Mikhail Sukhov
Mikhail Sukhov

Дополнительный вопрос - а какой фильтр на таблицу всех сделок установили?

skuvv
skuvv Автор

Попробовал отключить вывод таблицы всех сделок по dde, таймаут 1сек остался. Появились подозрения насчет windows 7, надо на виртульной win xp проверить

skuvv
skuvv Автор

в win xp тоже самое... заснял там дропнутое обновление стакана - архив с 3 фреймами и выходным логом:

http://ifolder.ru/18368468

видно что 19-ый фрейм попавший внутри секунды не попал в логи ps 1 фрейм = 50 мс

Mikhail Sukhov
Mikhail Sukhov

Такое же обновление. Думаю особенность Квика. Плюс, не уверен, что данные пропадают. Взять хотя бы логи - 19 фрейм отразился на следующем секунде. Вполне может быть. Таблица инструментов по заявлением Квика не обновляется быстро. Видимо это вносит свои коррективы и на экспорт по этой таблице. Надо спрашивать уже у создателей Квика, какой у них на этот случай механизм. Если, конечно, они ответят.

skuvv
skuvv Автор

на фреймах я имел виду стакан. а самописные стаканы для квик которые я раньше использовал обновлялись намного быстрее. да и создателей квика распяли бы уже за паузы в 1сек -)))

Mikhail Sukhov
Mikhail Sukhov

Минутку, стакан не обновляется раз в секунду. Стакан с настройкой timeout в конфиге обновляется намного чаще. И по DDE приходит так же часто... Вы же тест проводили на инструментах а не на стаканах.

skuvv
skuvv Автор

А у меня одинаково совершенно получается. На привиденных фреймах и то и то видно, но 19-ый фрейм не попал в лог(строки QuotesChanged) судя по номерам фрейма, время 19-го должно быть 18:31:05.688 (+400мс от 11-го фрейма)

Mikhail Sukhov
Mikhail Sukhov

Мы видимо говорим о разный вещах. У Вас логи по таблице инструментов. А Вы пишите про стаканы.

skuvv
skuvv Автор

в логах - строки QuotesChanged - бид/аск со стакана без подписи - с таблицы инструментов. Я добавил вывод стакана в пример выложенный выше. Наверно непонятно написал, когда архив с пиксами выложил -)

skuvv
skuvv Автор

есть какие нибудь новости по проблеме? Вообще воспроизводится ли данная ошибка(задержа в 1сек) у кого-нибудь еще??

Mikhail Sukhov
Mikhail Sukhov

Ну у меня в зависимости от инструмента от секунду до 3-4 раз в секунду выдает события. На глаз, сразу же, как и Квик новое прорисовывает... Я не совсем понял. У Вас Квик стаканы быстрее обновляет и Вы хотите S# ускорить или же хотите как то ускорить сам Квик?

skuvv
skuvv Автор

квик как обычно выдает, а вот прием идет с паузами. раз у вас ситуация не повторяется, попробую у себя поковыряться

Mikhail Sukhov
Mikhail Sukhov

Попробуйте выводить в стакан в Эксель. Есть ли там задержка? Если задержки нет, то запустите прогу на S#. Задержка появилась?

skuvv
skuvv Автор

попробовал в эксель - все выводится, ничего не пропадает вывел в S# есть пропущенные данные.... они как раз попадают в паузы (1сек)

skuvv
skuvv Автор

записал небольшое видео, где все четко видно:

http://ifolder.ru/18526198

ps на видео смотреть на стакан RSU0 в левом окне и сравнивать с окном логов справа. Я использую проигрыватель из последнего K-lite codec pack, перемещение по кадрам CTRL+G, снизу pps офтопик добавил для сравнения с цейрихом финамовский квик, выводы по быстродействию делайте сами.

Mikhail Sukhov
Mikhail Sukhov

Стаканы цериха рулят. Но не всегда. Были моменты, когда Финам отдавал быстрее значения. Видимо у них разные настройки.

Теперь по экспорту. А точно он запущен на Церих? Судя по тормознутости

  • Финам =)
skuvv
skuvv Автор

точно -)

Mikhail Sukhov
Mikhail Sukhov

Ок, надо посмотреть... По срокам - где то в начале следующей недели.

А почему церих такой шустрый? На плазу перешел?

skuvv
skuvv Автор

это финам слишком медленный -) фортс 2 раза в секунду обновляется, но могут проскакивать данные чаще. и да это сервер квика подключенный к плаза

skuvv
skuvv Автор

а вы не планируете плазу добавить в проект S# ?

Mikhail Sukhov
Mikhail Sukhov

Если будут желающие использова плазу напрямую - то добавлю. Только таких думаю не много наберется.

Dmitriy Klimov
Dmitriy Klimov

А разве библиотеке не все равно, по какой технологии идет шлюзование к бирже? S# ведь через Квик работает, и Квик сам отправляет запросы на биржу. Этот вопрос сильно интересует, так как БД Открытие послезавтра переводит один из серверов на Plaza2, что обещает сильно ускорить обмен данными.

Mikhail Sukhov
Mikhail Sukhov

Имело ввиду работать с биржей не через брокера, а напрямую со шлюзом Plaza2. А удовольствие, судя по ценникам, не из дешевых.

skuvv
skuvv Автор

2к/мес на текущий момент у цейриха 4к у самой ртс тут все зависит от депо и торговых стратегий

из минусов для когото будет отсутствие ммвб, зато плюсы что нету кривого квика и естественно почти максимально возможное быстродействие, для меня основной критерий отсутствие ПО типа квика, поэтому начал изучать плазу

Mikhail Sukhov
Mikhail Sukhov

Если плаза настолько интересна, то можно сделать совместно при условии что не менее 50% работы по реализации возьмете на себя =)

skuvv
skuvv Автор

я пока новичок в программировании, не стоит загадывать вперед. но изучать сам конечно продолжу, а там и видно будет -)

Dmitriy Klimov
Dmitriy Klimov

Тема интересная, так как скорость обмена данными при работе через Квик оставляет желать лучшего. Предлагаю организовать отдельный топик, где можно будет выкладывать ссылки на материалы по теме и делиться идеями. Так, глядишь, совместными усилиями что-нибудь и получится...

Mikhail Sukhov
Mikhail Sukhov

А у Вас какая ошибка? Такая же? Или что-то другое тормозит?

Serg
Serg

Какой прогресс с выводом стакана по дде? Сегодня запустил свое недоделанное приложение. в нем использую библиотеки TRANQUIKIZER и в частности NDde. заметил что данные из стакана в моей программе обновляются медленнее чем в квике. может собака зарыта именно ndde?

Mikhail Sukhov
Mikhail Sukhov

Так, а в эксель все быстро обновляется? Я заметил тоже лаг в обновлением. Но поведения, о котором описывал skuvv, пока нет.

Serg
Serg

Да.... в екселе также тормозит... видимо вывод из квика. Тестирую на версии 5.17.0.139 Пойду к разработчикам на форум

Mikhail Sukhov
Mikhail Sukhov

Вот это уже более вероятно. Было бы классно от skuvv дождаться визуального подтверждения, что у него стакан через S# тормозит, а в эксель нет. Потому как у меня лагает одинаково в двух сценариях.

Serg
Serg

Прошу прощения... наломал дров. в ini отсутствовал price-timeout=10. сейчас вроде более менее... задержка примерно 200 мс.

Serg
Serg

забыл добавить что тестирую чисто ndde. в сравнении с делфийским дде сервером работает один в один

Mikhail Sukhov
Mikhail Sukhov
  1. В эксель сейчас есть задержка?
  2. Чисто ндде и S# имеют разницу?
Serg
Serg

S#, ndde, delphi практически одинаковы по частоте обновления(разница в мс между предыдущим и текущим обновлениями). И еще у меня почему-то s# при однократном обновлении стакана дважды реагирует на событие обновления

ниже как подписываюсь stak = quik.GetMarketDepth(sber); stak.QuotesChanged += new Action<OrderDirections, IDictionary<int, Quote>>(stak_QuotesChanged); quik.StartDde(sber);

Mikhail Sukhov
Mikhail Sukhov
  1. Остался вопрос про Эксель.
  2. Вы через плазовый квик смотрите?
Serg
Serg

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

Mikhail Sukhov
Mikhail Sukhov

Сегодня попросил проверить на плазе2. Квик в тестовую прогу выдает так же шустро данные, как и в эксель. И все это сравнимо со скоростью обновления плазовского стакана. Так что, думаю тут проблема явно в другом. Могу выложить для тесты саму прогу с исходниками.

Mikhail Sukhov
Mikhail Sukhov

Я выложил файл Program.cs(2). Можете проверить на нем, так же дважды?