Security.BestAsk == null
Atom Ответить
16.11.2011


Часто при первом обращении к последней сделке или к лучшему биду, выскакиевет ошибка "Ссылка на объект не указывает на экземпляр объекта". При повторном обращении объект есть на месте и все работает корректно.

Теги:


Спасибо:




11 Ответов
Alexander

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


vader Перейти
Часто при первом обращении к последней сделке или к лучшему биду, выскакиевет ошибка "Ссылка на объект не указывает на экземпляр объекта". При повторном обращении объект есть на месте и все работает корректно.


Видимо, они ещё не загрузились при первом обращении.
Спасибо:

vader

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


А как можно определить, когда они загрузятся?
Чтобы эксепшоны не летали?
Автор топика
Спасибо:

Alexander

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


vader Перейти
А как можно определить, когда они загрузятся?
Чтобы эксепшоны не летали?


Если загрузилась хоть одна сделка - значит Security.LastTrade не null.
Quik поточно передаёт данные по DDE, он их не заканчивает передавать.
Логично предположить, что после старта экспорта у нас всё вскоре проставляется. Насколько вскоре - несколько секунд может доходить, DDE не такой шустрый как хотелось бы, для HFT не предназначен.

На null проверка не лишняя, имхо.
Спасибо:

vader

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


Заметил такую вещь.
Вообще обращение происходит в момент нажатия на кнопку.
если в первый раз вылетел эксепшон,то после нажатия второй раз он не вылетает, все происходит правильно.
Если перед нажатием кнопки подождать 10 секнд(в расчет на то что данные прогрузятся) эксепшон вылетит все равно.
Экспорт ДДЕ запускается перед нажатием кнопки.
Автор топика
Спасибо:

Alexander

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


vader Перейти
Заметил такую вещь.
Вообще обращение происходит в момент нажатия на кнопку.
если в первый раз вылетел эксепшон,то после нажатия второй раз он не вылетает, все происходит правильно.
Если перед нажатием кнопки подождать 10 секнд(в расчет на то что данные прогрузятся) эксепшон вылетит все равно.
Экспорт ДДЕ запускается перед нажатием кнопки.


Сделайте вывод в лог события NewTrades и обращения к Security.LastTrade (с указанием времени).
Спасибо:

vader

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


45400392 16.11.2011 19:36:39
45400759 16.11.2011 19:36:39
45400774 16.11.2011 19:36:39
45401121 16.11.2011 19:36:39
45401254 16.11.2011 19:36:39
45402485 16.11.2011 19:36:39
45402735 16.11.2011 19:36:39
45403663 16.11.2011 19:36:39
45403891 16.11.2011 19:36:39
45404257 16.11.2011 19:36:39
45404276 16.11.2011 19:36:39
45404310 16.11.2011 19:36:39
45404966 16.11.2011 19:36:39
45406613 16.11.2011 19:36:39
45407508 16.11.2011 19:36:39
45407553 16.11.2011 19:36:39
45407569 16.11.2011 19:36:39
45407896 16.11.2011 19:36:39
45408181 16.11.2011 19:36:39
45410170 16.11.2011 19:36:39
45410171 16.11.2011 19:36:39
45410348 16.11.2011 19:36:39
45410529 16.11.2011 19:36:39
45414371 16.11.2011 19:36:39
45414444 16.11.2011 19:36:39
45416006 16.11.2011 19:36:39
45418062 16.11.2011 19:36:39
45418250 16.11.2011 19:36:39
45442295 16.11.2011 19:36:39
45452116 16.11.2011 19:36:39
45453425 16.11.2011 19:36:39
45454071 16.11.2011 19:36:39
45461937 16.11.2011 19:36:39
45461972 16.11.2011 19:36:39
45462884 16.11.2011 19:36:39
45463923 16.11.2011 19:36:39
45463975 16.11.2011 19:36:39
45464653 16.11.2011 19:36:39
45468840 16.11.2011 19:36:39
45470391 16.11.2011 19:36:39
45490130 16.11.2011 19:36:39
45502265 16.11.2011 19:36:39
45518137 16.11.2011 19:36:39
45519552 16.11.2011 19:36:39
45523205 16.11.2011 19:36:39
45523237 16.11.2011 19:36:39
45523348 16.11.2011 19:36:39
45523362 16.11.2011 19:36:39
45523427 16.11.2011 19:36:39
45524721 16.11.2011 19:36:39
45524828 16.11.2011 19:36:39
45524888 16.11.2011 19:36:39
45524976 16.11.2011 19:36:39
45525044 16.11.2011 19:36:39
45525087 16.11.2011 19:36:39
45525096 16.11.2011 19:36:39
45529557 16.11.2011 19:36:39
45529561 16.11.2011 19:36:39
45531562 16.11.2011 19:36:39
45531583 16.11.2011 19:36:39
45537414 16.11.2011 19:36:39
45551153 16.11.2011 19:36:39
45551154 16.11.2011 19:36:39
45551705 16.11.2011 19:36:39
45564005 16.11.2011 19:36:39
45570963 16.11.2011 19:36:39
45570970 16.11.2011 19:36:39
45579735 16.11.2011 19:36:39
45579791 16.11.2011 19:36:39
45579844 16.11.2011 19:36:39
45596928 16.11.2011 19:36:39
45601544 16.11.2011 19:36:39
45602606 16.11.2011 19:36:39
45602654 16.11.2011 19:36:39
45625419 16.11.2011 19:36:39
45626269 16.11.2011 19:36:39
45640580 16.11.2011 19:36:39
45643257 16.11.2011 19:36:39
45643266 16.11.2011 19:36:39
45644114 16.11.2011 19:36:39
45644146 16.11.2011 19:36:39
45644314 16.11.2011 19:36:39
45644319 16.11.2011 19:36:39
45644374 16.11.2011 19:36:39
45661649 16.11.2011 19:36:39
45663573 16.11.2011 19:36:39
45664456 16.11.2011 19:36:39
45665663 16.11.2011 19:36:39
45665784 16.11.2011 19:36:39
45666019 16.11.2011 19:36:39
45666049 16.11.2011 19:36:39
45673018 16.11.2011 19:36:39
45678967 16.11.2011 19:36:39
45680214 16.11.2011 19:36:39
45680262 16.11.2011 19:36:39
45680453 16.11.2011 19:36:39
45680478 16.11.2011 19:36:39
45682695 16.11.2011 19:36:39
45682700 16.11.2011 19:36:39
45682882 16.11.2011 19:36:39
45689789 16.11.2011 19:36:39
45694624 16.11.2011 19:36:39
45697300 16.11.2011 19:36:39
45697655 16.11.2011 19:36:39
45702026 16.11.2011 19:36:39
45703439 16.11.2011 19:36:39
45703451 16.11.2011 19:36:39
45706532 16.11.2011 19:36:39
45717888 16.11.2011 19:36:39
45718122 16.11.2011 19:36:39
45720915 16.11.2011 19:36:39
45721058 16.11.2011 19:36:39
45721116 16.11.2011 19:36:39
LastTrade 45721116 16.11.2011 19:36:42
LastTrade 45721116 16.11.2011 19:36:43

Я нажал на кнопку, вылетел эксепшон и с ним появился лог - LastTrade 45721116 16.11.2011 19:36:42
Сразу нажа второй раз - все прошло хорошо - лог такой- LastTrade 45721116 16.11.2011 19:36:43
Все время в логах получено через вызов DateTime.New
Автор топика
Спасибо:

Alexander

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


Если у вас в лог вывелся Exception по LastTrade, то как вы его тут же смогли распечатать? :)
Приведите Stack Trace.
Спасибо:

vader

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


Лог

46228656 18.11.2011 15:31:47
46229702 18.11.2011 15:31:47
46229709 18.11.2011 15:31:47
46230899 18.11.2011 15:31:47
46231024 18.11.2011 15:31:47
46231058 18.11.2011 15:31:47
46231070 18.11.2011 15:31:47
46231097 18.11.2011 15:31:47
46233094 18.11.2011 15:31:47
46233798 18.11.2011 15:31:47
46259438 18.11.2011 15:31:47
46263921 18.11.2011 15:31:47
LastTrade 46263921 18.11.2011 15:31:50
LastTrade 46263921 18.11.2011 15:31:53

Код, вызывающий ошибку

Код

private void SetStartExpertPrice()
		{
			System.Diagnostics.Debug.WriteLine("LastTrade " + Security.LastTrade.Id.ToString() + " " + DateTime.Now.ToString());
			decimal aaa = Security.LastTrade.Price;
			
			if(Security.LastTrade != null && Security.LastTrade.Time.AddMinutes(_validTimeForLastTrade) >= DateTime.Now){
				_expertPrice = new ExpertPrice(Security.LastTrade);
			}
			else{
				_expertPrice = new ExpertPrice((Security.BestAsk.Price + Security.BestBid.Price) / 2, DateTime.Now);
			}
			this.lblPrice.Content = _expertPrice.Price;
		}




Ошибка, которая вылетела при первом нажатии. Также при этом была выведена запись в лог(предпоследняя строка) -
LastTrade 46263921 18.11.2011 15:31:50

строка. которая вызвала ошибку
Код

_expertPrice = new ExpertPrice((Security.BestAsk.Price + Security.BestBid.Price) / 2, DateTime.Now);

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

Alexander

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


Так, стоп. Вначале вы говорили что падает в том числе при обращении к последней сделки.
Сейчас же приводите код на котором падает при обращении к BestAsk \ BestBid.
Давайте либо то либо другое.

Если всё же речь о BestAsk \ BestBid - запущен ли экспорт стакана?
Также распечатайте размер стакана (размер массивов Asks и Bids, распечатайте BestBid и BestAsk перед обращением. сделайте проверку на null перед печатью)
Спасибо:

vader

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


15795606 22.11.2011 19:44:26
15797742 22.11.2011 19:44:26
15799884 22.11.2011 19:44:26
15800184 22.11.2011 19:44:26
15801671 22.11.2011 19:44:26
15804911 22.11.2011 19:44:26
15804914 22.11.2011 19:44:26
15808007 22.11.2011 19:44:26
15811279 22.11.2011 19:44:26
15813304 22.11.2011 19:44:26
15814551 22.11.2011 19:44:26
15821865 22.11.2011 19:44:26
15823016 22.11.2011 19:44:26
15823983 22.11.2011 19:44:26
15824023 22.11.2011 19:44:26
15826239 22.11.2011 19:44:26
Asks.Count= 0 Bids.Count= 0
There is no BestAsk
There is no BestBid

Здесь вылетела ошибка. // Это я вписал руками

Asks.Count= 15 Bids.Count= 20
BestAsk.Price= 31629
BestBid.Price= 31584

Код
Код

private void SetStartExpertPrice()
		{
			if(Security.LastTrade != null && Security.LastTrade.Time.AddMinutes(_validTimeForLastTrade) >= DateTime.Now){
				_expertPrice = new ExpertPrice(Security.LastTrade);
			}
			else{

				MarketDepth myGlass = MainWindow.Instance.Trader.GetMarketDepth(Security);
				string info = "";
				info += "Asks.Count= " + myGlass.Asks.Count() + " Bids.Count= " + myGlass.Bids.Count() + "\n";
				if(Security.BestAsk != null){
					info += "BestAsk.Price= " + Security.BestAsk.Price + "\n";
				}
				else{
					info += "There is no BestAsk" + "\n";
				}
				if(Security.BestBid != null){
					info += "BestBid.Price= " + Security.BestBid.Price + "\n";
				}
				else{
					info += "There is no BestBid" + "\n";
				}
				System.Diagnostics.Debug.WriteLine(info);
				_expertPrice = new ExpertPrice((Security.BestAsk.Price + Security.BestBid.Price) / 2, DateTime.Now);
			}
			this.lblPrice.Content = _expertPrice.Price; //Строка 131, на ней вылетела ошибка.
		}



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

Alexander

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


Ну так у вас стакан ещё пустой, а вы пытаетесь получить данные из него.
Естественно падает, ничего удивительного.
Спасибо:


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

loading
clippy