Здраствуйте.
- Мне необходима максимальная скорость выставления заявок, поэтому был поставлен интервал стратегии 125мс. Это 8 срабатываний в секунду без учета факторов времени работы логики стратегии и отправке транзакции в квиковский апи. Насколько я понял интервал играет роль sleepa передавая управление потоку стратегии. Вопрос в том какой минимальный интервал можно поставить, не будет ли создаватся очередей на выполнение стратегии ну или чего-то подобного?
- При частичном выполнении заявки она переходит в состояние исполненная, а биржа создает заявку на оставшийся невыполненным объем ордера и у этого ордера будет ID биржи? Получилось что не сталкивался пока что с таким вариантом событий и хотелось бы знать чего ожидать.
- Если разнести на 2 разных класса стратегии логику на покупку и на продажу по одному инструменту, то значения выводимые менеджерами PnL, позиции, задержки и тд придется как-то суммировать?
- И еще скорость работы от разных классов стратегии не возрастет потому как они будут по очереди занимать транзквик?
コメント (12)
ログイン または アカウントを作成, コメントを残すにはログインまたは新規登録してください
Нет. Биржа работает в асихнронном режиме. Тоесть она не сразу выставляет заявку, а присвыивает ей номер после некоторых проверок. В асинхронном режиме Квик не блокирует поток для получения этого самого номера. И выдает номер в последствии через событие. Так что как раз наоборот, в сихнронном режиме Квик не доступен, что я и показал в тестахhttp://stockmarketdotnet.blogspot.com/2010/03/blog-post.html
После окончания работы OnProcess.
"2. После окончания работы OnProcess." Это ответ на вопрос про интервал в стратегии?
TransactionID - это чисто Квик специфик. В биржей общение тоже идет по такому индентификатору, но он другой.
TransID генерируется Stock# -
http://stocksharp.com/doc/help/html/T_Ecng_Trading_BusinessEntities_TransactionIdGenerator.htm
Тогда при выполнении RegisterOrder() в асинхронном режиме от квика придет ID? Мне просто необходимо знать, что заявка отправлена и ее номер для работы логики в моей стратегии.
Да, когда биржа примет заявку, Квик перешлет TransID и биржевой номер.
Заявка отправлена и зарегистрирована - ITrader.NewOrders. Насчет номера - напишите по подробнее.
"Квик перешлет TransID и биржевой номер" Если биржевой номер и есть ID, то этого мне достаточно. В принципе мне нужен любой номер Ordera без разницы TransID или ID, я после RegisterOrder() добавляю его по номеру в список ордеров на исполнение, чтобы постоянно контролировать необходимый объем активных заявок. И это мне нужно делать в классе стратегии чтобы не привысить лимит на активные заявки.
Так я думаю Вы явно идете не той дорогой. Вернее, направление то, но очень окольно. Вот же простое решение:
Strategy.Orders.Where(o => o.State == OrderStates.Active).Count() > maxActiveCount
Да ваш вариант намного проще, но я еще не разбирался с добавлением завок в стратегию и сначала проверял максимальную скорость выставления заявок и возможность работы по меняющимся лимитам на объем активных ордеров.