Здравствуйте,
Есть ли в S# возможность подписаться на событие успешной регистрации инструмента? Мне нужно значение ГО и мин/макс значения цены фьючера _future. На сколько понял, чтобы эти данные были не null нужно инструмент предварительно зарегистрировать: Connector.RegisterSecurity(_future);
Но видимо данные регистрируемого инструмента приходят не сразу и после исполнения этого метода параметры BestBid, MarginSell, MinPrice и т.д. некоторое время остаются null. Приложение падает, когда после регистрации я начинаю манипулировать с этими параметрами. Как решить данную проблему?
Kommentare (6)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
Проверять значение этих параметров на null...
Известная проблема, была решена мной так: при старте стратегии по расписанию (в 9:59) из сохраненного списка инструментов (WarmUpList) генерируются объекты вида Security и передаются Connector.RegisterSecurity. Если затем в течение дня по ним возникает сделка, то к это моменту все данные уже нормально получены с вероятностью 99,9%. Исключения конечно составляют сильные рывки рынка, как при открытии 7 апреля, они как раз и есть оставшиеся 0,1%. В такой ситуации приходится ставить заявки по рынку, что в целом оправдано, т.к. при такой волатильности лимитные заявки с большой вероятностью остаются неисполнными, рынок уходит..
Смысл в том, что делаю транслятор сделок с одного счёта на другой. Подписываюсь на событие изменения портфеля счёта источника. Но опять же - заранее не известно сделка по какому инструменту придёт от счёта источника - приходится регистрировать инструмент в реальном времени, как сделка от него пришла.
Параметры через на null проверять можно и пропускать дальнейшие действия, если они null, то повторного события изменения портфеля счёта источника уже не будет. Что ж, придётся каждую секунду-две проверять портфель на предмет его изменения, но тогда и смысл событийной модели теряется. Сделка от источника пришла - регистрируем инструмент, естественно все параметры инструмента будут null. Через секунду опять пробуем исполнить транслируемую сделку по счёту приёмнику. Т.е. реально сделки по новым незарегистрированным инструментам будут проходить с запаздыванием. Не регистрировать же все 20000 инструментов квика заранее
Если набор инструментов не ограничен, то можно исходить из ликвидности и/или исторической частоты сделок на копируемом счете - выбрать 10ку наиболее часто встречающихся (если доступна история) или ликвидных (например на Фортс их как раз с десяток) и предзагружать список как описано мной выше. А по остальным брать цену сделки от источника и расширять ее на 10% в сторону стакана, это и будет 'рыночная заявка'.
...