Esempio n. 1
0
        public ChartWindow(CandleSeries candleSeries)
        {
            InitializeComponent();

            if (candleSeries == null)
            {
                throw new ArgumentNullException(nameof(candleSeries));
            }

            _candleSeries = candleSeries;
            _trader       = MainWindow.Instance.Trader;

            Chart.ChartTheme = ChartThemes.ExpressionDark;

            var area = new ChartArea();

            Chart.Areas.Add(area);

            _candleElem = new ChartCandleElement
            {
                AntiAliasing    = false,
                UpFillColor     = Colors.White,
                UpBorderColor   = Colors.Black,
                DownFillColor   = Colors.Black,
                DownBorderColor = Colors.Black,
            };

            area.Elements.Add(_candleElem);

            var tf = (TimeSpan)candleSeries.Arg;

            _trader.CandleSeriesProcessing += ProcessNewCandle;
            _trader.SubscribeCandles(_candleSeries, tf.Ticks == 1 ? DateTime.Today : DateTime.Now.Subtract(TimeSpan.FromTicks(tf.Ticks * 1000)));
        }
Esempio n. 2
0
        private void ConnectClick(object sender, RoutedEventArgs e)
        {
            if (!_isConnected)
            {
                if (Token.Password.IsEmpty())
                {
                    MessageBox.Show(this, LocalizedStrings.Str3836);
                    return;
                }

                if (Trader == null)
                {
                    // create connector
                    Trader = new FxcmTrader();

                    Trader.Restored += () => this.GuiAsync(() =>
                    {
                        // update gui labels
                        ChangeConnectStatus(true);
                        MessageBox.Show(this, LocalizedStrings.Str2958);
                    });

                    // subscribe on connection successfully event
                    Trader.Connected += () =>
                    {
                        // set flag (connection is established)
                        _isConnected = true;

                        // update gui labels
                        this.GuiAsync(() => ChangeConnectStatus(true));
                    };
                    Trader.Disconnected += () => this.GuiAsync(() => ChangeConnectStatus(false));

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

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

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

                    // subscribe on error of market data subscription event
                    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.NewMyTrade   += _myTradesWindow.TradeGrid.Trades.Add;
                    Trader.NewOrder     += _ordersWindow.OrderGrid.Orders.Add;
                    Trader.NewStopOrder += _stopOrdersWindow.OrderGrid.Orders.Add;

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

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

                    // subscribe on error of stop-order registration event
                    Trader.StopOrderRegisterFailed += OrderFailed;
                    // subscribe on error of stop-order cancelling event
                    Trader.StopOrderCancelFailed += OrderFailed;

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

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

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

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

                Trader.Token  = Token.Password.To <SecureString>();
                Trader.IsDemo = IsDemo.IsChecked == true;

                // clear password box for security reason
                //Token.Clear();

                Trader.Connect();
            }
            else
            {
                Trader.Disconnect();
            }
        }
Esempio n. 3
0
        private void ConnectClick(object sender, RoutedEventArgs e)
        {
            if (!_isConnected)
            {
                if (Login.Text.IsEmpty())
                {
                    MessageBox.Show(this, LocalizedStrings.Str2974);
                    return;
                }
                else if (Password.Password.IsEmpty())
                {
                    MessageBox.Show(this, LocalizedStrings.Str2975);
                    return;
                }

                if (Trader == null)
                {
                    // create connector
                    Trader = new FxcmTrader();

                    Trader.Restored += () => this.GuiAsync(() =>
                    {
                        // update gui labes
                        ChangeConnectStatus(true);
                        MessageBox.Show(this, LocalizedStrings.Str2958);
                    });

                    // subscribe on connection successfully event
                    Trader.Connected += () =>
                    {
                        // set flag (connection is established)
                        _isConnected = true;

                        // update gui labes
                        this.GuiAsync(() => ChangeConnectStatus(true));
                    };
                    Trader.Disconnected += () => this.GuiAsync(() => ChangeConnectStatus(false));

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

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

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

                    // subscribe on error of market data subscription event
                    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.NewMyTrade   += trade => _myTradesWindow.TradeGrid.Trades.Add(trade);
                    Trader.NewTrade     += trade => _tradesWindow.TradeGrid.Trades.Add(trade);
                    Trader.NewOrder     += order => _ordersWindow.OrderGrid.Orders.Add(order);
                    Trader.NewStopOrder += order => _stopOrdersWindow.OrderGrid.Orders.Add(order);

                    Trader.NewPortfolio += portfolio =>
                    {
                        // subscribe on portfolio updates
                        Trader.RegisterPortfolio(portfolio);

                        _portfoliosWindow.PortfolioGrid.Portfolios.Add(portfolio);
                    };
                    Trader.NewPosition += position => _portfoliosWindow.PortfolioGrid.Positions.Add(position);

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

                    // subscribe on error of stop-order registration event
                    Trader.StopOrderRegisterFailed += OrderFailed;
                    // subscribe on error of stop-order cancelling event
                    Trader.StopOrderCancelFailed += OrderFailed;

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

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

                    ShowSecurities.IsEnabled         = ShowTrades.IsEnabled =
                        ShowMyTrades.IsEnabled       = ShowOrders.IsEnabled =
                            ShowPortfolios.IsEnabled = ShowStopOrders.IsEnabled = true;
                }

                Trader.Login      = Login.Text;
                Trader.Password   = Password.Password;
                Trader.Address    = Address.Text.To <Uri>();
                Trader.Connection = Connection.Text;

                // clear password box for security reason
                //Password.Clear();

                Trader.Connect();
            }
            else
            {
                Trader.Disconnect();
            }
        }