private void ConnectClick(object sender, RoutedEventArgs e) { try { if (!_isConnected) { Trader.Address = Address.Text.To <EndPoint>(); Trader.IsCGate = IsCGate.IsChecked == true; Trader.CGateKey = CGateKey.Text; Trader.AppName = AppName.Text; Trader.TableRegistry.StreamRegistry.IsFastRepl = IsFastRepl.IsChecked == true; if (IsAutorization.IsChecked == true) { Trader.Login = Login.Text; Trader.Password = Password.Password; } else { Trader.Login = string.Empty; Trader.Password = string.Empty; } if (!_initialized) { _initialized = true; var revisionManager = Trader.StreamManager.RevisionManager; revisionManager.Tables.Add(Trader.TableRegistry.IndexLog); revisionManager.Tables.Add(Trader.TableRegistry.TradeFuture); revisionManager.Tables.Add(Trader.TableRegistry.TradeOption); Trader.Tables.Clear(); Trader.TableRegistry.SyncTables(Tables.SelectedTables); if (Trader.Tables.Contains(Trader.TableRegistry.AnonymousOrdersLog)) { Trader.CreateDepthFromOrdersLog = true; } Trader.ReConnectionSettings.AttemptCount = -1; Trader.Restored += () => this.GuiAsync(() => MessageBox.Show(this, LocalizedStrings.Str2958)); // подписываемся на событие успешного соединения Trader.Connected += () => { this.GuiAsync(() => ChangeConnectStatus(true)); }; // подписываемся на событие разрыва соединения Trader.ConnectionError += error => this.GuiAsync(() => { ChangeConnectStatus(false); MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2959); }); // подписываемся на событие успешного отключения Trader.Disconnected += () => this.GuiAsync(() => ChangeConnectStatus(false)); // подписываемся на ошибку обработки данных (транзакций и маркет) //Trader.Error += error => // this.GuiAsync(() => MessageBox.Show(this, error.ToString(), "Ошибка обработки данных")); // подписываемся на ошибку подписки маркет-данных 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.NewOrders += orders => _ordersWindow.OrderGrid.Orders.AddRange(orders); Trader.NewMyTrades += trades => _myTradesWindow.TradeGrid.Trades.AddRange(trades); Trader.NewOrderLogItems += items => items.ForEach(_ordersLogWindow.AddOperation); Trader.NewPortfolios += portfolios => _portfoliosWindow.PortfolioGrid.Portfolios.AddRange(portfolios); Trader.NewPositions += positions => _portfoliosWindow.PortfolioGrid.Positions.AddRange(positions); // подписываемся на событие о неудачной регистрации заявок Trader.OrdersRegisterFailed += OrdersFailed; // подписываемся на событие о неудачном снятии заявок Trader.OrdersCancelFailed += OrdersFailed; // устанавливаем поставщик маркет-данных _securitiesWindow.SecurityPicker.MarketDataProvider = Trader; } Trader.Connect(); } else { Trader.Disconnect(); } } catch (Exception ex) { MessageBox.Show(this, ex.Message, LocalizedStrings.Str152); } }
private void ConnectClick(object sender, RoutedEventArgs e) { try { if (!_isConnected) { Trader.Address = Address.Text.To <EndPoint>(); Trader.IsCGate = IsCGate.IsChecked == true; Trader.IsDemo = IsDemo.IsChecked == true; Trader.AppName = AppName.Text; Trader.TableRegistry.StreamRegistry.IsFastRepl = IsFastRepl.IsChecked == true; if (IsAutorization.IsChecked == true) { Trader.Login = Login.Text; Trader.Password = Password.Password; } else { Trader.Login = string.Empty; Trader.Password = string.Empty; } if (!_initialized) { _initialized = true; var revisionManager = Trader.StreamManager.RevisionManager; //revisionManager.Tables.Add(Trader.TableRegistry.IndexLog); revisionManager.Tables.Add(Trader.TableRegistry.AnonymousDeal); Trader.Tables.Clear(); Trader.TableRegistry.SyncTables(Tables.SelectedTables); if (Trader.Tables.Contains(Trader.TableRegistry.AnonymousOrdersLog)) { Trader.CreateDepthFromOrdersLog = true; } Trader.ReConnectionSettings.AttemptCount = -1; Trader.Restored += () => this.GuiAsync(() => MessageBox.Show(this, LocalizedStrings.Str2958)); // подписываемся на событие успешного соединения Trader.Connected += () => { this.GuiAsync(() => ChangeConnectStatus(true)); }; // подписываемся на событие разрыва соединения Trader.ConnectionError += error => this.GuiAsync(() => { ChangeConnectStatus(false); MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2959); }); // подписываемся на событие успешного отключения Trader.Disconnected += () => this.GuiAsync(() => ChangeConnectStatus(false)); // подписываемся на ошибку обработки данных (транзакций и маркет) //Trader.Error += error => // this.GuiAsync(() => MessageBox.Show(this, error.ToString(), "Ошибка обработки данных")); // подписываемся на ошибку подписки маркет-данных Trader.MarketDataSubscriptionFailed += (security, msg, error) => this.GuiAsync(() => MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2956Params.Put(msg.DataType, security))); Trader.NewSecurity += _securitiesWindow.SecurityPicker.Securities.Add; Trader.NewTrade += _tradesWindow.TradeGrid.Trades.Add; Trader.NewOrder += _ordersWindow.OrderGrid.Orders.Add; Trader.NewMyTrade += _myTradesWindow.TradeGrid.Trades.Add; Trader.NewOrderLogItem += _ordersLogWindow.AddOperation; Trader.NewPortfolio += _portfoliosWindow.PortfolioGrid.Portfolios.Add; Trader.NewPosition += _portfoliosWindow.PortfolioGrid.Positions.Add; // подписываемся на событие о неудачной регистрации заявок Trader.OrderRegisterFailed += _ordersWindow.OrderGrid.AddRegistrationFail; // подписываемся на событие о неудачном снятии заявок Trader.OrderCancelFailed += OrderFailed; Trader.MassOrderCancelFailed += (transId, error) => this.GuiAsync(() => MessageBox.Show(this, error.ToString(), LocalizedStrings.Str716)); // устанавливаем поставщик маркет-данных _securitiesWindow.SecurityPicker.MarketDataProvider = Trader; if (IsStorage.IsChecked == true) { revisionManager.Tables.Clear(); // запоминаем настроенный адаптер, так как InitializeStorage полностью очищает ранее осуществленные настройки var plazaAdaprer = Trader.Adapter.InnerAdapters.OfType <PlazaMessageAdapter>().First(); Trader.InitializeStorage(_entityRegistry, _storageRegistry); Trader.Adapter.InnerAdapters.Add(plazaAdaprer); try { _entityRegistry.Init(); } catch (Exception ex) { MessageBox.Show(this, ex.ToString()); } Trader.StorageAdapter.Format = StorageFormats.Csv; Trader.StorageAdapter.DaysLoad = TimeSpan.FromDays(3); Trader.StorageAdapter.Load(); ConfigManager.RegisterService <IExchangeInfoProvider>(new StorageExchangeInfoProvider(_entityRegistry)); } } Trader.Connect(); } else { Trader.Disconnect(); } } catch (Exception ex) { MessageBox.Show(this, ex.Message, LocalizedStrings.Str152); } }