Михаил, есть вопрос про котирование и событие исполнения заявки: Я в стратегии использую MarketQuotingStrategy как дочернюю торговую стратегию для покупок/продаж по рыночной цене на фортсе. В стратегии необходимо отслеживать момент исполнения заявки, чтобы после этого момента основная стратегия продолжила работу. Должен ли я для этого подписываться на MarketQuotingStrategy.NewMyTrades, или метод OnNewMyTrades моей стратегии будет вызван автоматически? Спасибо.
Комментарии (19)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
При попытке выставления заявки через котирование вылетает ошибка: "Заявка ... не имеет состояния. Котирование продолжается". Что может быть не так?
Асинх режим? Это нормально. Заявка еще не получила состояние. Поэтмоу котирование пока не знает что с ней делать (дожидается принятия биржей).
Вообще дочерняя стратегия так устроена, что родит не продолжает свою работу, пока она не будет исполнена. В случае котирования - пока не реализуется необходимы
Да, режим асинхронный (как в примерах). При выставлении заявка даже в таблицах Квика (версия 5.17) не появляется, поэтому ошибка возникает многократно до тех пор, пока программа вообще не вылетает. Похоже, что возникает ошибка при высталении заявки в Квик. Что-то можно придумать, чтобы выловить эту ошибку?
У меня родительская стратегия вызывается не из менеджера стратегий. Метод OnProcess вызывается самой же стратегией по определенным событиям, поэтому работа при запуске дочерней стратегии не прекращается. Вот я и хотел знать, достаточно ли использовать метод OnNewMyTrades основной стратегии для отслеживания исполнения заявок, или надо подписываться на это событие у дочерней?
А почему заявка то не регистрируется? ITrader.OrdersFailed что нибудь пишет?
Не могу сказать - надо пробовать.
Возникает вот такая ошибка:http://screencast.com/t/M2U3MjE0
Из нее мне не понятно, что я сделал не так. Заявку выставлял как в примере SampleSMA. Единственное, класс стратегии наследовал напрямую от Strategy, а не от TimeFrameStrategy.
Тут чем-то строка транзакции не нравиться Квику... А ручками через Sample можете купить продать контракт?
Все, разобрался. Сам ошибся.
Теперь остался открытым вопрос о перехвате события исполнения заявки после котирования.
Часто при котировании возникает такая ошибка:http://screencast.com/t/OGZlYjIy
У MarketQuotingStrategy сво-во IsForts выставил в true. Похоже, это с этим связано?
И еще небольшой вопрос: как-то можно выставить ограничение на кол-во перестановок при котировании, чтобы если этот процесс затянулся, то вырубать его? А еще лучше котирование проводить до тех пор, пока не исполнилось како-то произволное условие (ситуация в стакане изменилась). Создавать для этого производный класс?
Очень разочаровывает скорость исполнения заявок при котировании. Запускал робота на фьючерсе индекса РТС, и при не самых сильных движения рынка заявка переставляется по три-четыре раза, прежде чем исполняется. И это при том, что к цене первой заявки я добавляю/ отнимаю 10 пунктов. Как можно сократить количество перестановок и заходить в сделку действительно по лучшей цене? Пробовал цену входа брать не из таблицы инструмента, а из стакана (так как он чаще обновляется), но все-равно не помогает. Может, сам Квик можно ускорить, или еще какие-то хитрости есть? Квик и так работает через сервер с plaza2, вроде бы быстрее некуда получать/отправлять данные. Буду благодарен любым советам по решению данной проблемы...
А настройки в ini прописали, чтобы Квик стакан быстрее обновлял?
Да, price-timeout=10 прописал.
Кстати, проверьте, применились ли? Попробуйте вывод перенаправить в Эксель. Так же быстро? Я выложил еще так же файл Program.cs (2). Так же быстро нотификацию выдает? Сам вывод в лог что выдает котировщик? Правильные цены?
Спасибо, проверю.
Михаил, еще пара вопросов:
Правильно ли я понимаю, что лучшую цену он берет из таблицы инструментов, а не из стакана? Стакан обновляется быстрее. Может, из него брать эту цену?