Регистрация инструмента через Connector.RegisterSecurity(Security)

Регистрация инструмента через Connector.RegisterSecurity(Security)
Atom
3/31/2017
Knup


Здравствуйте,

Есть ли в S# возможность подписаться на событие успешной регистрации инструмента?
Мне нужно значение ГО и мин/макс значения цены фьючера _future. На сколько понял, чтобы эти данные были не null нужно инструмент предварительно зарегистрировать:
Connector.RegisterSecurity(_future);

Но видимо данные регистрируемого инструмента приходят не сразу и после исполнения этого метода параметры BestBid, MarginSell, MinPrice и т.д. некоторое время остаются null. Приложение падает, когда после регистрации я начинаю манипулировать с этими параметрами.
Как решить данную проблему?


Support

Avatar
Date: 3/31/2017
Reply


Проверять значение этих параметров на null...
Thanks:

JaguarFX

Avatar
Date: 4/11/2017
Reply


Известная проблема, была решена мной так: при старте стратегии по расписанию (в 9:59) из сохраненного списка инструментов (WarmUpList) генерируются объекты вида Security и передаются Connector.RegisterSecurity. Если затем в течение дня по ним возникает сделка, то к это моменту все данные уже нормально получены с вероятностью 99,9%. Исключения конечно составляют сильные рывки рынка, как при открытии 7 апреля, они как раз и есть оставшиеся 0,1%. В такой ситуации приходится ставить заявки по рынку, что в целом оправдано, т.к. при такой волатильности лимитные заявки с большой вероятностью остаются неисполнными, рынок уходит..
Thanks:

Knup

Avatar
Date: 4/11/2017
Reply


Смысл в том, что делаю транслятор сделок с одного счёта на другой. Подписываюсь на событие изменения портфеля счёта источника. Но опять же - заранее не известно сделка по какому инструменту придёт от счёта источника - приходится регистрировать инструмент в реальном времени, как сделка от него пришла.

Параметры через на null проверять можно и пропускать дальнейшие действия, если они null, то повторного события изменения портфеля счёта источника уже не будет. Что ж, придётся каждую секунду-две проверять портфель на предмет его изменения, но тогда и смысл событийной модели теряется. Сделка от источника пришла - регистрируем инструмент, естественно все параметры инструмента будут null. Через секунду опять пробуем исполнить транслируемую сделку по счёту приёмнику. Т.е. реально сделки по новым незарегистрированным инструментам будут проходить с запаздыванием. Не регистрировать же все 20000 инструментов квика заранее
Thanks:

Support

Avatar
Date: 4/11/2017
Reply


1. Какую модель использовать зависит от типа задачи.., и нет нечего плохого в "опросе" через определенный интервал...
2. Вы можете использовать другие события (SecuritiesChanged, ValuesChanged, NewTrades)
3. Опишите Вашу задачу поподробнее, мы подскажем оптимальный способ ее решения...
Thanks:

JaguarFX

Avatar
Date: 4/11/2017
Reply


Если набор инструментов не ограничен, то можно исходить из ликвидности и/или исторической частоты сделок на копируемом счете - выбрать 10ку наиболее часто встречающихся (если доступна история) или ликвидных (например на Фортс их как раз с десяток) и предзагружать список как описано мной выше. А по остальным брать цену сделки от источника и расширять ее на 10% в сторону стакана, это и будет 'рыночная заявка'.
Thanks:

Support

Avatar
Date: 4/12/2017
Reply


...
Thanks:


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy