Ejemplo n.º 1
0
		private void ConnectClick(object sender, RoutedEventArgs e)
		{
			// создаем подключение
			_trader = new AlfaTrader { LogLevel = LogLevels.Debug };

			_logManager.Sources.Add(_trader);

			// подписываемся на ошибку обработки данных (транзакций и маркет)
			_trader.Error += error =>
				this.GuiAsync(() => MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2955));

			// подписываемся на ошибку подписки маркет-данных
			_trader.MarketDataSubscriptionFailed += (security, type, error) =>
				this.GuiAsync(() => MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2956Params.Put(type, security)));
			
			_trader.NewSecurities += securities =>
			{
				this.GuiAsync(() => _securitiesSource.AddRange(securities));

				// начинаем получать текущие сделки (для построения свечек в реальном времени)

				// альфа не выдержит нагрузки получения сделок по всем инструментам
				// нужно подписываться только на те, которые необходимы
				// securities.ForEach(_trader.RegisterTrades);
			};

			_trader.NewPortfolios += portfolios => portfolios.ForEach(_trader.RegisterPortfolio);

			_trader.Connected += () =>
			{
				this.GuiAsync(() => ConnectBtn.IsEnabled = false);
			};

			_trader.ConnectionError += error =>
			{
				this.GuiAsync(() => MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2959));
			};

			_trader.Connect();
		}
Ejemplo n.º 2
0
		private void ConnectClick(object sender, RoutedEventArgs e)
		{
			try
			{
				if (!_isConnected)
				{
					if (Trader == null)
					{
						// создаем подключение
						Trader = new AlfaTrader { LogLevel = LogLevels.Debug };

						_logManager.Sources.Add(Trader);

						Trader.Restored += () => this.GuiAsync(() =>
						{
							// разблокируем кнопку Экспорт (соединение было восстановлено)
							ChangeConnectStatus(true);
							MessageBox.Show(this, LocalizedStrings.Str2958);
						});

						// подписываемся на событие успешного соединения
						Trader.Connected += () =>
						{
							this.GuiAsync(() => ChangeConnectStatus(true));

							// запускаем подписку на новости
							Trader.RegisterNews();
						};

						// подписываемся на событие успешного отключения
						Trader.Disconnected += () => this.GuiAsync(() => ChangeConnectStatus(false));

						// подписываемся на событие разрыва соединения
						Trader.ConnectionError += error => this.GuiAsync(() =>
						{
							// заблокируем кнопку Экспорт (так как соединение было потеряно)
							ChangeConnectStatus(false);

							MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2959);
						});

						// подписываемся на ошибку обработки данных (транзакций и маркет)
						Trader.Error += error =>
							this.GuiAsync(() => MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2955));

						// подписываемся на ошибку подписки маркет-данных
						Trader.MarketDataSubscriptionFailed += (security, type, error) =>
							this.GuiAsync(() => MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2956Params.Put(type, security)));

						Trader.NewSecurities += securities => _securitiesWindow.SecurityPicker.Securities.AddRange(securities);
						Trader.NewTrades += trades => _tradesWindow.TradeGrid.Trades.AddRange(trades);
						Trader.NewMyTrades += trades => _myTradesWindow.TradeGrid.Trades.AddRange(trades);
						Trader.NewOrders += orders => _ordersWindow.OrderGrid.Orders.AddRange(orders);
						Trader.NewStopOrders += orders => _stopOrdersWindow.OrderGrid.Orders.AddRange(orders);
						Trader.NewPortfolios += portfolios =>
						{
							portfolios.ForEach(Trader.RegisterPortfolio);
							_portfoliosWindow.PortfolioGrid.Portfolios.AddRange(portfolios);
						};
						Trader.NewPositions += positions => _portfoliosWindow.PortfolioGrid.Positions.AddRange(positions);

						// подписываемся на событие о неудачной регистрации заявок
						Trader.OrdersRegisterFailed += OrdersFailed;
						// подписываемся на событие о неудачном снятии заявок
						Trader.OrdersCancelFailed += OrdersFailed;

						// подписываемся на событие о неудачной регистрации стоп-заявок
						Trader.StopOrdersRegisterFailed += OrdersFailed;
						// подписываемся на событие о неудачном снятии стоп-заявок
						Trader.StopOrdersCancelFailed += OrdersFailed;

						// устанавливаем поставщик маркет-данных
						_securitiesWindow.SecurityPicker.MarketDataProvider = Trader;

						// set news provider
						_newsWindow.NewsPanel.NewsProvider = Trader;

						ShowSecurities.IsEnabled = ShowNews.IsEnabled =
						ShowMyTrades.IsEnabled = ShowOrders.IsEnabled = ShowStopOrders.IsEnabled =
						ShowPortfolios.IsEnabled = true;

						Trader.NewNews += news => _newsWindow.NewsPanel.NewsGrid.News.Add(news);
					}

					Trader.Login = TextBoxLogin.Text;
					Trader.Password = PasswordBox.Password;
					Trader.Connect();
				}
				else
				{
					Trader.UnRegisterNews();

					Trader.Disconnect();
				}
			}
			catch (Exception ex)
			{
				MessageBox.Show(this, ex.Message, LocalizedStrings.Str152);
			}
		}