public ChartWindow(CandleSeries candleSeries, DateTime from, DateTime to) { InitializeComponent(); if (candleSeries == null) { throw new ArgumentNullException(nameof(candleSeries)); } _candleSeries = candleSeries; _trader = MainWindow.Instance.Trader; Chart.ChartTheme = ChartThemes.ExpressionDark; var area = new ChartArea(); Chart.Areas.Add(area); _candleElem = new ChartCandleElement { AntiAliasing = false, UpFillColor = Colors.White, UpBorderColor = Colors.Black, DownFillColor = Colors.Black, DownBorderColor = Colors.Black, }; area.Elements.Add(_candleElem); _manager = new CandleManager(_trader); _manager.Processing += ProcessNewCandles; _manager.Start(_candleSeries, from, to); }
private void ConnectClick(object sender, RoutedEventArgs e) { if (!_isConnected) { if (Login.Text.IsEmpty()) { MessageBox.Show(this, LocalizedStrings.Str2974); return; } else if (Password.Password.IsEmpty()) { MessageBox.Show(this, LocalizedStrings.Str2975); return; } if (Trader == null) { // create connector //Trader = new FixTrader(); Trader = new SpbExTrader(); Trader.Restored += () => this.GuiAsync(() => { // update gui labes ChangeConnectStatus(true); MessageBox.Show(this, LocalizedStrings.Str2958); }); // subscribe on connection successfully event Trader.Connected += () => { // set flag (connection is established) _isConnected = true; // update gui labes this.GuiAsync(() => ChangeConnectStatus(true)); // subscribe on news Trader.RegisterNews(); }; // subscribe on connection error event Trader.ConnectionError += error => this.GuiAsync(() => { // update gui labes ChangeConnectStatus(false); MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2959); }); Trader.Disconnected += () => this.GuiAsync(() => ChangeConnectStatus(false)); // subscribe on error event Trader.Error += error => this.GuiAsync(() => MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2955)); Trader.NewSecurity += security => _securitiesWindow.SecurityPicker.Securities.Add(security); Trader.NewMyTrade += trade => _myTradesWindow.TradeGrid.Trades.Add(trade); Trader.NewTrade += trade => _tradesWindow.TradeGrid.Trades.Add(trade); Trader.NewOrder += order => _ordersWindow.OrderGrid.Orders.Add(order); Trader.NewPortfolio += portfolio => { _portfoliosWindow.PortfolioGrid.Portfolios.Add(portfolio); // subscribe on portfolio updates Trader.RegisterPortfolio(portfolio); }; Trader.NewPosition += position => _portfoliosWindow.PortfolioGrid.Positions.Add(position); // subscribe on error of order registration event Trader.OrderRegisterFailed += _ordersWindow.OrderGrid.AddRegistrationFail; // subscribe on error of order cancelling event Trader.OrderCancelFailed += OrderFailed; // subscribe on error of stop-order cancelling event Trader.StopOrderCancelFailed += OrderFailed; Trader.MassOrderCancelFailed += (transId, error) => this.GuiAsync(() => MessageBox.Show(this, error.ToString(), LocalizedStrings.Str716)); Trader.NewNews += news => _newsWindow.NewsPanel.NewsGrid.News.Add(news); // set market data provider _securitiesWindow.SecurityPicker.MarketDataProvider = Trader; // set news provider _newsWindow.NewsPanel.NewsProvider = Trader; ShowSecurities.IsEnabled = ShowTrades.IsEnabled = ShowMyTrades.IsEnabled = ShowOrders.IsEnabled = ShowPortfolios.IsEnabled = true; } Trader.Login = Login.Text; Trader.Password = Password.SecurePassword; Trader.Config = NetworkCfg.SelectedItem as SpbExMessageAdapter.NetworkConfig; //Trader.ServerAddress = new IPEndPoint(IPAddress.Parse(Address.Text), int.Parse(Port.Text)); // clear password box for security reason //Password.Clear(); Trader.Connect(); } else { Trader.UnRegisterNews(); Trader.Disconnect(); } }