示例#1
0
        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);
            }
        }
示例#2
0
        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);
            }
        }