NullReferenceException при подаче заявки


NullReferenceException при подаче заявки
Atom
4/29/2013


При подаче заявки вылетает NullReferenceException со ссылкой на строчку кода:

Code

var lastPrice = security.LastTrade.Price;


В Visual Studio видно, что почему-то у security поле _lastTrade = null? Где зарыта собака?

Спасибо.

Tags:


Thanks:


Garry

Avatar
Date: 5/1/2013
Reply


Из приведенного куска не понятно, где зарыта. security это что, как определяется, откуда берется?
Thanks:

Lipot

Avatar
Date: 5/1/2013
Reply


После подключения к Plaza получаю коллекцию инструментов(_securityList) через метод UpdateSecurityList:
Code

Trader.NewSecurities += securities =>
                            this.GuiAsync(() =>
                            {
                                _securitiesWindow.AddSecurities(securities);

                                //Заполняем Combobox "Инструмент" найденными инструментами
                                foreach (var security in securities.Where(security => security.Name.StartsWith("Фьючерсный")))
                                {
                                    Securities.Items.Add(security);
                                }

                                //Заполняем коллекцию инструментов
                                UpdateSecurityList();
                                UpdateMarginPrice(_securityList);

                                //Делаем активным первый элемент списка
                                Securities.SelectedIndex = 0;
                            });
							
		/// <summary>
        /// Метод обновления списка инструментов
        /// </summary>
        private void UpdateSecurityList()
        {
            _securityList.Clear();

            if (InstrumentOnly.IsChecked != null && (bool)InstrumentOnly.IsChecked)
            {
                _securityList.Add((Security)Securities.SelectedItem);
            }
            else
            {
                foreach (Security security in Securities.Items)
                {
                    if (security.ExpiryDate >= _nowTime.AddDays(2))
                    {
                        if (security.ExpiryDate <= _nowTime.AddMonths(3))
                            if (security.Code.StartsWith("GZ") || security.Code.StartsWith("GM"))
                            {
                                _securityList.Add(security);
                            }

                    }
                    else
                    {
                        if (security.ExpiryDate > _nowTime.AddDays(3) && security.ExpiryDate <= _nowTime.AddDays(3).AddMonths(3))
                            if (security.Code.StartsWith("GZ") || security.Code.StartsWith("GM"))
                            {
                                _securityList.Add(security);
                            }


                    }
                }
            }

        }


Передаю коллекцию в стратегию через конструктор и дальше уже в самой стратегии через оператор foreach (var security in _securityList) создаю заявку:
Code

                    var lastPrice = security.LastTrade.Price;

                    var orderBuy = new Order
                    {
                        Type = OrderTypes.Limit,
                        ExpiryDate = DateTime.MaxValue,
                        Volume = Volume,
                        Price = lastPrice,
                        Portfolio = base.Portfolio,
                        Security = security,
                        Direction = OrderDirections.Buy,
                    };


Буду благодарен за любые комментарии.
Thanks:

Garry

Avatar
Date: 5/1/2013
Reply


Ну если в соседней ветке все верно, то коннектор не работает, соответственно нет данных.
Thanks:


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy