コード例 #1
0
        public TradingViewModel(ViewModelContext viewModelContext,
                                AccountViewModel accountViewModel, SymbolsViewModel symbolsViewModel,
                                TradeViewModel tradeViewModel, OrdersViewModel ordersViewModel,
                                IWpfExchangeService exchangeService, IAccountsService accountsService,
                                IChartHelper chartHelper)
            : base(viewModelContext)
        {
            AccountViewModel = accountViewModel;
            SymbolsViewModel = symbolsViewModel;
            TradeViewModel   = tradeViewModel;
            OrdersViewModel  = ordersViewModel;

            Symbols = new ObservableCollection <SymbolViewModel>();
            symbolObservableSubscriptions = new Dictionary <string, IDisposable>();

            this.exchangeService = exchangeService;
            this.accountsService = accountsService;
            this.chartHelper     = chartHelper;

            ObserveSymbols();
            ObserveAccount();
            ObserveTrade();
            ObserveOrders();

            CloseCommand = new ViewModelCommand(Close);
        }
コード例 #2
0
        protected async override void OnPublished(object data)
        {
            if (isOpen)
            {
                return;
            }

            IsBusy = true;

            if (Messages != null &&
                Messages.Any())
            {
                ClearMessages();
            }

            accountViewModel.Dispatcher = ViewModelContext.UiDispatcher;
            symbolsViewModel.Dispatcher = ViewModelContext.UiDispatcher;
            tradeViewModel.Dispatcher   = ViewModelContext.UiDispatcher;
            ordersViewModel.Dispatcher  = ViewModelContext.UiDispatcher;

            Account = new Account(new Interface.AccountInfo {
                User = new Interface.User()
            });

            try
            {
                userAccount = await accountsService.GetAccount(Title);

                var json = JsonConvert.SerializeObject(userAccount, Formatting.Indented);
                Logger.Log(json, Category.Info, Priority.Medium);
            }
            catch (Exception ex)
            {
                TradeViewModelException(ex.ToString(), ex);
            }

            if (userAccount != null &&
                userAccount.Preferences != null)
            {
                if (!string.IsNullOrWhiteSpace(userAccount.ApiKey))
                {
                    Account.ApiKey    = userAccount.ApiKey;
                    Account.ApiSecret = userAccount.ApiSecret;
                }
            }

            SymbolsViewModel.SetAccount(userAccount);
            AccountViewModel.SetAccount(account);

            isOpen = true;

            IsBusy = false;
        }
コード例 #3
0
        protected override void OnDisposing()
        {
            if (disposed)
            {
                return;
            }

            if (AccountViewModel != null)
            {
                accountObservableSubscription.Dispose();
                AccountViewModel.Dispose();
            }

            foreach (var subscription in symbolObservableSubscriptions.Values)
            {
                subscription.Dispose();
            }

            foreach (var symbol in Symbols)
            {
                symbol.Dispose();
            }

            if (SymbolsViewModel != null)
            {
                symbolsObservableSubscription.Dispose();
                SymbolsViewModel.Dispose();
            }

            if (TradeViewModel != null)
            {
                tradeObservableSubscription.Dispose();
                TradeViewModel.Dispose();
            }

            if (OrdersViewModel != null)
            {
                ordersObservableSubscription.Dispose();
                OrdersViewModel.Dispose();
            }

            disposed = true;
        }