Exemple #1
0
        /// <summary>
        /// Получение последней цены
        /// </summary>
        /// <param name="tradePosition"></param>
        /// <returns></returns>
        private async Task CalcLastPrice(TradePosition tradePosition)
        {
            //Получаем текущую цену - это цена LastPrice, которая передается вместе со стаканом заявок
            var orderbook = await _context.MarketOrderbookAsync(tradePosition.Figi, 1);

            tradePosition.LastPrice = orderbook.LastPrice;

            if (tradePosition.PortfolioPosition == null)
            {
                tradePosition.AvgPrice  = tradePosition.LastPrice;
                tradePosition.ProfitSum = Decimal.Zero;
                Console.WriteLine($"Figi: {tradePosition.Figi} avgprice: {tradePosition.AvgPrice} lastprice: {tradePosition.LastPrice}");
            }
            else
            {
                Console.WriteLine($"Ticker: {tradePosition.PortfolioPosition.Ticker} balance:{tradePosition.PortfolioPosition.Balance} avgprice: {tradePosition.AvgPrice} lastprice: {tradePosition.LastPrice} profit: {tradePosition.ProfitSum} prevoperation: {tradePosition.PrevOperationType}");
            }
        }
        public async Task MarketOrderbookTest()
        {
            _handler.Expect(HttpMethod.Get, $"{BaseUri}market/orderbook")
            .WithQueryString(new Dictionary <string, string>
            {
                ["figi"]  = Figi,
                ["depth"] = "5"
            })
            .WithoutContent()
            .RespondJsonFromFile("market-orderbook-response");

            var orderbook = await _context.MarketOrderbookAsync(Figi, 5);

            var expected = new Orderbook(
                5,
                new List <OrderbookRecord>
            {
                new OrderbookRecord(37, 293.44m),
                new OrderbookRecord(9, 293.42m),
                new OrderbookRecord(1, 293.4m),
                new OrderbookRecord(35, 293.1m),
                new OrderbookRecord(1, 293.09m)
            },
                new List <OrderbookRecord>
            {
                new OrderbookRecord(1, 293.69m),
                new OrderbookRecord(1, 293.72m),
                new OrderbookRecord(35, 293.79m),
                new OrderbookRecord(1, 293.8m),
                new OrderbookRecord(20, 293.87m)
            },
                Figi,
                TradeStatus.NormalTrading,
                0.01m,
                293.55m,
                293.55m,
                293.35m,
                307.5m,
                280.73m);

            orderbook.Should().BeEquivalentTo(expected);
        }