Насколько я понимаю, сейчас стратегия TheorPriceQuotingStrategy определяет, нужно ли что-либо делать, по правилу изменения стакана котируемого опциона. Хотелось бы, чтобы было аналогичное правило, но которое срабатывает при изменении стакана базового актива. Это возможно сделать, не имея доступа к TheorPriceQuotingStrategy?
Comments (19)
Login or Create account, Log in or register to leave a comment
Может лучше на событие изменения инструмента (опциона)? Если мы котируем не по IV, зачем нам базовый актив? Имеет смысл только в том случае, если мы теор цену сами расчитываем. Вы ее сами расчитываете или берете из терминала?
Да, я ее сам рассчитываю, так как в терминале она обновляется раз в 30 секунд где-то, а за это время цена базового актива далеко убежать может...
Михаил, а как организована логика правила на изменение стакана?
пробую что-то типа
не работает... Я правильно понимаю, что через метод GetNewPrice() определяется цена как теоретическая, сдвинутая на bestPriceOffset. И заявка переставляется, если разница между ценой заявки и GetNewPrice() превысит theorPriceOffset?
if (NeedRegister()) { RegisterQuotingOrder(Order); } if (NeedReRegister(GetNewPrice(),GetNewVolume())) { ReRegisterOrder(Order,Order.ReRegisterClone(GetNewPrice(), GetNewVolume())); }
В переопределенном OnStarting
Соответственно
Этот метод должен быть таким же, как и в правиле на изменение стакана опциона. Однако мне не до конца понятна логика работы котировальщика. В частности, GetNewPrice() должен выдавать цену с учтом оффсета, или оффсет прибавляется при регистрации заявки и т.п.
Как правильно в версии 4.0.6 запускать котирование при изменении базового актива?
this .When(UnderlyingSecurity.MarketDepthChanged()).Do(ProcessQuoting); ?
нужно ли это правило добавить в коллекцию GetNotificationRules()?
Чтобы котирование не производилось по изменению стакана инструмента, достаточно ли удалить правило из коллекции GetNotificationRules()?
Или напрямую вызываете ProcessQuoting или переопределяете GetNotificationRules
Делаю так:
При этом ProcessQuoting вызывается, но котирования не происходит, то есть методы NeedRegister, GetNewPrice и др. не вызываются. Каким образом в версии 4.0.6 можно привязать котирование к изменению стакана базового актива?
А в лог что-нибудь пишется? Само правило срабатывает?
Лог следующий:
При этом методы NeedRegister, GetNewPrice не вызывались ни разу.
А если не удалять стандартные правила, и не добавлять свое, то вызывается только NeedFinish, и больше ничего.
Методы NeedRegister GetNewVolume в этом случае вызываются?
ITrader.ProcessDataError что нибудь выводит? NeedFinish точно вызывается (+ что возвращает базовая реализация)?
ITrader.ProcessDataError посмотрю когда откроются торги) NeedFinish вызывается точно и возвращает false. Но когда я вместо 2-х правил добавлял свое, NeedFinish не вызывался (при этом ProcessQuoting вызывался)
ITrader.ProcessDataError молчит.
Какая-то фантастика. Если NeedFinish возвращает false, то следуюим вызывается GetNewPrice. Вы сейчас логи прикладываете стратегии без ваших модификаций?
Да... Сам метод GetNewPrice переопределен, но это не должно мешать, т.к он не вызывается даже.
Нашли. Сегодня вечером на КП.