Exemplo n.º 1
0
        public async Task MarketCurrenciesTest()
        {
            var handler    = new HttpMessageHandlerStub(HttpStatusCode.OK, "{\"trackingId\":\"QBASTAN\",\"status\":\"OK\",\"payload\":{\"instruments\":[{\"figi\":\"BBG0013HGFT4\",\"ticker\":\"USD000UTSTOM\",\"minPriceIncrement\":0.0025,\"lot\":1000,\"currency\":\"RUB\"},{\"figi\":\"BBG0013HJJ31\",\"ticker\":\"EUR_RUB__TOM\",\"minPriceIncrement\":0.0025,\"lot\":1000,\"currency\":\"RUB\"}],\"total\":2}}");
            var connection = new Connection(BaseUri, WebSocketBaseUri, Token, new HttpClient(handler));
            var context    = connection.Context;
            var stocks     = await context.MarketCurrenciesAsync();

            Assert.NotNull(handler.RequestMessage);
            Assert.Equal(HttpMethod.Get, handler.RequestMessage.Method);
            Assert.Equal(new Uri($"{BaseUri}market/currencies"), handler.RequestMessage.RequestUri);
            Assert.Null(handler.RequestMessage.Content);

            Assert.NotNull(stocks);

            var expected = new MarketInstrumentList(2, new List <MarketInstrument>
            {
                new MarketInstrument("BBG0013HGFT4", "USD000UTSTOM", null, 0.0025m, 1000, Currency.Rub),
                new MarketInstrument("BBG0013HJJ31", "EUR_RUB__TOM", null, 0.0025m, 1000, Currency.Rub)
            });

            Assert.Equal(expected.Total, stocks.Total);
            Assert.Equal(expected.Instruments.Count, stocks.Instruments.Count);

            for (var i = 0; i < expected.Instruments.Count; ++i)
            {
                var expectedInstrument = expected.Instruments[i];
                var actualInstrument   = stocks.Instruments[i];
                Assert.Equal(expectedInstrument.Figi, actualInstrument.Figi);
                Assert.Equal(expectedInstrument.Ticker, actualInstrument.Ticker);
                Assert.Equal(expectedInstrument.Isin, actualInstrument.Isin);
                Assert.Equal(expectedInstrument.MinPriceIncrement, actualInstrument.MinPriceIncrement);
                Assert.Equal(expectedInstrument.Lot, actualInstrument.Lot);
                Assert.Equal(expectedInstrument.Currency, actualInstrument.Currency);
            }
        }
Exemplo n.º 2
0
        public async Task MarketEtfsTest()
        {
            var handler    = new HttpMessageHandlerStub(HttpStatusCode.OK, "{\"trackingId\":\"QBASTAN\",\"status\":\"OK\",\"payload\":{\"instruments\":[{\"figi\":\"BBG005HM5979\",\"ticker\":\"FXJP\",\"isin\":\"IE00BD3QJ310\",\"minPriceIncrement\":1,\"lot\":1,\"currency\":\"RUB\"}],\"total\":1}}");
            var connection = new Connection(BaseUri, WebSocketBaseUri, Token, new HttpClient(handler));
            var context    = connection.Context;
            var stocks     = await context.MarketEtfsAsync();

            Assert.NotNull(handler.RequestMessage);
            Assert.Equal(HttpMethod.Get, handler.RequestMessage.Method);
            Assert.Equal(new Uri($"{BaseUri}market/etfs"), handler.RequestMessage.RequestUri);
            Assert.Null(handler.RequestMessage.Content);

            Assert.NotNull(stocks);

            var expected = new MarketInstrumentList(1, new List <MarketInstrument>
            {
                new MarketInstrument("BBG005HM5979", "FXJP", "IE00BD3QJ310", 1, 1, Currency.Rub)
            });

            Assert.Equal(expected.Total, stocks.Total);
            Assert.Equal(expected.Instruments.Count, stocks.Instruments.Count);

            for (var i = 0; i < expected.Instruments.Count; ++i)
            {
                var expectedInstrument = expected.Instruments[i];
                var actualInstrument   = stocks.Instruments[i];
                Assert.Equal(expectedInstrument.Figi, actualInstrument.Figi);
                Assert.Equal(expectedInstrument.Ticker, actualInstrument.Ticker);
                Assert.Equal(expectedInstrument.Isin, actualInstrument.Isin);
                Assert.Equal(expectedInstrument.MinPriceIncrement, actualInstrument.MinPriceIncrement);
                Assert.Equal(expectedInstrument.Lot, actualInstrument.Lot);
                Assert.Equal(expectedInstrument.Currency, actualInstrument.Currency);
            }
        }
Exemplo n.º 3
0
        public async Task MarketSearchByTickerTest()
        {
            var handler        = new HttpMessageHandlerStub(HttpStatusCode.OK, "{\"trackingId\":\"QBASTAN\",\"status\":\"OK\",\"payload\":{\"instruments\":[{\"figi\":\"BBG000CL9VN6\",\"ticker\":\"NFLX\",\"isin\":\"US64110L1061\",\"minPriceIncrement\":0.01,\"lot\":1,\"currency\":\"USD\",\"name\":\"Netflix\"}],\"total\":1}}");
            var connection     = new Connection(BaseUri, WebSocketBaseUri, Token, new HttpClient(handler));
            var context        = connection.Context;
            var instrumentList = await context.MarketSearchByTickerAsync("NFLX");

            Assert.NotNull(handler.RequestMessage);
            Assert.Equal(HttpMethod.Get, handler.RequestMessage.Method);
            Assert.Equal(new Uri($"{BaseUri}market/search/by-ticker?ticker=NFLX"), handler.RequestMessage.RequestUri);
            Assert.Null(handler.RequestMessage.Content);

            Assert.NotNull(instrumentList);

            var expected = new MarketInstrumentList(1, new List <MarketInstrument>
            {
                new MarketInstrument("BBG000CL9VN6", "NFLX", "US64110L1061", 0.01m, 1, Currency.Usd, "Netflix")
            });

            Assert.Equal(expected.Total, instrumentList.Total);
            Assert.Equal(expected.Instruments.Count, instrumentList.Instruments.Count);

            for (var i = 0; i < expected.Instruments.Count; ++i)
            {
                var expectedInstrument = expected.Instruments[i];
                var actualInstrument   = instrumentList.Instruments[i];
                Assert.Equal(expectedInstrument.Figi, actualInstrument.Figi);
                Assert.Equal(expectedInstrument.Ticker, actualInstrument.Ticker);
                Assert.Equal(expectedInstrument.Isin, actualInstrument.Isin);
                Assert.Equal(expectedInstrument.MinPriceIncrement, actualInstrument.MinPriceIncrement);
                Assert.Equal(expectedInstrument.Lot, actualInstrument.Lot);
                Assert.Equal(expectedInstrument.Currency, actualInstrument.Currency);
            }
        }
Exemplo n.º 4
0
        public async Task MarketStocksTest()
        {
            var handler    = new HttpMessageHandlerStub(HttpStatusCode.OK, "{\"trackingId\":\"QBASTAN\",\"status\":\"OK\",\"payload\":{\"instruments\":[{\"figi\":\"BBG000BR37X2\",\"ticker\":\"PGR\",\"isin\":\"US7433151039\",\"minPriceIncrement\":0.01,\"lot\":1,\"currency\":\"USD\",\"name\":\"Progressive\"}],\"total\":1}}");
            var connection = new Connection(BaseUri, WebSocketBaseUri, Token, new HttpClient(handler));
            var context    = connection.Context;
            var stocks     = await context.MarketStocksAsync();

            Assert.NotNull(handler.RequestMessage);
            Assert.Equal(HttpMethod.Get, handler.RequestMessage.Method);
            Assert.Equal(new Uri($"{BaseUri}market/stocks"), handler.RequestMessage.RequestUri);
            Assert.Null(handler.RequestMessage.Content);

            Assert.NotNull(stocks);

            var expected = new MarketInstrumentList(1, new List <MarketInstrument>
            {
                new MarketInstrument("BBG000BR37X2", "PGR", "US7433151039", 0.01m, 1, Currency.Usd, "Progressive")
            });

            Assert.Equal(expected.Total, stocks.Total);
            Assert.Equal(expected.Instruments.Count, stocks.Instruments.Count);

            for (var i = 0; i < expected.Instruments.Count; ++i)
            {
                var expectedInstrument = expected.Instruments[i];
                var actualInstrument   = stocks.Instruments[i];
                Assert.Equal(expectedInstrument.Figi, actualInstrument.Figi);
                Assert.Equal(expectedInstrument.Ticker, actualInstrument.Ticker);
                Assert.Equal(expectedInstrument.Isin, actualInstrument.Isin);
                Assert.Equal(expectedInstrument.MinPriceIncrement, actualInstrument.MinPriceIncrement);
                Assert.Equal(expectedInstrument.Lot, actualInstrument.Lot);
                Assert.Equal(expectedInstrument.Currency, actualInstrument.Currency);
            }
        }
Exemplo n.º 5
0
        private async void StockRadioButton_OnChecked(object sender, RoutedEventArgs e)
        {
            instruments = await TinkoffInterface.Context.MarketStocksAsync();

            if (instruments == null)
            {
                MessageBox.Show("Failed to get list of stocks");
                return;
            }
            instrumentsLabels          = instruments.Instruments.ConvertAll(v => $"{v.Ticker} - {v.Name}");
            TickerComboBox.ItemsSource = instrumentsLabels;
        }
Exemplo n.º 6
0
        public override bool GetTickersInfo()
        {
            Context cc = GetContext(DefaultAccount);

            Tickers.Clear();
            cc.MarketStocksAsync().ContinueWith(t => {
                MarketInstrumentList list = t.Result;
                foreach (MarketInstrument i in list.Instruments)
                {
                    Tickers.Add(new Tinkoff.TinknoffInvestTicker(this, i));
                }
                IsInitialized = true;
            });
            return(true);
        }
        public async Task MarketBondsTest()
        {
            _handler.Expect(HttpMethod.Get, $"{BaseUri}market/bonds")
            .WithoutContent()
            .RespondJsonFromFile("market-bonds-response");

            var bonds = await _context.MarketBondsAsync();

            var expected = new MarketInstrumentList(1, new List <MarketInstrument>
            {
                new MarketInstrument("BBG00FFH2SJ8", "SU24019RMFS0", "RU000A0JX0J2", 0.001m, 1, Currency.Rub,
                                     "ОФЗ 24019", InstrumentType.Bond)
            });

            bonds.Should().BeEquivalentTo(expected);
        }
        public async Task MarketStocksTest()
        {
            _handler.Expect(HttpMethod.Get, $"{BaseUri}market/stocks")
            .WithoutContent()
            .RespondJsonFromFile("market-stocks-response");

            var stocks = await _context.MarketStocksAsync();

            var expected = new MarketInstrumentList(1, new List <MarketInstrument>
            {
                new MarketInstrument("BBG000BR37X2", "PGR", "US7433151039", 0.01m, 1, Currency.Usd, "Progressive",
                                     InstrumentType.Stock)
            });

            stocks.Should().BeEquivalentTo(expected);
        }
        public async Task MarketEtfsTest()
        {
            _handler.Expect(HttpMethod.Get, $"{BaseUri}market/etfs")
            .WithoutContent()
            .RespondJsonFromFile("market-etfs-response");

            var etfs = await _context.MarketEtfsAsync();

            var expected = new MarketInstrumentList(1, new List <MarketInstrument>
            {
                new MarketInstrument("BBG005HM5979", "FXJP", "IE00BD3QJ310", 1, 1, Currency.Rub,
                                     "Акции японских компаний", InstrumentType.Etf)
            });

            etfs.Should().BeEquivalentTo(expected);
        }
        public async Task MarketCurrenciesTest()
        {
            _handler.Expect(HttpMethod.Get, $"{BaseUri}market/currencies")
            .WithoutContent()
            .RespondJsonFromFile("market-currencies-response");

            var currencies = await _context.MarketCurrenciesAsync();

            var expected = new MarketInstrumentList(2, new List <MarketInstrument>
            {
                new MarketInstrument("BBG0013HGFT4", "USD000UTSTOM", null, 0.0025m, 1000, Currency.Rub, "Доллар США",
                                     InstrumentType.Currency),
                new MarketInstrument("BBG0013HJJ31", "EUR_RUB__TOM", null, 0.0025m, 1000, Currency.Rub, "Евро",
                                     InstrumentType.Currency)
            });

            currencies.Should().BeEquivalentTo(expected);
        }
        public async Task MarketSearchByTickerTest()
        {
            const string ticker = "NFLX";

            _handler.Expect(HttpMethod.Get, $"{BaseUri}market/search/by-ticker")
            .WithQueryString("ticker", ticker)
            .WithoutContent()
            .RespondJsonFromFile("market-search-by-ticker-response");

            var instrumentList = await _context.MarketSearchByTickerAsync(ticker);

            var expected = new MarketInstrumentList(1, new List <MarketInstrument>
            {
                new MarketInstrument(Figi, ticker, "US64110L1061", 0.01m, 1, Currency.Usd, "Netflix",
                                     InstrumentType.Stock)
            });

            instrumentList.Should().BeEquivalentTo(expected);
        }
Exemplo n.º 12
0
        public override bool UpdateTickersInfo()
        {
            if (!IsInitialized)
            {
                return(true);
            }
            Context cc = GetContext(DefaultAccount);

            cc.MarketStocksAsync().ContinueWith(t => {
                MarketInstrumentList list = t.Result;
                foreach (MarketInstrument i in list.Instruments)
                {
                    TinknoffInvestTicker ticker = (TinknoffInvestTicker)Tickers.FirstOrDefault(tt => tt.Name == i.Name);
                    if (ticker != null)
                    {
                        ticker.Instrument = i;
                        continue;
                    }
                    Tickers.Add(new Tinkoff.TinknoffInvestTicker(this, i));
                }
            });
            return(true);
        }