Не получается получить BestAsk и BestBid цены
Написал небольшую программу, которая коннектится к Quik, подгружает мои портфели и два необходимых мне инструмента: VTBR и SBER, а так же позволяет купить/продать данные бумаги по рынку.
Все было хорошо, пока мне не понадобились BestAsk.Price и BestBid.Price. Причем чтобы я не делал: пытался присвоить цену переменной или купить/продать по бестбид/аск цене - получаю ошибку:
Вот мой код, что я делаю не так?
Code
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Net;
using System.Security;
using MoreLinq;
using Ecng.Common;
using Ecng.Collections;
using Ecng.ComponentModel;
using Ecng.Serialization;
using Ecng.Xaml;
using StockSharp.Quik;
using StockSharp.Algo;
using StockSharp.BusinessEntities;
using StockSharp.Fix;
using StockSharp.Logging;
using StockSharp.Messages;
using StockSharp.Quik.Lua;
namespace Robot
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private static Security _sber;
private static Security _vtbr;
private QuikTrader CommonRobot1;
private void Connect_Click(object sender, RoutedEventArgs e)
{
CommonRobot1 = new QuikTrader
{
LuaFixServerAddress = "127.0.0.1:5001".To<EndPoint>(),
LuaLogin = "quik",
LuaPassword = "quik".To<SecureString>()
};
CommonRobot1.NewPortfolios += portfolios => this.GuiAsync(() =>
{
portf.ItemsSource = CommonRobot1.Portfolios;
});
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);
});
CommonRobot1.Connected += () =>
{
CommonRobot1.StartExport();
};
CommonRobot1.Connect();
}
private void Buy_Click(object sender, RoutedEventArgs e)
{
int vol;
if (String.IsNullOrEmpty(volume.Text))
vol = 1;
else
vol = int.Parse(volume.Text);
var order = new Order
{
Portfolio = (Portfolio)portf.SelectedItem,
Security = _vtbr, //(Security)financial.SelectedItem,
Volume = vol,
Price = _vtbr.BestBid.Price,
//Type = OrderTypes.Market,
Direction = Sides.Buy,
};
CommonRobot1.RegisterOrder(order);
}
private void Sell_Click(object sender, RoutedEventArgs e)
{
int vol;
if (String.IsNullOrEmpty(volume.Text))
vol = 1;
else
vol = int.Parse(volume.Text);
var order = new Order
{
Portfolio = (Portfolio)portf.SelectedItem,
Security = (Security)financial.SelectedItem,
Volume = vol,
Type = OrderTypes.Market,
Direction = Sides.Sell,
};
CommonRobot1.RegisterOrder(order);
}
}
}