Esempio n. 1
0
        public EmitentDetailsViewModel(INavigationService navigationService, IMainCommandBar commandBar)
        {
            this._navigationService = navigationService;
            this._commandBar        = commandBar;
            this.FinancialList      = new ObservableCollection <Entities.Financial>();

            Messenger.Default.Register <FinancialListLoadedMessage>(this, (msg) =>
            {
                this.FinancialList.Clear();
                foreach (Entities.Financial financial in msg.FinancialList)
                {
                    this.FinancialList.Add(financial);
                }
            });

            this.SelectFinancialCmd = new RelayCommand <object>((parameter) =>
            {
                Windows.UI.Xaml.Controls.ItemClickEventArgs e = (Windows.UI.Xaml.Controls.ItemClickEventArgs)parameter;
                this._selectedFinancial = (Financial)e.ClickedItem;
            });

            this.AddFinancialCmd = new RelayCommand(() =>
            {
                this._navigationService.NavigateTo("FinancialEdit", new Financial()
                {
                    EmitentId = _emitentId
                });
            });

            this.EditFinancialCmd = new RelayCommand(() =>
            {
                this._navigationService.NavigateTo("FinancialEdit", this._selectedFinancial);
            });
        }
Esempio n. 2
0
        public AnalysisViewModel(INavigationService navigationService, IMainCommandBar commandBar)
        {
            this._navigationService = navigationService;
            this.AnalystDataList    = new ObservableCollection <Robot.AnalystData>();
            this._commandBar        = commandBar;

            Messenger.Default.Register <SecurityListLoadedMessage>(this, (msg) =>
            {
                this.SecurityList = msg.SecurityList.Where(s => s.AlgoTrade).ToList();
            });

            this.StartAnalyst = new RelayCommand(() =>
            {
                this._analyst = new Robot.Analyst(new Robot.AnalystStrategy(), SecurityList);

                this._analyst.Run();
            });

            SelectSecurityCmd = new RelayCommand <object>((parameter) =>
            {
                Windows.UI.Xaml.Controls.ItemClickEventArgs e = (Windows.UI.Xaml.Controls.ItemClickEventArgs)parameter;
                Robot.AnalystData selected = (Robot.AnalystData)e.ClickedItem;

                this._navigationService.NavigateTo("AnalysisDetails", _candles[selected.Sec]);
            });

            Messenger.Default.Register <ShowDataMessage>(this, (msg) =>
            {
                _candles = msg.Сandles;

                dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {
                    AnalystDataList.Clear();

                    foreach (AnalystData data in msg.AnalystDatalist)
                    {
                        this.AnalystDataList.Add(data);
                    }
                });
            });
        }
Esempio n. 3
0
        public EmitentListViewModel(INavigationService navigationService, IMainCommandBar commandBar)
        {
            this._navigationService = navigationService;
            this._commandBar        = commandBar;

            this.EmitentList = new ObservableCollection <Entities.Emitent>();

            Messenger.Default.Register <EmitentListLoadedMessage>(this, (msg) =>
            {
                this.EmitentList.Clear();
                foreach (Entities.Emitent emitent in msg.EmitentList)
                {
                    this.EmitentList.Add(emitent);
                }
            });

            SelectEmitentCmd = new RelayCommand <object>((parameter) =>
            {
                Windows.UI.Xaml.Controls.ItemClickEventArgs e = (Windows.UI.Xaml.Controls.ItemClickEventArgs)parameter;
                Emitent SelectedEmitent = (Emitent)e.ClickedItem;

                this._navigationService.NavigateTo("EmitentDetails", SelectedEmitent);
            });
        }
Esempio n. 4
0
        public FinancialEditViewModel(INavigationService navigationService, IMainCommandBar commandBar)
        {
            this._navigationService = navigationService;

            this._commandBar    = commandBar;
            this.FinancialItems = new List <FinancialItem>();

            this.PeriodTypes = new List <KeyValuePair <int, string> >();
            this.PeriodTypes.Add(new KeyValuePair <int, string>(1, "Q1"));
            this.PeriodTypes.Add(new KeyValuePair <int, string>(2, "Q2"));
            this.PeriodTypes.Add(new KeyValuePair <int, string>(3, "Q3"));
            this.PeriodTypes.Add(new KeyValuePair <int, string>(4, "Q4"));
            this.PeriodTypes.Add(new KeyValuePair <int, string>(7, "Y"));

            this.SaveCmd = new RelayCommand(() =>
            {
                _financial.Year                = this.Year;
                _financial.Period              = this.SelectedPeriod.Key;
                _financial.Revenue             = decimal.Parse(this.FinancialItems.Single(i => i.Name == "Revenue").Value);
                _financial.OperatingIncome     = decimal.Parse(this.FinancialItems.Single(i => i.Name == "OperatingIncome").Value);
                _financial.NetIncome           = decimal.Parse(this.FinancialItems.Single(i => i.Name == "NetIncome").Value);
                _financial.CurrentAssets       = decimal.Parse(this.FinancialItems.Single(i => i.Name == "CurrentAssets").Value);
                _financial.FixedAssets         = decimal.Parse(this.FinancialItems.Single(i => i.Name == "FixedAssets").Value);
                _financial.CurrentLiabilities  = decimal.Parse(this.FinancialItems.Single(i => i.Name == "CurrentLiabilities").Value);
                _financial.LongTermLiabilities = decimal.Parse(this.FinancialItems.Single(i => i.Name == "LongTermLiabilities").Value);

                _financial.FlowOperatingActivities = decimal.Parse(this.FinancialItems.Single(i => i.Name == "FlowOperatingActivities").Value);
                _financial.ChangesInAssets         = decimal.Parse(this.FinancialItems.Single(i => i.Name == "ChangesInAssets").Value);
                _financial.Capex                  = decimal.Parse(this.FinancialItems.Single(i => i.Name == "Capex").Value);
                _financial.Amortization           = decimal.Parse(this.FinancialItems.Single(i => i.Name == "Amortization").Value);
                _financial.FlowOperatingTaxesPaid = decimal.Parse(this.FinancialItems.Single(i => i.Name == "FlowOperatingTaxesPaid").Value);

                _financial.FlowInvestingActivities = decimal.Parse(this.FinancialItems.Single(i => i.Name == "FlowInvestingActivities").Value);
                _financial.FlowFinancingActivities = decimal.Parse(this.FinancialItems.Single(i => i.Name == "FlowFinancingActivities").Value);

                _financial.StockIssuance    = decimal.Parse(this.FinancialItems.Single(i => i.Name == "StockIssuance").Value);
                _financial.DividendsPaid    = decimal.Parse(this.FinancialItems.Single(i => i.Name == "DividendsPaid").Value);
                _financial.EarningsPerShare = decimal.Parse(this.FinancialItems.Single(i => i.Name == "EarningsPerShare").Value);
                _financial.Price            = decimal.Parse(this.FinancialItems.Single(i => i.Name == "Price").Value);

                Messenger.Default.Send <SaveFinancialMessage>(new SaveFinancialMessage()
                {
                    Financial = _financial
                });
            });

            Messenger.Default.Register <SaveFinancialResultMeassage>(this, (msg) =>
            {
                dispatcher.RunAsync(CoreDispatcherPriority.Normal, async() =>
                {
                    string message = msg.Result == "success" ? "Сохранение успешно": "Возникли ошибки";

                    var dlg = new Windows.UI.Popups.MessageDialog(message);

                    await dlg.ShowAsync();

                    if (msg.Result == "success")
                    {
                        _navigationService.GoBack();
                    }
                });
            });
        }
Esempio n. 5
0
        public RobotControlViewModel(INavigationService navigationService, IMainCommandBar commandBar, IChart chart)
        {
            SecurityList = new List <Entities.Security>();

            this._navigationService = navigationService;
            this.DealList           = new ObservableCollection <Entities.Deal>();
            this.PositionList       = new ObservableCollection <PositionViewModel>();
            this.AnalystDataList    = new ObservableCollection <Robot.AnalystData>();

            this._commandBar = commandBar;
            this._chart      = chart;

            Messenger.Default.Register <SecurityListLoadedMessage>(this, (msg) =>
            {
                this.SecurityList = msg.SecurityList.Where(s => s.AlgoTrade).ToList();
            });

            this.StartRobot = new RelayCommand(() =>
            {
                this._robot = new Robot.Robot(new Robot.CandleStrategy(), SecurityList);

                this._robot.Run();
            });


            this.BuyCmd = new RelayCommand <Robot.AnalystData>(async d =>
            {
                string msg = string.Format("Купить {0} за {1}?", d.Sec, d.LastPrice);
                var dlg    = new Windows.UI.Popups.MessageDialog(msg);

                dlg.Commands.Add(new Windows.UI.Popups.UICommand("Accept"));
                dlg.Commands.Add(new Windows.UI.Popups.UICommand("Cancel"));

                var dialogResult = await dlg.ShowAsync();

                if (dialogResult.Label == "Accept")
                {
                    Messenger.Default.Send <ClientMakeDealMessage>(new ClientMakeDealMessage()
                    {
                        Sec       = d.Sec,
                        Operation = "open long"
                    });
                }
            });

            this.ClosePositionCmd = new RelayCommand <string>(async code =>
            {
                string msg = string.Format("Закрыть позицию {0}?", code);
                var dlg    = new Windows.UI.Popups.MessageDialog(msg);

                dlg.Commands.Add(new Windows.UI.Popups.UICommand("Accept"));
                dlg.Commands.Add(new Windows.UI.Popups.UICommand("Cancel"));

                var dialogResult = await dlg.ShowAsync();

                if (dialogResult.Label == "Accept")
                {
                    Messenger.Default.Send <ClosePositionMessage>(new ClosePositionMessage()
                    {
                        Code = code
                    });
                }
            });

            Messenger.Default.Register <ShowAnalystDataMessage>(this, (msg) =>
            {
                dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {
                    if (AnalystDataList.Count == 0)
                    {
                        foreach (AnalystData data in msg.AnalystDatalist)
                        {
                            this.AnalystDataList.Add(data);
                        }
                    }

                    if (AnalystDataList.Count > 0)
                    {
                        foreach (AnalystData data in msg.AnalystDatalist)
                        {
                            var advice = this.AnalystDataList.Single(d => d.Sec == data.Sec);

                            advice.Advice    = data.Advice;
                            advice.LastPrice = data.LastPrice;
                        }
                    }
                });
            });

            Messenger.Default.Register <ShowDataMessage>(this, (msg) =>
            {
                dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {
                    var newdeals = msg.Deals.Where(d => !this.DealList.Select(old => old.Id).Contains(d.Id));

                    foreach (Entities.Deal deal in newdeals)
                    {
                        this.DealList.Add(deal);
                    }

                    var newpos = msg.Positions.Where(p => !this.PositionList.Select(old => old.Code).Contains(p.Code)).ToList();

                    var oldpos = msg.Positions.Where(p => this.PositionList.Select(old => old.Code).Contains(p.Code)).ToList();

                    foreach (Entities.Position pos in newpos)
                    {
                        this.PositionList.Add(new PositionViewModel(pos));
                    }

                    foreach (Entities.Position pos in oldpos)
                    {
                        this.PositionList.Single(p => p.Code == pos.Code).Update(pos);
                    }
                });
            });
        }