Esempio n. 1
0
        private void InitRealConnector()
        {
            _realConnector.NewOrder            += OrderGrid.Orders.Add;
            _realConnector.NewMyTrade          += TradeGrid.Trades.Add;
            _realConnector.OrderRegisterFailed += OrderGrid.AddRegistrationFail;

            _realConnector.MassOrderCancelFailed += (transId, error) =>
                                                    this.GuiAsync(() => MessageBox.Show(this, error.ToString(), LocalizedStrings.Str716));

            //_realConnector.Error += error =>
            //	this.GuiAsync(() => MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2955));

            ConfigManager.RegisterService <IMessageAdapterProvider>(new FullInMemoryMessageAdapterProvider(_realConnector.Adapter.InnerAdapters));

            try
            {
                if (File.Exists(_settingsFile))
                {
                    var ctx = new ContinueOnExceptionContext();
                    ctx.Error += ex => ex.LogError();

                    using (ctx.ToScope())
                        _realConnector.Load(new XmlSerializer <SettingsStorage>().Deserialize(_settingsFile));
                }
            }
            catch
            {
            }

            SecurityPicker.SecurityProvider = new FilterableSecurityProvider(_realConnector);
        }
Esempio n. 2
0
        public MainWindow()
        {
            InitializeComponent();
            Instance = this;

            Title = Title.Put("Micex (TEAP)");

            _ordersWindow.MakeHideable();
            _myTradesWindow.MakeHideable();
            _tradesWindow.MakeHideable();
            _securitiesWindow.MakeHideable();
            _portfoliosWindow.MakeHideable();
            _newsWindow.MakeHideable();

            if (File.Exists(_settingsFile))
            {
                var ctx = new ContinueOnExceptionContext();
                ctx.Error += ex => ex.LogError();

                using (new Scope <ContinueOnExceptionContext> (ctx))
                    Trader.Load(new XmlSerializer <SettingsStorage>().Deserialize(_settingsFile));
            }

            Settings.SelectedObject = Trader.MarketDataAdapter;
        }
Esempio n. 3
0
        public MainWindow()
        {
            InitializeComponent();

            Title = Title.Put("FIX");

            _ordersWindow.MakeHideable();
            _myTradesWindow.MakeHideable();
            _tradesWindow.MakeHideable();
            _securitiesWindow.MakeHideable();
            _stopOrdersWindow.MakeHideable();
            _portfoliosWindow.MakeHideable();
            _ordersLogWindow.MakeHideable();
            _newsWindow.MakeHideable();

            if (File.Exists(_settingsFile))
            {
                var ctx = new ContinueOnExceptionContext();
                ctx.Error += ex => ex.LogError();

                using (new Scope <ContinueOnExceptionContext>(ctx))
                    Trader.Load(new XmlSerializer <SettingsStorage>().Deserialize(_settingsFile));
            }

            MarketDataSessionSettings.SelectedObject  = Trader.MarketDataAdapter;
            TransactionSessionSettings.SelectedObject = Trader.TransactionAdapter;

            MarketDataSupportedMessages.Adapter  = Trader.MarketDataAdapter;
            TransactionSupportedMessages.Adapter = Trader.TransactionAdapter;

            Instance = this;

            _logManager.Sources.Add(Trader);
            _logManager.Listeners.Add(new FileLogListener {
                LogDirectory = "StockSharp_Fix"
            });
            _logManager.Listeners.Add(new GuiLogListener(LogControl));
        }
Esempio n. 4
0
        private void InitConnector()
        {
            // subscribe on connection successfully event
            Connector.Connected += () =>
            {
                // update gui labels
                this.GuiAsync(() => ChangeConnectStatus(true));
            };

            // subscribe on disconnection event
            Connector.Disconnected += () =>
            {
                // update gui labels
                this.GuiAsync(() => ChangeConnectStatus(false));
            };

            // subscribe on connection error event
            Connector.ConnectionError += error => this.GuiAsync(() =>
            {
                // update gui labels
                ChangeConnectStatus(false);

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

            // fill underlying asset's list
            Connector.NewSecurity += security =>
            {
                if (security.Type == SecurityTypes.Future)
                {
                    _assets.Add(security);
                }
            };

            Connector.SecurityChanged += security =>
            {
                if (_model.UnderlyingAsset == security || _model.UnderlyingAsset.Id == security.UnderlyingSecurityId)
                {
                    _isDirty = true;
                }
            };

            // subscribing on tick prices and updating asset price
            Connector.NewTrade += trade =>
            {
                if (_model.UnderlyingAsset == trade.Security || _model.UnderlyingAsset.Id == trade.Security.UnderlyingSecurityId)
                {
                    _isDirty = true;
                }
            };

            Connector.NewPosition += position => this.GuiAsync(() =>
            {
                var asset = SelectedAsset;

                if (asset == null)
                {
                    return;
                }

                var assetPos = position.Security == asset;
                var newPos   = position.Security.UnderlyingSecurityId == asset.Id;

                if (!assetPos && !newPos)
                {
                    return;
                }

                //if (assetPos)
                //	PosChart.AssetPosition = position;

                //if (newPos)
                //	PosChart.Positions.Add(position);

                RefreshChart();
            });

            Connector.PositionChanged += position => this.GuiAsync(() =>
            {
                if ((PosChart.UnderlyingAsset != null && PosChart.UnderlyingAsset == position.Security) || PosChart.Options.Contains(position.Security))
                {
                    RefreshChart();
                }
            });

            try
            {
                if (File.Exists(_settingsFile))
                {
                    var ctx = new ContinueOnExceptionContext();
                    ctx.Error += ex => ex.LogError();

                    using (new Scope <ContinueOnExceptionContext> (ctx))
                        Connector.Load(new XmlSerializer <SettingsStorage>().Deserialize(_settingsFile));
                }
            }
            catch
            {
            }
        }
Esempio n. 5
0
        private void InitConnector()
        {
            // subscribe on connection successfully event
            Connector.Connected += () =>
            {
                this.GuiAsync(() => ChangeConnectStatus(true));

                if (Connector.Adapter.IsMarketDataTypeSupported(DataType.News) && !Connector.Adapter.IsSecurityNewsOnly)
                {
                    if (Connector.Subscriptions.All(s => s.DataType != DataType.News))
                    {
                        Connector.SubscribeNews();
                    }
                }
            };

            // subscribe on connection error event
            Connector.ConnectionError += error => this.GuiAsync(() =>
            {
                ChangeConnectStatus(false);
                MessageBox.Show(this.GetWindow(), error.ToString(), LocalizedStrings.Str2959);
            });

            Connector.Disconnected += () => this.GuiAsync(() => ChangeConnectStatus(false));

            // subscribe on error event
            //Connector.Error += error =>
            //	this.GuiAsync(() => MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2955));

            // subscribe on error of market data subscription event
            Connector.MarketDataSubscriptionFailed += (security, msg, error) =>
                                                      this.GuiAsync(() => MessageBox.Show(this.GetWindow(), error.ToString(), LocalizedStrings.Str2956Params.Put(msg.DataType2, security)));

            Connector.SecurityReceived     += (s, sec) => _securitiesWindow.SecurityPicker.Securities.Add(sec);
            Connector.TickTradeReceived    += (s, t) => _tradesWindow.TradeGrid.Trades.Add(t);
            Connector.OrderLogItemReceived += (s, ol) => _orderLogWindow.OrderLogGrid.LogItems.Add(ol);
            Connector.Level1Received       += (s, l) => _level1Window.Level1Grid.Messages.Add(l);

            Connector.NewOrder     += Connector_OnNewOrder;
            Connector.OrderChanged += Connector_OnOrderChanged;
            Connector.OrderEdited  += Connector_OnOrderEdited;

            Connector.NewMyTrade += _myTradesWindow.TradeGrid.Trades.Add;

            Connector.PortfolioReceived += (sub, p) => _portfoliosWindow.PortfolioGrid.Positions.TryAdd(p);
            Connector.PositionReceived  += (sub, p) => _portfoliosWindow.PortfolioGrid.Positions.TryAdd(p);

            // subscribe on error of order registration event
            Connector.OrderRegisterFailed += Connector_OnOrderRegisterFailed;
            // subscribe on error of order cancelling event
            Connector.OrderCancelFailed += Connector_OnOrderCancelFailed;
            // subscribe on error of order edition event
            Connector.OrderEditFailed += Connector_OnOrderEditFailed;

            // set market data provider
            _securitiesWindow.SecurityPicker.MarketDataProvider = Connector;

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

            Connector.LookupTimeFramesResult += (message, timeFrames, error) =>
            {
                if (error == null)
                {
                    this.GuiAsync(() => _securitiesWindow.UpdateTimeFrames(timeFrames));
                }
            };

            var nativeIdStorage = ServicesRegistry.TryNativeIdStorage;

            if (nativeIdStorage != null)
            {
                Connector.Adapter.NativeIdStorage = nativeIdStorage;

                try
                {
                    nativeIdStorage.Init();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(this.GetWindow(), ex.ToString());
                }
            }

            if (Connector.StorageAdapter != null)
            {
                LoggingHelper.DoWithLog(ServicesRegistry.EntityRegistry.Init);
                LoggingHelper.DoWithLog(ServicesRegistry.ExchangeInfoProvider.Init);

                Connector.Adapter.StorageSettings.DaysLoad = TimeSpan.FromDays(3);
                Connector.Adapter.StorageSettings.Mode     = StorageModes.Snapshot;
                Connector.LookupAll();

                Connector.SnapshotRegistry.Init();
            }

            ConfigManager.RegisterService <IMessageAdapterProvider>(new FullInMemoryMessageAdapterProvider(Connector.Adapter.InnerAdapters));

            try
            {
                if (File.Exists(_settingsFile))
                {
                    var ctx = new ContinueOnExceptionContext();
                    ctx.Error += ex => ex.LogError();

                    using (ctx.ToScope())
                        Connector.Load(new XmlSerializer <SettingsStorage>().Deserialize(_settingsFile));
                }
            }
            catch
            {
            }
        }
Esempio n. 6
0
        private void InitConnector(IEntityRegistry entityRegistry, SnapshotRegistry snapshotRegistry, INativeIdStorage nativeIdStorage)
        {
            // subscribe on connection successfully event
            Connector.Connected += () =>
            {
                this.GuiAsync(() => ChangeConnectStatus(true));

                if (Connector.Adapter.IsMarketDataTypeSupported(DataType.News) && !Connector.Adapter.IsSecurityNewsOnly)
                {
                    Connector.SubscribeNews();
                }
            };

            // subscribe on connection error event
            Connector.ConnectionError += error => this.GuiAsync(() =>
            {
                ChangeConnectStatus(false);
                MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2959);
            });

            Connector.Disconnected += () => this.GuiAsync(() => ChangeConnectStatus(false));

            // subscribe on error event
            //Connector.Error += error =>
            //	this.GuiAsync(() => MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2955));

            // subscribe on error of market data subscription event
            Connector.MarketDataSubscriptionFailed += (security, msg, error) =>
                                                      this.GuiAsync(() => MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2956Params.Put(msg.DataType, security)));

            Connector.NewSecurity     += _securitiesWindow.SecurityPicker.Securities.Add;
            Connector.NewTrade        += _tradesWindow.TradeGrid.Trades.Add;
            Connector.NewOrderLogItem += _orderLogWindow.OrderLogGrid.LogItems.Add;

            Connector.NewOrder   += _ordersWindow.OrderGrid.Orders.Add;
            Connector.NewMyTrade += _myTradesWindow.TradeGrid.Trades.Add;

            Connector.NewPortfolio += _portfoliosWindow.PortfolioGrid.Positions.Add;
            Connector.NewPosition  += _portfoliosWindow.PortfolioGrid.Positions.Add;

            // subscribe on error of order registration event
            Connector.OrderRegisterFailed += _ordersWindow.OrderGrid.AddRegistrationFail;
            // subscribe on error of order cancelling event
            Connector.OrderCancelFailed += OrderFailed;

            // set market data provider
            _securitiesWindow.SecurityPicker.MarketDataProvider = Connector;

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

            Connector.LookupTimeFramesResult += (message, timeFrames, error) =>
            {
                if (error == null)
                {
                    this.GuiAsync(() => _securitiesWindow.UpdateTimeFrames(timeFrames));
                }
            };

            Connector.Adapter.NativeIdStorage = nativeIdStorage;

            try
            {
                nativeIdStorage.Init();
            }
            catch (Exception ex)
            {
                MessageBox.Show(this, ex.ToString());
            }

            if (Connector.StorageAdapter == null)
            {
                return;
            }

            try
            {
                entityRegistry.Init();
            }
            catch (Exception ex)
            {
                MessageBox.Show(this, ex.ToString());
            }

            Connector.Adapter.StorageProcessor.DaysLoad = TimeSpan.FromDays(3);
            Connector.Adapter.StorageProcessor.Mode     = StorageModes.Snapshot;
            Connector.LookupAll();

            snapshotRegistry.Init();

            ConfigManager.RegisterService <IExchangeInfoProvider>(new StorageExchangeInfoProvider(entityRegistry));
            ConfigManager.RegisterService <IMessageAdapterProvider>(new FullInMemoryMessageAdapterProvider(Connector.Adapter.InnerAdapters));

            try
            {
                if (File.Exists(_settingsFile))
                {
                    var ctx = new ContinueOnExceptionContext();
                    ctx.Error += ex => ex.LogError();

                    using (ctx.ToScope())
                        Connector.Load(new XmlSerializer <SettingsStorage>().Deserialize(_settingsFile));
                }
            }
            catch
            {
            }
        }
Esempio n. 7
0
        private void InitConnector(IEntityRegistry entityRegistry, SnapshotRegistry snapshotRegistry)
        {
            // subscribe on connection successfully event
            Connector.Connected += () =>
            {
                this.GuiAsync(() => ChangeConnectStatus(true));
            };

            // subscribe on connection error event
            Connector.ConnectionError += error => this.GuiAsync(() =>
            {
                ChangeConnectStatus(false);
                MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2959);
            });

            Connector.Disconnected += () => this.GuiAsync(() => ChangeConnectStatus(false));

            // subscribe on error event
            Connector.Error += error =>
            {
                this.GuiAsync(() => MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2955));
            };

            // subscribe on error of market data subscription event
            Connector.MarketDataSubscriptionFailed += (security, msg, error) =>
            {
                this.GuiAsync(() => MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2956Params.Put(msg.DataType, security)));
            };

            Connector.SecurityReceived += (sub, s) => _securitiesWindow.SecurityPicker.Securities.Add(s);

            Connector.NewOrder += order =>
            {
                _ordersWindow.OrderGrid.Orders.Add(order);
                _securitiesWindow.ProcessOrder(order);
            };

            // display order as own volume in quotes window
            Connector.OrderChanged += _securitiesWindow.ProcessOrder;

            // put the registration error into order's table
            Connector.OrderRegisterFailed += _ordersWindow.OrderGrid.AddRegistrationFail;

            Connector.NewMyTrade += _myTradesWindow.TradeGrid.Trades.Add;

            Connector.PositionReceived += (sub, p) => _portfoliosWindow.PortfolioGrid.Positions.TryAdd(p);

            // set market data provider
            _securitiesWindow.SecurityPicker.MarketDataProvider = Connector;

            if (Connector.StorageAdapter == null)
            {
                return;
            }

            entityRegistry.Init();
            snapshotRegistry.Init();

            Connector.LookupAll();

            ConfigManager.RegisterService <IMessageAdapterProvider>(new FullInMemoryMessageAdapterProvider(Connector.Adapter.InnerAdapters));

            try
            {
                if (File.Exists(_settingsFile) || File.Exists(_settingsFile.MakeLegacy()))
                {
                    var ctx = new ContinueOnExceptionContext();
                    ctx.Error += ex => ex.LogError();

                    using (ctx.ToScope())
                        Connector.LoadIfNotNull(_settingsFile.DeserializeWithMigration <SettingsStorage>());
                }
            }
            catch
            {
            }
        }
Esempio n. 8
0
        private void InitConnector(CsvEntityRegistry entityRegistry, SnapshotRegistry snapshotRegistry)
        {
            // subscribe on connection successfully event
            Connector.Connected += () =>
            {
                this.GuiAsync(() => ChangeConnectStatus(true));
            };

            // subscribe on connection error event
            Connector.ConnectionError += error => this.GuiAsync(() =>
            {
                ChangeConnectStatus(false);
                MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2959);
            });

            Connector.Disconnected += () => this.GuiAsync(() => ChangeConnectStatus(false));

            // subscribe on error event
            Connector.Error += error =>
                               this.GuiAsync(() => MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2955));

            // subscribe on error of market data subscription event
            Connector.MarketDataSubscriptionFailed += (security, msg, error) =>
                                                      this.GuiAsync(() => MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2956Params.Put(msg.DataType, security)));

            Connector.NewSecurity += _securitiesWindow.SecurityPicker.Securities.Add;
            Connector.NewTrade    += _tradesWindow.TradeGrid.Trades.Add;

            Connector.NewOrder     += _ordersWindow.OrderGrid.Orders.Add;
            Connector.NewStopOrder += _stopOrdersWindow.OrderGrid.Orders.Add;
            Connector.NewMyTrade   += _myTradesWindow.TradeGrid.Trades.Add;

            Connector.NewPortfolio += _portfoliosWindow.PortfolioGrid.Portfolios.Add;
            Connector.NewPosition  += _portfoliosWindow.PortfolioGrid.Positions.Add;

            // subscribe on error of order registration event
            Connector.OrderRegisterFailed += _ordersWindow.OrderGrid.AddRegistrationFail;
            // subscribe on error of order cancelling event
            Connector.OrderCancelFailed += OrderFailed;

            // subscribe on error of stop-order registration event
            Connector.OrderRegisterFailed += _stopOrdersWindow.OrderGrid.AddRegistrationFail;
            // subscribe on error of stop-order cancelling event
            Connector.StopOrderCancelFailed += OrderFailed;

            // set market data provider
            _securitiesWindow.SecurityPicker.MarketDataProvider = Connector;

            try
            {
                if (File.Exists(_settingsFile))
                {
                    var ctx = new ContinueOnExceptionContext();
                    ctx.Error += ex => ex.LogError();

                    using (new Scope <ContinueOnExceptionContext> (ctx))
                        Connector.Load(new XmlSerializer <SettingsStorage>().Deserialize(_settingsFile));
                }
            }
            catch
            {
            }

            if (Connector.StorageAdapter == null)
            {
                return;
            }

            try
            {
                entityRegistry.Init();
            }
            catch (Exception ex)
            {
                MessageBox.Show(this, ex.ToString());
            }

            Connector.StorageAdapter.DaysLoad = TimeSpan.FromDays(3);
            Connector.LookupAll();

            snapshotRegistry.Init();

            ConfigManager.RegisterService <IExchangeInfoProvider>(new StorageExchangeInfoProvider(entityRegistry));
        }
Esempio n. 9
0
        private void InitConnector()
        {
            // subscribe on connection successfully event
            Connector.Connected += () =>
            {
                this.GuiAsync(() => ChangeConnectStatus(true));

                if (Connector.Adapter.IsMarketDataTypeSupported(MarketDataTypes.News) && !Connector.Adapter.IsSecurityNewsOnly)
                {
                    Connector.SubscribeNews();
                }
            };

            // subscribe on connection error event
            Connector.ConnectionError += error => this.GuiAsync(() =>
            {
                ChangeConnectStatus(false);
                MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2959);
            });

            Connector.Disconnected += () => this.GuiAsync(() => ChangeConnectStatus(false));

            // subscribe on error event
            //Connector.Error += error =>
            //	this.GuiAsync(() => MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2955));

            // subscribe on error of market data subscription event
            Connector.MarketDataSubscriptionFailed += (security, msg, error) =>
                                                      this.GuiAsync(() => MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2956Params.Put(msg.DataType, security)));

            Connector.NewSecurity     += _securitiesWindow.SecurityPicker.Securities.Add;
            Connector.NewTrade        += _tradesWindow.TradeGrid.Trades.Add;
            Connector.NewOrderLogItem += _orderLogWindow.OrderLogGrid.LogItems.Add;

            Connector.NewOrder     += _ordersWindow.OrderGrid.Orders.Add;
            Connector.NewStopOrder += _ordersWindow.OrderGrid.Orders.Add;
            Connector.NewMyTrade   += _myTradesWindow.TradeGrid.Trades.Add;

            Connector.NewPortfolio += _portfoliosWindow.PortfolioGrid.Portfolios.Add;
            Connector.NewPosition  += _portfoliosWindow.PortfolioGrid.Positions.Add;

            // subscribe on error of order registration event
            Connector.OrderRegisterFailed += _ordersWindow.OrderGrid.AddRegistrationFail;
            // subscribe on error of order cancelling event
            Connector.OrderCancelFailed += OrderFailed;

            // subscribe on error of stop-order registration event
            Connector.OrderRegisterFailed += _ordersWindow.OrderGrid.AddRegistrationFail;
            // subscribe on error of stop-order cancelling event
            Connector.StopOrderCancelFailed += OrderFailed;

            // set market data provider
            _securitiesWindow.SecurityPicker.MarketDataProvider = Connector;

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

            ConfigManager.RegisterService <IExchangeInfoProvider>(new InMemoryExchangeInfoProvider());
            ConfigManager.RegisterService <IMessageAdapterProvider>(new FullInMemoryMessageAdapterProvider(Connector.Adapter.InnerAdapters));

            try
            {
                if (File.Exists(_settingsFile))
                {
                    var ctx = new ContinueOnExceptionContext();
                    ctx.Error += ex => ex.LogError();

                    using (new Scope <ContinueOnExceptionContext>(ctx))
                        Connector.Load(new XmlSerializer <SettingsStorage>().Deserialize(_settingsFile));
                }
            }
            catch
            {
            }
        }