Михаил, есть вопрос про котирование и событие исполнения заявки: Я в стратегии использую MarketQuotingStrategy как дочернюю торговую стратегию для покупок/продаж по рыночной цене на фортсе. В стратегии необходимо отслеживать момент исполнения заявки, чтобы после этого момента основная стратегия продолжила работу. Должен ли я для этого подписываться на MarketQuotingStrategy.NewMyTrades, или метод OnNewMyTrades моей стратегии будет вызван автоматически? Спасибо.
Comentários (19)
Entrar ou Criar conta, Faça login ou cadastre-se para deixar um comentário
При попытке выставления заявки через котирование вылетает ошибка: "Заявка ... не имеет состояния. Котирование продолжается". Что может быть не так?
Асинх режим? Это нормально. Заявка еще не получила состояние. Поэтмоу котирование пока не знает что с ней делать (дожидается принятия биржей).
Вообще дочерняя стратегия так устроена, что родит не продолжает свою работу, пока она не будет исполнена. В случае котирования - пока не реализуется необходимы
Да, режим асинхронный (как в примерах). При выставлении заявка даже в таблицах Квика (версия 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). Так же быстро нотификацию выдает? Сам вывод в лог что выдает котировщик? Правильные цены?
Спасибо, проверю.
Михаил, еще пара вопросов:
Правильно ли я понимаю, что лучшую цену он берет из таблицы инструментов, а не из стакана? Стакан обновляется быстрее. Может, из него брать эту цену?