Trading algorítmico para .NET e Python✦86+ conectores · bolsas · corretoras · cripto✦S#.Designer · backtest · otimizar · ao vivo✦Uma comunidade de 31,558+ traders e desenvolvedores✦Trading algorítmico para .NET e Python✦86+ conectores · bolsas · corretoras · cripto✦S#.Designer · backtest · otimizar · ao vivo✦Uma comunidade de 31,558+ traders e desenvolvedores✦
не могли бы уточнить, все ли события QuikTrader работают в одном
дополнительном потоке?
В примере SampleConsole событие Connected ожидает появления
инструментов (NewSecurities)
с помощью ManualResetEvent.
Получается эти два события находятся в разных потоках (иначе бы
выполнение блокировалось).
Прав ли я, что в отдельном одном дополнительном потоке исполняется DDE
сервер и, соответственно,
лишь те события QuikTrader, которые связаны с приходом данных по DDE,
а все остальные обработчики (Connected, Disconnected и т.д.) - это
основной поток?
Реализация меняется от версии к версии. Лучше на это на завязываться.
Главное - что событие могут приходить в других потоках.
Соответственно, работу с общими данные нужно синхронизировать.
Уточню, мой вопрос касается многопоточности именно в неком ядре
StockSharp (сам Trader, его обработчики).
Вопрос не касается стратегий, менеджера стратегий и т.п.
Какова здесь метафора системы? :-)
Пользуем критические секции повсеместно? или же считаем, что все
обработчики, занимающиеся получением данных от торговой системы,
работают по принципу "однопоточный I/O" (что возможно было бы
логично.. пусть следующие "уровни" распараллеливают)?
Насчет событий. Событие отправляющие поочередно. Тоесть, нет такого,
чтобы сначала пришло событие об отмене заявки, а потом об успешной
регистрации. Но пространство для маневра я хочу себе оставить. В
прошлых версиях все вызывалось из пула (а пул - это вещь вообще не
деторминированная). В текущей - все в одном потоке (не основном). В
новой версии - каждое событие в своем... Я пока не пришел к понимаю
единственно правильного. Но что будет всегда и точно - это то, что
данные, к которым идет обращение из обработчиков событий необходимо
синхронизовывать. Секциями или еще как - главное надо.
Utilizamos cookies para garantir a melhor experiência em nosso site. Ao continuar a usar nosso site, você concorda com o uso de cookies.
Comentários (7)
Entrar ou Criar conta, Faça login ou cadastre-se para deixar um comentário
События вызываются в другом потоке.
т.е. создается всего один доп.поток и в нем вызываются обработчики?
Михаил,
не могли бы уточнить, все ли события QuikTrader работают в одном дополнительном потоке?
В примере SampleConsole событие Connected ожидает появления инструментов (NewSecurities) с помощью ManualResetEvent.
Получается эти два события находятся в разных потоках (иначе бы выполнение блокировалось).
Прав ли я, что в отдельном одном дополнительном потоке исполняется DDE сервер и, соответственно, лишь те события QuikTrader, которые связаны с приходом данных по DDE, а все остальные обработчики (Connected, Disconnected и т.д.) - это основной поток?
Реализация меняется от версии к версии. Лучше на это на завязываться. Главное - что событие могут приходить в других потоках. Соответственно, работу с общими данные нужно синхронизировать.
Уточню, мой вопрос касается многопоточности именно в неком ядре StockSharp (сам Trader, его обработчики). Вопрос не касается стратегий, менеджера стратегий и т.п.
Какова здесь метафора системы? :-) Пользуем критические секции повсеместно? или же считаем, что все обработчики, занимающиеся получением данных от торговой системы, работают по принципу "однопоточный I/O" (что возможно было бы логично.. пусть следующие "уровни" распараллеливают)?
Возник еще один вопрос. Являются ли методы и свойства QuikTrader thread-safe?
Да, потокобезопасно.
Насчет событий. Событие отправляющие поочередно. Тоесть, нет такого, чтобы сначала пришло событие об отмене заявки, а потом об успешной регистрации. Но пространство для маневра я хочу себе оставить. В прошлых версиях все вызывалось из пула (а пул - это вещь вообще не деторминированная). В текущей - все в одном потоке (не основном). В новой версии - каждое событие в своем... Я пока не пришел к понимаю единственно правильного. Но что будет всегда и точно - это то, что данные, к которым идет обращение из обработчиков событий необходимо синхронизовывать. Секциями или еще как - главное надо.