Пример #1
0
        public async Task UpdateOrders()
        {
            // Arrange
            var exchangeApi      = ExchangeServiceHelper.GetExchangeService(ExchangeServiceType.UpdateOrders);
            var exchangeService  = new WpfExchangeService(exchangeApi);
            var accountViewModel = new OrdersViewModel(exchangeService, new DebugLogger());

            var account = new Account(new Interface.Model.AccountInfo {
                User = new Interface.Model.User()
            })
            {
                ApiKey    = "apikey",
                ApiSecret = "apisecret"
            };

            accountViewModel.Account = account;
            foreach (var order in TestHelper.Orders)
            {
                accountViewModel.Orders.Add(order.GetViewOrder());
            }

            //Act
            await accountViewModel.UpdateOrders(account);

            // Assert
            foreach (var order in accountViewModel.Orders)
            {
                Assert.AreEqual(order.ExecutedQuantity, Math.Round(order.OriginalQuantity * 0.5m, 0));
                Assert.AreEqual(order.FilledPercent, (int)((order.ExecutedQuantity / order.OriginalQuantity) * 100));
            }
        }
Пример #2
0
        private void ObserveAccount()
        {
            var accountObservable = Observable.FromEventPattern <AccountEventArgs>(
                eventHandler => AccountViewModel.OnAccountNotification += eventHandler,
                eventHandler => AccountViewModel.OnAccountNotification -= eventHandler)
                                    .Select(eventPattern => eventPattern.EventArgs);

            accountObservableSubscription = accountObservable.Subscribe(args =>
            {
                if (args.HasException)
                {
                    TradeViewModelException(args);
                }
                else if (args.AccountEventType.Equals(AccountEventType.LoggedIn) ||
                         args.AccountEventType.Equals(AccountEventType.LoggedOut))
                {
                    TradeViewModel.SetAccount(args.Value);
                    OrdersViewModel.SetAccount(args.Value).FireAndForget();
                }
                else if (args.AccountEventType.Equals(AccountEventType.UpdateOrders))
                {
                    TradeViewModel.Touch();
                    OrdersViewModel.UpdateOrders(args.Value).FireAndForget();
                }
                else if (args.AccountEventType.Equals(AccountEventType.SelectedAsset))
                {
                    TradeViewModel.SetSymbol(args.SelectedAsset);
                }
            });
        }
Пример #3
0
        private void ObserveAccount()
        {
            var accountObservable = Observable.FromEventPattern <AccountEventArgs>(
                eventHandler => AccountViewModel.OnAccountNotification += eventHandler,
                eventHandler => AccountViewModel.OnAccountNotification -= eventHandler)
                                    .Select(eventPattern => eventPattern.EventArgs);

            accountSubscription = accountObservable.Subscribe(async args =>
            {
                if (args.HasException)
                {
                    NotificationsAdd(new Message {
                        MessageType = MessageType.Error, Text = args.Message, TextVerbose = args.Exception.ToString()
                    });
                }
                else if (args.AccountEventType.Equals(AccountEventType.LoggedIn))
                {
                    await OrdersViewModel.SetAccount(args.Value);
                }
                else if (args.AccountEventType.Equals(AccountEventType.UpdateOrders))
                {
                    await OrdersViewModel.UpdateOrders(args.Value);
                }
                else if (!string.IsNullOrWhiteSpace(args.Message))
                {
                    NotificationsAdd(new Message {
                        MessageType = MessageType.Info, Text = args.Message
                    });
                }
            });
        }