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


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


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

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

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




6 Ответов
Support

Фотография
Дата: 31.03.2017
Ответить


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

JaguarFX

Фотография
Дата: 11.04.2017
Ответить


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

Knup

Фотография
Дата: 11.04.2017
Ответить


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

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

Support

Фотография
Дата: 11.04.2017
Ответить


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

JaguarFX

Фотография
Дата: 11.04.2017
Ответить


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

Support

Фотография
Дата: 12.04.2017
Ответить


...
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy