RomSunZ
|
Дата: 25.02.2015
Примеры смотрите. Ваши инструменты не подписаны на рыночные данные.
|
|
Спасибо:
|
|
|
|
|
Zabik
|
Дата: 25.02.2015
|
|
|
|
RomSunZ Примеры смотрите. Ваши инструменты не подписаны на рыночные данные. Примеры я смотрю, правда верить им или нет - не знаю. они все-равно не работают. В одних примерах никто на рыночные данные не подписывается, в других подписываются, но и там и там используют BestBid/Ask [confused] Пробовал я уже много чего, вот например так: Код
CommonRobot1.NewSecurities += securities => this.GuiAsync(() =>
{
_sber = securities.FirstOrDefault(s => s.Id == "SBER@TQBR");
_vtbr = securities.FirstOrDefault(s => s.Id == "VTBR@TQBR");
financial.Items.Add(_sber);
financial.Items.Add(_vtbr);
if (_sber != null)
{
CommonRobot1.RegisterMarketDepth(_sber);
CommonRobot1.RegisterSecurity(_sber);
var pri = _sber.BestAsk.Price;
}
if (_vtbr != null)
{
CommonRobot1.RegisterSecurity(_vtbr);
}
});
С той же ошибкой во время выполнения выделяет строчку var pri = _sber.BestAsk.Price; Читаю букварь: "RegisterSecurity - метод. Начать получать новую информацию (например, LastTrade или BestBid) по инструменту." Подскажите по крайней мере причину ошибки. Я так понимаю, что в моем случае BestAsk так и остается равным null, поэтому и ошибка выскакивает? Пробовал так же подписываться и на обновления стакана, присваивал переменной значение внутри него - та же ошибка [crying] . Самое обидно, что это последнее что мне нужно от библиотеки StockSharp, остальное реализуется без нее.
|
|
Спасибо:
|
|
|
|
|
Zabik
|
Дата: 25.02.2015
Ну да, так и есть, написал следующее: Код
CommonRobot1.NewSecurities += securities => this.GuiAsync(() =>
{
_sber = securities.FirstOrDefault(s => s.Id == "SBER@TQBR");
_vtbr = securities.FirstOrDefault(s => s.Id == "VTBR@TQBR");
financial.Items.Add(_sber);
financial.Items.Add(_vtbr);
if (_sber != null)
{
CommonRobot1.RegisterMarketDepth(_sber);
CommonRobot1.RegisterSecurity(_sber);
if (_sber.LastTrade != null)
{
var pri = _sber.LastTrade.Price;
info2.Content = pri.ToString();
}
}
if (_vtbr != null)
{
CommonRobot1.RegisterSecurity(_vtbr);
}
});
Теперь ошибки нет, но и цен нет, значит _sber.LastTrade так и остается равным null [laugh] . Plz help!
|
|
Спасибо:
|
|
|
|
|
Иван З.
|
Дата: 25.02.2015
подпишитесь на Код
CommonRobot1.SecuritiesChanged+= securities =>
и там поищите, может поможет.
|
|
Спасибо:
|
|
|
|
|
Zabik
|
Дата: 25.02.2015
Иван З. подпишитесь на Код
CommonRobot1.SecuritiesChanged+= securities =>
и там поищите, может поможет. Не помогло [blush] Заметил, что ошибка отсутствует, если просить не BestBid.Price, а например _sber.Volume, но выдает все-равно 0
|
|
Спасибо:
|
|
|
|
|
RomSunZ
|
Дата: 25.02.2015
Запустите пример quik sample и если там все работает (получение последней сделки и лучшие цены), посмотрите код и перенесите его в свой робот.
|
|
|
|
|
Zabik
|
Дата: 25.02.2015
RomSunZ Запустите пример quik sample и если там все работает (получение последней сделки и лучшие цены), посмотрите код и перенесите его в свой робот. Так, ну вот уже что-то [biggrin] , спасибо! По дефолту подкачивается всего 5 параметров по инструменту, а вот после нажатия кнопки level1 по выбранному инструменту подкачиваются и остальные параметры и стакан. Конечно при разборе этого примера я не обращал внимания на эту кнопку, щас посмотрю что там спрятано [cool]
|
|
Спасибо:
|
|
|
|
|
Zabik
|
Дата: 25.02.2015
Так, ну нового там ничего нет. Все как и у меня: Код
CommonRobot1.RegisterSecurity(_usd);
CommonRobot1.RegisterTrades(_usd);
В общем поковырялся, вроде заработало, но пока в основном возвращает нули, может потому что биржа уже не работает - завтра посмотрим. А вообще так до конца и не понятно, почему ошибка вылазит именно на BestBid.Price а на просто BestBid нет? Короче, пока надо понять подгружает ли он мне реальные данные или просто по дефолту, но это завтра.
|
|
Спасибо:
|
|
|
|
|
RomSunZ
|
Дата: 26.02.2015
Zabik Так, ну нового там ничего нет. Все как и у меня: Код
CommonRobot1.RegisterSecurity(_usd);
CommonRobot1.RegisterTrades(_usd);
В общем поковырялся, вроде заработало, но пока в основном возвращает нули, может потому что биржа уже не работает - завтра посмотрим. А вообще так до конца и не понятно, почему ошибка вылазит именно на BestBid.Price а на просто BestBid нет? Короче, пока надо понять подгружает ли он мне реальные данные или просто по дефолту, но это завтра. Потому что у Вас BestBid==null
|
|
Спасибо:
|
|
|
|
|
Zabik
|
Дата: 02.03.2015
RomSunZ Потому что у Вас BestBid==null
Поковырявшись понял что так и есть. Но вот почему не могу понять. [blush] От безисходности перепахал под себя пример Sample. Все работает, все цены, объемы и т.п. в таблицу SecurityPicker идут, но видимо с помощью какого-то волшебства, т.к. тут же рядом с этой таблицей пытаюсь вбить в текстбокс _sber.LastTrade.Price и опять эта ошибка, и потому что LastTrade == null. Но как он может быть пустым если в таблицу рядом вот они идут значения по последним сделкам я не понимаю. [cursing] Подскажите, может есть какая-то возможность взглянуть на код этой волшебной таблицы SecurityPicker?
|
|
Спасибо:
|
|
|
|