Это видео открывает долгожданный сериал, где я буду разбираться как совершать сделки с помощью 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 я разберу в следующих видео, а сегодня он будет просто покупать доллары на бирже по «лучшей цене». А теперь давайте посмотрим как это все работает.
Если у тебя есть вопросы — то пиши их в комментариях под видео, я стараюсь отвечать на все. И подписывайся на канал — скоро будет продолжение ….