public async Task SetCurrencyBalanceTest()
        {
            _handler.Expect(HttpMethod.Post, $"{BaseUri}sandbox/currencies/balance")
            .WithQueryString("brokerAccountId", BrokerAccountId)
            .WithJsonContentFromFile("set-currency-balance-request")
            .RespondJsonFromFile("ok");

            await _context.SetCurrencyBalanceAsync(Currency.Usd, 100.5m, BrokerAccountId);
        }
Пример #2
0
        /// <summary>
        /// Начальная инициализация портфеля
        /// </summary>
        /// <returns></returns>
        private async Task InitialBalance()
        {
            //инициализируем начальный баланс случайными значениями
            foreach (var currency in new[] { Currency.Rub, Currency.Usd, Currency.Eur })
            {
                await _context.SetCurrencyBalanceAsync(currency, _random.Next(3, 10) * 1_000_000, _accountId);
            }

            //покупаем акции по FIGI, которые в настройках
            foreach (string tradeFigi in _tradingBaseStrategy.SettingProvider.TradeFigis)
            {
                await _context.PlaceMarketOrderAsync(new MarketOrder(tradeFigi, 1, OperationType.Buy, _accountId));
            }
        }
Пример #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();
        }
Пример #4
0
        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));
            }
        }