Это видео открывает долгожданный сериал, где я буду разбираться как совершать сделки с помощью API Тинькофф Инвестиции и Python. Я покажу как можно покупать бумаги (акции, облигации и валюту) на питоне с помощью API. Пока я планирую работать только с песочницей, но код для работы с песочницей вполне может работать и рабочим аккаунтом с небольшими изменениями.

Сегодня я расскажу что такое Песочница и чем она отличается от реального счета. Как её инициализировать, как пополнить счет песочницы виртуальными деньгами и как совершать первые сделки.

Я предполагаю что вы посмотрели мои предыдущие видео в плейлисте Open API Тинькофф Инвестиции, поэтому рассказывать что это такое, как и пользоваться, что такое токены, какой SDK использовать, с чего вообще начать и так далее не буду — все это есть в предыдущих видео в этом плейлисте.

Код примера из видео доступен, как всегда, в репозитории в ветке с номером 1.

Что такое Песочница API Тинькофф Инвестиции

У Open API Тинькофф Инвестиции есть два окружения (режима) в котором может работать API. Одно рабочее (Production), уже знакомое нам по предыдущим видео, где у нас идет работа с реальными деньгами, где может быть несколько брокерских счетов и счет ИИС. Второе — Песочница (Sandbox), доступ к нему я могу получить только программно с помощью Open API. Это как бы игровое, тестовое окружение, где деньги виртуальные и счет мы можем пополнить в любой момент и в любой момент пересоздать счет с нуля.

Песочница предназначена для тестирования стратегий и кода для работы с API. Песочница работает с теми же методами что и Production, поэтому код разработанный и оттестированный в Песочнице будет работать и в Рабочем режиме с минимальными изменениями.

При тестировании стратегий (не кода —  с кодом все проще) обратите внимание что в Песочнице:

  • сделки исполняются моментально и  в полном объеме
  • комиссии при покупке/продаже не учитываются

Эти факты могут значительно влиять на эффективность стратегии. Например при скальпинге неликвидными бумагами.

Структура проекта для видео

Как обычно, токены я вынес в отдельный пакет и добавил этот пакет в gitignore, соответственно если будете клонировать репозиторий — не забудьте создать пакет creds и наполнить его токенами.

Нужно установить зависимости в файле req.txt. Я обычно использую для этого команду pip install -r req.txt.

Вся же работа с Open API Тинькофф Инвестиции будет вестись в классе classes.Ti , конструктору которого по умолчанию передается булева переменная use_sandbox, которая в значении True означает что я работаю с Песочницей (других режимов пока и нет особо, но на будущее возможность заложил).

Инициализация Песочницы Open API Тинькофф Инвестиций

Если впервые включить режим песочницы, создать синхронного клиента с помощью SDK от daxartio и запросить состояние счетов с методом get_accounts, то в ответ я получу пустой массив. Дело в том, что перед использованием Песочницы её нужно инициализировать. То есть создать счета. А затем закинуть на эти счета виртуальные деньги. Для этого я использую методы register_sandbox_account и set_sandbox_currencies_balance.

В классе Ti я создал метод create_sandbox, где я:

  • проверяю инициализирована ли Песочница ранее,
  • если да, то удаляю её (хотя в API есть и методы по очистке Песочницы)
  • затем создаю Песочницу вновь получаю номер счета Песочницы,
  • наполняю счета Песочницы деньгами в рублях и долларах (есть ещё возможность использовать и евро, но мне не надо)

В результате метод create_sandbox возвращает номер брокерского аккаунта, который необходим для совершения сделок.

Метод для покупки бумаг с Open API Тинькофф Инвестиций

Для покупки бумаг я создал метод buy, который просто обертка над методом tinvest.MarketOrderRequest — это post запрос к API Тинькофф Инвестиций, где я указываю figi бумаги которую нужно купить и количество лотов для покупки. Как работает MarketOrderRequest я разберу в следующих видео, а сегодня он будет просто покупать доллары на бирже по «лучшей цене». А теперь давайте посмотрим как это все работает.

Если у тебя есть вопросы — то пиши их в комментариях под видео, я стараюсь отвечать на все. И подписывайся на канал — скоро будет продолжение ….