private PositionsViewModel GetVm(
            IMarketDataManager marketDataManager         = null,
            IPositionManager positionManager             = null,
            IContractManager contractManager             = null,
            ITradeRecordingService tradeRecordingService = null)
        {
            var manager = marketDataManager ?? Substitute.For <IMarketDataManager>();

            _accountManager = Substitute.For <IAccountManager>();

            if (positionManager == null)
            {
                positionManager = Substitute.For <IPositionManager>();
                positionManager.RequestOpenOrdersAsync().Returns(Task.FromResult(new List <OpenOrderEventArgs>()));
            }

            if (contractManager == null)
            {
                contractManager = Substitute.For <IContractManager>();
                contractManager.RequestDetailsAsync(Arg.Any <Contract>()).Returns(Task.FromResult(new List <ContractDetails>()));
            }

            var queueProcessor = Substitute.For <IQueueProcessor>();

            queueProcessor
            .When(x => x.Enqueue(Arg.Any <Action>()))
            .Do(x =>
            {
                var action = x.Arg <Action>();
                action.Invoke();
            });

            var dispatcherHelper = Substitute.For <IDispatcherHelper>();

            dispatcherHelper
            .When(x => x.InvokeOnUiThread(Arg.Any <Action>()))
            .Do(x =>
            {
                var action = x.Arg <Action>();
                action.Invoke();
            });

            if (tradeRecordingService == null)
            {
                tradeRecordingService = Substitute.For <ITradeRecordingService>();
            }

            return(new PositionsViewModel(dispatcherHelper, manager, _accountManager, positionManager, contractManager, queueProcessor, tradeRecordingService));
        }
示例#2
0
        public async Task <FindCommandResultsModel> IssueFindSymbolRequestAsync(Contract contract)
        {
            var model = new FindCommandResultsModel();

            var getLatestPriceTask = _marketDataManager.RequestLatestPriceAsync(contract);
            var getHistoryTask     = _historicalDataManager.GetHistoricalDataAsync(
                contract, DateTime.UtcNow, TwsDuration.OneMonth, TwsBarSizeSetting.OneDay, TwsHistoricalDataRequestType.Midpoint);
            var detailsTask = _contractManager.RequestDetailsAsync(contract);

            await Task.WhenAll(getLatestPriceTask, getHistoryTask, detailsTask).ConfigureAwait(false);

            model.LatestPrice  = await getLatestPriceTask;
            model.PriceHistory = await getHistoryTask;
            model.Details      = await detailsTask;

            return(model);
        }