ПоискПоиск  ПравилаПравила  ПользователиПользователи  ПрофильПрофиль  РегистрацияРегистрация  ВходВход
Форум «Техническая поддержка»
Форум для разработчиков и пользователей программного обеспечения, использующегося на бирже.

Раздел тех.поддержки | Форма обратной связи Тех.поддержка ОАО Московская Биржа: +7 (495) 733-9507, 287-7691
[PLAZA2] Как собрать стакан (глубина 20, 50)?
Новая тема   Ответить на тему
На страницу Пред.  1, 2, 3 ... 12, 13, 14, 15  След.
 Предыдущая тема :: Следующая тема 
 Автор  Сообщение 
Bell
Стаж: 9 лет 6 месяцев
Сообщений: 2217
Чт Дек 06, 2012 20:16 (спустя 2 года 9 месяцев 11 дней) Ответить с цитатой Получить постоянный адрес сообщения
Две строки с одинаковыми price бывают часто. dir разный, но гарантии как я понимаю нет
Еще Вам выше написали, что надо удалять с replAct != 0. И по replRev для MsgP2ReplClearDeleted 
 
Oleg Vazhnev
Стаж: 7 лет 11 месяцев
Сообщений: 1376
Пт Дек 07, 2012 00:49 (спустя 2 года 9 месяцев 11 дней) Ответить с цитатой Получить постоянный адрес сообщения
спасибо Bell большое! буду писать, всё у меня в голове картинка не сложится как мне всё это сделать получше, а пример на паскале осилить для меня unreal Smile

поле replRev вообще зачем-нибудь нужно? по-моему его можно вообще игнорировать... 
 
rst9
Стаж: 9 лет 11 месяцев
Сообщений: 1428
Пт Дек 07, 2012 01:04 (спустя 2 года 9 месяцев 11 дней) Ответить с цитатой Получить постоянный адрес сообщения
modelka, такое впечатление, что вы выборочно предложения читаете. 
 
Oleg Vazhnev
Стаж: 7 лет 11 месяцев
Сообщений: 1376
Пт Дек 07, 2012 01:14 (спустя 2 года 9 месяцев 11 дней) Ответить с цитатой Получить постоянный адрес сообщения
rst9 писал(а):
modelka, такое впечатление, что вы выборочно предложения читаете. 


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

эх думал сяду стакан на раз-два напишу пока что и нормально. теперь так сложно всё выглядит что кажется ордерлог проще сделать Smile

этот MsgP2ReplClearDeleted вообще случается когда-нибудь?

я думаю отказаться от одной большой таблицы, а разделить её "по стаканам". чтобы каждый стакан хранил свою часть таблицы. в мой дизайн это больше вписывается. проблема только когда происходит смена инструмента для replId - тогда надо будет запись из одного стакана удалить, а в другой стакан добавить. делал кто-нибудь так или похожим образом? 
 
Последний раз редактировалось автором 07.12.2012 01:22, всего редактировалось 4 раза
Bell
Стаж: 9 лет 6 месяцев
Сообщений: 2217
Пт Дек 07, 2012 04:13 (спустя 2 года 9 месяцев 11 дней) Ответить с цитатой Получить постоянный адрес сообщения
На Дельфи добавление в стакан это 30-ть строк в function tOrderBookList.addrecord из orderbook_collector.pas
Там самое сложное понять, что от чего наследуется. Я на бумажке выписывал. Ещё посмотрите, какие сообщения обрабатываются для стакана. Блок { TFORTSAggrListener } в orderbook_main.pas. Всего 6 сообщений, считая CLOSE. 
 
Oleg Vazhnev
Стаж: 7 лет 11 месяцев
Сообщений: 1376
Пт Дек 07, 2012 09:37 (спустя 2 года 9 месяцев 11 дней) Ответить с цитатой Получить постоянный адрес сообщения
там проблема ещё в том что как устроен их базовый TList непонятно, а от синтаксиса меня вообще тошнит Smile
хотя всю школолу и универ я на паскале писал, т.е. в сумме >10 лет.
сейчас забыл безвозвратно, не понимаю как с таким синтаксисом можно жить Smile

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

нужно его делать уже скорее. сильно оптимизиовать стакан не надо. я думаю что интервал раздачи будут вечно уменьшать, и у стакана будет постоянно расти траффик, и он будет терять свою актуальность и в итоге мы все окажемся на анонимном ордерлоге, а стакан выбросим Smile 
 
rst9
Стаж: 9 лет 11 месяцев
Сообщений: 1428
Пт Дек 07, 2012 10:41 (спустя 2 года 9 месяцев 11 дней) Ответить с цитатой Получить постоянный адрес сообщения
TList устроен как vector. Вектор указателей. 
 
Oleg Vazhnev
Стаж: 7 лет 11 месяцев
Сообщений: 1376
Сб Дек 15, 2012 03:07 (спустя 2 года 9 месяцев 19 дней) Ответить с цитатой Получить постоянный адрес сообщения
возник след. вопрос. относится наверное ко всем потокам

Я сейчас по приходу FutAggr MsgTnCommit считаю что стакан согласован, и начнаю всё пересчитывать. Однако по логам заметил что практически сразу (буквально через 100 микросекунд) я ловлю ещё MsgTnCommit

10:40:50:579464 [Info] FutAggr MsgTnBegin
10:40:50:582228 [Info] FutAggr MsgTnCommit
10:40:50:582313 [Info] FutAggr MsgTnBegin
10:40:50:584473 [Info] FutAggr MsgTnCommit
10:40:50:584515 [Info] FutAggr MsgTnBegin
10:40:50:585019 [Info] FutAggr MsgTnCommit
10:40:50:585059 [Info] FutAggr MsgTnBegin
10:40:50:585752 [Info] FutAggr MsgTnCommit

Я правильно понимаю что по приходу "FutAggr MsgTnCommit" не надо сразу кидаться всё считать, а надо дёргать Process с таймаутом 0 пока всё не обновится? (это по совету rst9 кажется я так сделал). У меня и в других потоках так, но вот применительно к стакану стало интересно.

И сразу вопрос - если у роутера скопилась достаточная пачка сообщений, почему не давать один MsgTnCommit когда все сообщения закончатся? Зачем выдавать MsgTnCommit где-то посередине?

Если вернули timeout на futAggr Process гарантируется ли что последним сообщением было commit? А иначе как я могу узнать что в очереди больше нет обновлений для стакана? Получил я Commit, но мне надо попробовать дёрнуть снова Process, вдруг ещё что-то есть. В какой-то момент Process вернёт timeout и именно в этот момент можно считать что стаканы полностью обновились. Если при этом последним месседжем был Commit то всё совсем удобно получтся, если же может быть иначе то нужно вводить "накоплене" данных перед коммитом, вместо того чтобы их применять по факту. 
 
Последний раз редактировалось автором 15.12.2012 17:14, всего редактировалось 4 раза
Bell
Стаж: 9 лет 6 месяцев
Сообщений: 2217
Вс Дек 16, 2012 22:24 (спустя 2 года 9 месяцев 21 день) Ответить с цитатой Получить постоянный адрес сообщения
А не может быть, что убрали квантование по 30 мс при распространении данных? 
 
Oleg Vazhnev
Стаж: 7 лет 11 месяцев
Сообщений: 1376
Вс Дек 16, 2012 22:42 (спустя 2 года 9 месяцев 21 день) Ответить с цитатой Получить постоянный адрес сообщения
Bell писал(а):
А не может быть, что убрали квантование по 30 мс при распространении данных? 


нет я так не думаю. просто в очередной пачке данных вполне может быть несколько Commitов. Возможно на каждый инструмент свой Commit, я это завтра хочу проверить. 
 
Последний раз редактировалось автором 16.12.2012 22:42, всего редактировалось 1 раз
Bell
Стаж: 9 лет 6 месяцев
Сообщений: 2217
Вс Дек 16, 2012 22:52 (спустя 2 года 9 месяцев 21 день) Ответить с цитатой Получить постоянный адрес сообщения
modelka писал(а):
Возможно на каждый инструмент свой Commit 

Не думаю, но если так, то бред. 
 
westtrd
Стаж: 6 лет 4 месяца
Откуда: Belarus
Сообщений: 1034
Пн Дек 17, 2012 13:04 (спустя 2 года 9 месяцев 21 день) Ответить с цитатой Получить постоянный адрес сообщения
Bell писал(а):
modelka писал(а):
Возможно на каждый инструмент свой Commit 

Не думаю, но если так, то бред. 

Не уверен, что это бред, так как поступление коммита - признак консистентности стакана.
А он как известно, у каждого инструмента свой. 
 
Bell
Стаж: 9 лет 6 месяцев
Сообщений: 2217
Пн Дек 17, 2012 13:40 (спустя 2 года 9 месяцев 21 день) Ответить с цитатой Получить постоянный адрес сообщения
westtrd, я имею в виду, что при трансляции с квантованием стаканы обновляются синхронно, и передавать для каждого отдельный коммит избыточно. Это было бы правильно, если бы они транслировались асинхронно.

У меня на тестовом комитты приходят с ожидаемой регулярностью и содержат изменения по нескольким стаканам сразу. Интервалы в мс:

30 30 43 113 31 12 58 38 31 26 23 74 31 33 33 33
66 31 18 29 34 41 38 27 73 28 37 53 36 29 20 26
46 53 37 32 44 31 49 51 40 39 25 29 28 29 71 33
45 26 31 60 38 22 68 45 57 55 31 28 40 40 40 30
40 175 28 37 20 40 20 35 32 37 40 35 51 39 48 28
54 58 37 26 30 34 47 35 57 34 22 34 35 77 27 36
58 55 32 40 41 41 34 65 39 28 33 30 30 27 77 30
32 26 38 37 25 21 42 35 25 38 31 27 38 50 68 29
32 36 57 129 30 29 62 34 66 27 33 35 42 35 62 39
48 25 66 22 43 38 55 28 35 74 30 28 26 24 60 35 
 
Oleg Vazhnev
Стаж: 7 лет 11 месяцев
Сообщений: 1376
Пн Дек 17, 2012 14:55 (спустя 2 года 9 месяцев 21 день) Ответить с цитатой Получить постоянный адрес сообщения
Bell спасибо за результаты, любопытно, попробую у себя такую статистику собрать сегодня-завтра. 
 
westtrd
Стаж: 6 лет 4 месяца
Откуда: Belarus
Сообщений: 1034
Пн Дек 17, 2012 18:16 (спустя 2 года 9 месяцев 21 день) Ответить с цитатой Получить постоянный адрес сообщения
Bell писал(а):
westtrd, я имею в виду, что при трансляции с квантованием стаканы обновляются синхронно, и передавать для каждого отдельный коммит избыточно. Это было бы правильно, если бы они транслировались асинхронно.

У меня на тестовом комитты приходят с ожидаемой регулярностью и содержат изменения по нескольким стаканам сразу. Интервалы в мс:

30 30 43 113 31 12 58 38 31 26 23 74 31 33 33 33
66 31 18 29 34 41 38 27 73 28 37 53 36 29 20 26
46 53 37 32 44 31 49 51 40 39 25 29 28 29 71 33
45 26 31 60 38 22 68 45 57 55 31 28 40 40 40 30
40 175 28 37 20 40 20 35 32 37 40 35 51 39 48 28
54 58 37 26 30 34 47 35 57 34 22 34 35 77 27 36
58 55 32 40 41 41 34 65 39 28 33 30 30 27 77 30
32 26 38 37 25 21 42 35 25 38 31 27 38 50 68 29
32 36 57 129 30 29 62 34 66 27 33 35 42 35 62 39
48 25 66 22 43 38 55 28 35 74 30 28 26 24 60 35 

Я говорил про общий случай.
Имелось в виду следующее, что при обновлении стаканов событие по разным инструментам может не наступать одновременно, и тут важно, как будет делать само API.
В пользовательской же логике коммит - это сигнал попадания стакана в состояние консистентности.
Как этим распоряжаться, приложение решает само, в зависимости от потребностей.
В принципе, при изменениях на серверной стороне уйти от этого достаточно просто - каждый раз передается маска и некое количество строк. Но на сие воля божья )
 
 
Показать сообщения:   
Новая тема   Ответить на тему
Список разделов форума -> Техническая поддержкаНа страницу Пред.  1, 2, 3 ... 12, 13, 14, 15  След.
Страница 13 из 15

Rambler's Top100 Rambler's Top100
Рейтинг@Mail.ru
Copyright © Московская биржа, 2006-2017.
Ваши предложения, замечания и вопросы
по работе форума направляйте на email: