StockSharp.BusinessEntities.Security
Atom Ответить
26.01.2017


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


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

Теги:


Спасибо:




9 Ответов
Slepoy

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


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

klim95vlad

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


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


Спасибо за совет! Но попробовал сделать, как Вы сказали, а программа выдает ошибку и ругается, что у Security.BestBid.Price значение null. И в отладке значения показывает вот так вот${description}
image8652.png 79 KB (1)
Автор топика
Спасибо:

Slepoy

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


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

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

klim95vlad

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


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


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

klim95vlad

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


Slepoy Перейти
[quote=klim95vlad;38991]
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

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


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

klim95vlad

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


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


Да.
Автор топика
Спасибо:

Slepoy

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


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

Да.

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

klim95vlad

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


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

Да.

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


Большое спасибо!
Автор топика
Спасибо:


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

loading
clippy