public async Task PortfolioTest()
        {
            _handler.Expect(HttpMethod.Get, $"{BaseUri}portfolio")
            .WithQueryString("brokerAccountId", BrokerAccountId)
            .WithoutContent()
            .RespondJsonFromFile("portfolio-response");

            var portfolio = await _context.PortfolioAsync(BrokerAccountId);

            var expected = new Portfolio(new List <Portfolio.Position>
            {
                new Portfolio.Position(
                    "name",
                    Figi,
                    "NFLX",
                    "US0004026250",
                    InstrumentType.Stock,
                    10,
                    5,
                    new MoneyAmount(Currency.Usd, 10),
                    10,
                    new MoneyAmount(Currency.Usd, 295.4m),
                    new MoneyAmount(Currency.Usd, 292.4m))
            });

            portfolio.Should().BeEquivalentTo(expected);
        }
Example #2
0
        /// <summary>
        /// Инициализация списка активов портфеля
        /// </summary>
        /// <returns></returns>
        private async Task InitialTradePositions()
        {
            //получаем текущий портфель на счете
            var portfolio = await _context.PortfolioAsync(_accountId);

            if (!portfolio.Positions.Any(p => p.InstrumentType == InstrumentType.Currency && p.Balance > 0))
            {
                await InitialBalance();

                await InitialTradePositions();
            }
            else
            {
                foreach (var tradeFigi in _tradingBaseStrategy.SettingProvider.TradeFigis)
                {
                    TradePosition currentTradePosition = _tradePositions.FirstOrDefault(p => p.Figi == tradeFigi);
                    if (currentTradePosition == null)
                    {
                        currentTradePosition = new TradePosition(tradeFigi);
                        _tradePositions.Add(currentTradePosition);
                    }
                    //обновляем портфелльную позицию
                    currentTradePosition.PortfolioPosition = portfolio.Positions.FirstOrDefault(x => x.Figi == tradeFigi);
                }
            }
        }