Здраствуйте.
- Мне необходима максимальная скорость выставления заявок, поэтому был поставлен интервал стратегии 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
Да ваш вариант намного проще, но я еще не разбирался с добавлением завок в стратегию и сначала проверял максимальную скорость выставления заявок и возможность работы по меняющимся лимитам на объем активных ордеров.