NullReferenceException при подаче заявки
Atom Ответить
29.04.2013


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

Code

var lastPrice = security.LastTrade.Price;


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

Спасибо.

Теги:


Спасибо:




3 Ответов
Garry

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


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

Lipot

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


После подключения к 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,
                    };


Буду благодарен за любые комментарии.
Автор топика
Спасибо:

Garry

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


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


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

loading
clippy