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 => { // начинаем получать текущие сделки (для построения свечек в реальном времени) // альфа не выдержит нагрузки получения сделок по всем инструментам // нужно подписываться только на те, которые необходимы // securities.ForEach(_trader.RegisterTrades); }; Security.SecurityProvider = new FilterableSecurityProvider(_trader); _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(); }
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, msg, error) => this.GuiAsync(() => MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2956Params.Put(msg.DataType, security))); Trader.NewSecurity += security => _securitiesWindow.SecurityPicker.Securities.Add(security); Trader.NewTrade += trade => _tradesWindow.TradeGrid.Trades.Add(trade); Trader.NewMyTrade += trade => _myTradesWindow.TradeGrid.Trades.Add(trade); Trader.NewOrder += order => _ordersWindow.OrderGrid.Orders.Add(order); Trader.NewStopOrder += order => _stopOrdersWindow.OrderGrid.Orders.Add(order); Trader.NewPortfolio += portfolio => { Trader.RegisterPortfolio(portfolio); _portfoliosWindow.PortfolioGrid.Portfolios.Add(portfolio); }; Trader.NewPosition += position => _portfoliosWindow.PortfolioGrid.Positions.Add(position); // подписываемся на событие о неудачной регистрации заявок Trader.OrderRegisterFailed += OrderFailed; // подписываемся на событие о неудачном снятии заявок Trader.OrderCancelFailed += OrderFailed; // подписываемся на событие о неудачной регистрации стоп-заявок Trader.StopOrderRegisterFailed += OrderFailed; // подписываемся на событие о неудачном снятии стоп-заявок Trader.StopOrderCancelFailed += OrderFailed; Trader.MassOrderCancelFailed += (transId, error) => this.GuiAsync(() => MessageBox.Show(this, error.ToString(), LocalizedStrings.Str716)); // устанавливаем поставщик маркет-данных _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); } }