Algorithmischer Handel für .NET und Python✦86+ Konnektoren · Börsen · Broker · Krypto✦S#.Designer · Backtest · optimieren · live gehen✦Eine Community von 31,558+ Tradern und Entwicklern✦Algorithmischer Handel für .NET und Python✦86+ Konnektoren · Börsen · Broker · Krypto✦S#.Designer · Backtest · optimieren · live gehen✦Eine Community von 31,558+ Tradern und Entwicklern✦
не могли бы уточнить, все ли события QuikTrader работают в одном
дополнительном потоке?
В примере SampleConsole событие Connected ожидает появления
инструментов (NewSecurities)
с помощью ManualResetEvent.
Получается эти два события находятся в разных потоках (иначе бы
выполнение блокировалось).
Прав ли я, что в отдельном одном дополнительном потоке исполняется DDE
сервер и, соответственно,
лишь те события QuikTrader, которые связаны с приходом данных по DDE,
а все остальные обработчики (Connected, Disconnected и т.д.) - это
основной поток?
Реализация меняется от версии к версии. Лучше на это на завязываться.
Главное - что событие могут приходить в других потоках.
Соответственно, работу с общими данные нужно синхронизировать.
Уточню, мой вопрос касается многопоточности именно в неком ядре
StockSharp (сам Trader, его обработчики).
Вопрос не касается стратегий, менеджера стратегий и т.п.
Какова здесь метафора системы? :-)
Пользуем критические секции повсеместно? или же считаем, что все
обработчики, занимающиеся получением данных от торговой системы,
работают по принципу "однопоточный I/O" (что возможно было бы
логично.. пусть следующие "уровни" распараллеливают)?
Насчет событий. Событие отправляющие поочередно. Тоесть, нет такого,
чтобы сначала пришло событие об отмене заявки, а потом об успешной
регистрации. Но пространство для маневра я хочу себе оставить. В
прошлых версиях все вызывалось из пула (а пул - это вещь вообще не
деторминированная). В текущей - все в одном потоке (не основном). В
новой версии - каждое событие в своем... Я пока не пришел к понимаю
единственно правильного. Но что будет всегда и точно - это то, что
данные, к которым идет обращение из обработчиков событий необходимо
синхронизовывать. Секциями или еще как - главное надо.
Wir verwenden Cookies, um die beste Erfahrung auf unserer Website zu gewährleisten. Durch die weitere Nutzung unserer Seite stimmen Sie der Verwendung von Cookies zu.
Kommentare (7)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
События вызываются в другом потоке.
т.е. создается всего один доп.поток и в нем вызываются обработчики?
Михаил,
не могли бы уточнить, все ли события QuikTrader работают в одном дополнительном потоке?
В примере SampleConsole событие Connected ожидает появления инструментов (NewSecurities) с помощью ManualResetEvent.
Получается эти два события находятся в разных потоках (иначе бы выполнение блокировалось).
Прав ли я, что в отдельном одном дополнительном потоке исполняется DDE сервер и, соответственно, лишь те события QuikTrader, которые связаны с приходом данных по DDE, а все остальные обработчики (Connected, Disconnected и т.д.) - это основной поток?
Реализация меняется от версии к версии. Лучше на это на завязываться. Главное - что событие могут приходить в других потоках. Соответственно, работу с общими данные нужно синхронизировать.
Уточню, мой вопрос касается многопоточности именно в неком ядре StockSharp (сам Trader, его обработчики). Вопрос не касается стратегий, менеджера стратегий и т.п.
Какова здесь метафора системы? :-) Пользуем критические секции повсеместно? или же считаем, что все обработчики, занимающиеся получением данных от торговой системы, работают по принципу "однопоточный I/O" (что возможно было бы логично.. пусть следующие "уровни" распараллеливают)?
Возник еще один вопрос. Являются ли методы и свойства QuikTrader thread-safe?
Да, потокобезопасно.
Насчет событий. Событие отправляющие поочередно. Тоесть, нет такого, чтобы сначала пришло событие об отмене заявки, а потом об успешной регистрации. Но пространство для маневра я хочу себе оставить. В прошлых версиях все вызывалось из пула (а пул - это вещь вообще не деторминированная). В текущей - все в одном потоке (не основном). В новой версии - каждое событие в своем... Я пока не пришел к понимаю единственно правильного. Но что будет всегда и точно - это то, что данные, к которым идет обращение из обработчиков событий необходимо синхронизовывать. Секциями или еще как - главное надо.