← Zurück

StockSharp.BusinessEntities.Security

Доброго времени суток. Подскажите, по какой причине свойства BestBid, BestAsk и многие другие класса Security передают нулевое значение при выражениях типа: decimal X = Convert.ToDecimal(Security.BestBid);

При этом такое выражение заработало: string Id = Convert.ToString(Security.Id) Quik 7.7.0.89, S# последней версии. Заранее спасибо за помощь!

War dieses Thema hilfreich?

Thema teilen

Kommentare (9)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Slepoy
Slepoy

Так BestBid это не число, а объект типа класса Quote. Это котировка стакана, у неё есть цена, объём и другие свойства. Нельзя так просто сконвертировать данный объект в число типа декимал. Если нужна цена котировки, то там вообще конвертация не нужна, нужно просто доступится к свойству Price, т.е. записать: decimal X = Security.BestBid.Price;

klim95vlad
klim95vlad Autor

Slepoy: Так BestBid это не число, а объект типа класса Quote. Это котировка стакана, у неё есть цена, объём и другие свойства. Нельзя так просто сконвертировать данный объект в число типа декимал. Если нужна цена котировки, то там вообще конвертация не нужна, нужно просто доступится к свойству Price, т.е. записать: decimal X = Security.BestBid.Price;

Спасибо за совет! Но попробовал сделать, как Вы сказали, а программа выдает ошибку и ругается, что у Security.BestBid.Price значение null. И в отладке значения показывает вот так вот

Slepoy
Slepoy

klim95vlad: Спасибо за совет! Но попробовал сделать, как Вы сказали, а программа выдает ошибку и ругается, что у Security.BestBid.Price значение null. И в отладке значения показывает вот так вот Ну так и должно быть, если экспорт стакана(левел2) или экспорт "таблицы текущих параметров(левел1)" - не включён ))). Ну или просто выбран не тот сбер, в демке Квика их приходит куча. Для включения экспорта пропиши:
trader.RegisterSecurity(Security); - таблица текущих параметров(текущие торги)
trader.RegisterMarketDepth(Security); - стакан
trader.RegisterTrades(Security); - таблица обезличенных сделок

klim95vlad
klim95vlad Autor

Slepoy: Для включения экспорта пропиши: trader.RegisterSecurity(Security); - таблица текущих параметров(текущие торги) trader.RegisterMarketDepth(Security); - стакан trader.RegisterTrades(Security); - таблица обезличенных сделок

Это которые методы класса Connector? Подскажите, пожалуйста, как нужно прописать, не могу сообразить.

klim95vlad
klim95vlad Autor

klim95vlad: trader.RegisterSecurity(Security); - таблица текущих параметров(текущие торги) trader.RegisterMarketDepth(Security); - стакан trader.RegisterTrades(Security); - таблица обезличенных сделок Прописал вот так, все равно выдает null

Trader = new QuikTrader(QuikTerminal.GetDefaultPath()) ;

Trader.Connect(); trader = new Connector(); trader = Trader;

Security1= new Security(); Security1= (Security)combobox.SelectedItem;

trader.RegisterSecurity(Security1); trader.RegisterMarketDepth(Security1); trader.RegisterTrades(Security1);

decimal x= Security1.BestBid.Price;

На последней строке необработанное исключение типа "System.NullReferenceException"

Slepoy
Slepoy

У тебя заявки в Квик отправляются? Вообще робот с Квиком коннектится?

klim95vlad
klim95vlad Autor

Slepoy: У тебя заявки в Квик отправляются? Вообще робот с Квиком коннектится?

Да.

Slepoy
Slepoy

klim95vlad:

Slepoy: У тебя заявки в Квик отправляются? Вообще робот с Квиком коннектится? Да. Ну я тогда даже и не знаю. Иногда бывает, что после регистрации стакан первым срезом присывлает нулевые биды и аски, ну типа не успевает заполнится. Короче, попробуй подписаться на событие изменения стакана, в подписываемом методе проверь пришедший стакан на наличие элементов, и далее именно в этом методе инициализируй переменную decimal Х. Кстати, там личший Бид/Аск можно вынуть прямо из пришедшего стакана. Если это не проканает, то обращайся в техподдержку, надо смотреть код. Пусть парятся )))

klim95vlad
klim95vlad Autor

Slepoy:

klim95vlad:

Slepoy: У тебя заявки в Квик отправляются? Вообще робот с Квиком коннектится? Да. Ну я тогда даже и не знаю. Иногда бывает, что после регистрации стакан первым срезом присывлает нулевые биды и аски, ну типа не успевает заполнится. КОроче, попробуй подписаться на событие изменения стакана, и именно в этой подписке инициализируй переменную decimal Х. Кстати, там личшийБид/Аск можн овынуть прямо из пришедшего стакана. Если это не проканает, то обращайся в техподдержку, надо смотреть код. Пусть парятся )))

Большое спасибо!