Esempio n. 1
0
        /// <summary>
        /// Регистрация нового аккаунта в песочнице
        /// </summary>
        /// <returns></returns>
        private async Task RegisterSandboxAccount()
        {
            var sandboxAccount = await _context.RegisterAsync(BrokerAccountType.Tinkoff);

            _accountId = sandboxAccount.BrokerAccountId;
            Console.WriteLine($"AccauntId:{_accountId}");
        }
        public async Task RegisterTest()
        {
            _handler.Expect(HttpMethod.Post, $"{BaseUri}sandbox/register")
            .WithJsonContentFromFile("sandbox-register-request")
            .RespondJsonFromFile("sandbox-register-response");

            var response = await _context.RegisterAsync(BrokerAccountType.Tinkoff);

            var expectedResponse = new SandboxAccount(BrokerAccountType.Tinkoff, BrokerAccountId);

            response.Should().BeEquivalentTo(expectedResponse);
        }
Esempio n. 3
0
        public async Task StartAsync()
        {
            // register new sandbox account
            var sandboxAccount = await _context.RegisterAsync(BrokerAccountType.Tinkoff);

            _accountId = sandboxAccount.BrokerAccountId;

            // set balance
            foreach (var currency in new[] { Currency.Rub, Currency.Usd, Currency.Eur })
            {
                await _context.SetCurrencyBalanceAsync(currency, Random.Next(1, 10) * 100_000,
                                                       sandboxAccount.BrokerAccountId);
            }

            await CheckBalanceAsync();

            // select random instrument
            var instrumentList = await _context.MarketStocksAsync();

            var randomInstrumentIndex = Random.Next(instrumentList.Total);
            var randomInstrument      = instrumentList.Instruments[randomInstrumentIndex];

            Console.WriteLine($"Selected Instrument:\n{randomInstrument.ToString().Replace(", ", "\n")}");
            Console.WriteLine();

            // get candles
            var now        = DateTime.Now;
            var candleList = await _context.MarketCandlesAsync(randomInstrument.Figi, now.AddMinutes(-5), now, CandleInterval.Minute);

            foreach (var candle in candleList.Candles)
            {
                Console.WriteLine(candle);
            }
            Console.WriteLine();

            Console.WriteLine("Buy 1 lot");
            await _context.PlaceMarketOrderAsync(new MarketOrder(randomInstrument.Figi, 1, OperationType.Buy,
                                                                 _accountId));

            await CheckBalanceAsync();

            await Task.Delay(1000);

            Console.WriteLine("Sell 1 lot");
            await _context.PlaceMarketOrderAsync(new MarketOrder(randomInstrument.Figi, 1, OperationType.Sell,
                                                                 _accountId));

            await CheckBalanceAsync();
        }
        private async void Init()
        {
            await _context.RegisterAsync(BrokerAccountType.Tinkoff);

            var balance = await Do(ctx => ctx.PortfolioCurrenciesAsync());

            foreach (var currency in balance.Currencies)
            {
                if (currency.Balance > 0)
                {
                    continue;
                }
                await Do(_ => _context.SetCurrencyBalanceAsync(currency.Currency, 1_000_000));
            }
        }
Esempio n. 5
0
        public async Task Init()
        {
            _sandbox = _broker.SandboxConnection.Context;
            var account = await _sandbox.RegisterAsync(BrokerAccountType.Tinkoff);

            _accountId = account.BrokerAccountId;

            //await _sandbox.ClearAsync(_accountId);
            // set balance
            //foreach (var currency in new[] { Currency.Rub, Currency.Usd })
            //    await _sandbox.SetCurrencyBalanceAsync(currency,
            //        currency == Currency.Rub ? 100_000 : 10_000, _accountId);
            _currencies["USD"] = new CurrencyInfo {
                Balance = 2000, Currency = Currency.Usd
            };
            _currencies["RUB"] = new CurrencyInfo {
                Balance = 100000, Currency = Currency.Rub
            };

            _telegram.PostMessage($"Аккаунт песочницы создан. Id {_accountId}.", null);

            await ReportBalances();
        }