Краткий обзор платформы TKSBrokerAPI для автоматизации торговли на бирже
Введение
Если вы занимаетесь одновременно инвестированием, автоматизацией и алгоритмической торговлей, то наверняка слышали про Tinkoff Invest API (к нему есть неплохая Swagger-документация) — это API, предоставляемое брокером Тинькофф Инвестиции для автоматизации работы биржевых торговых роботов. Если ещё не слышали, то можете завести себе аккаунт и протестировать его возможности сами.
При работе с любыми API, всегда возникают технические трудности: высокий порог вхождения, необходимость в изучении документации, написание и отладка кода для выполнения сетевых запросов по формату API. Пройдёт много времени, прежде чем у вас дойдёт дело до реализации работающего торгового алгоритма.
⚙️TKSBrokerAPI — это платформа для автоматизации торговых операций и взаимодействия с Tinkoff Invest API через REST-протокол (блог разработчиков: t.me/TKSBrokerAPI). Инструмент предоставляет два варианта использования: как Python-модуль для интеграции в собственные скрипты или как консольное приложение с богатым набором команд и ключей. С его помощью можно получать данные о портфеле (включая базовую аналитику), управлять позициями, запрашивать информацию о торгуемых инструментах, текущие цены, а также формировать отчёты об операциях за выбранный период. Все результаты выводятся в консоль в текстовом виде или сохраняются в Markdown/HTML-файлах. Платформа упрощает рутинные задачи, реализацию торговых сценариев и легко интегрируется в CI/CD-конвейеры, что делает её универсальным решением для разработчиков и аналитиков.
Вот простой пример запроса клиентского портфеля и вывод информации в консоль: tksbrokerapi --overview
.
tksbrokerapi --overview
На основе этой платформы в опенсорс выложены готовые сценарии и шаблоны для работы с биржей, написанные на языке Python.
Основные возможности
С помощью платформы TKSBrokerAPI возможно выполнение множества операций (как с помощью консольных команд, так и через Python-методы):
- Получать с сервера брокера список всех доступных для указанного аккаунта инструментов: валют, акций, облигаций, фондов и фьючерсов.
- Запрашивать у брокера информацию об инструменте, зная его тикер или идентификатор FIGI.
- Запрашивать у брокера стакан актуальных биржевых цен для указанного по тикеру или FIGI инструмента, при этом можно указать глубину стакана.
- Получать с сервера брокера таблицу последних цен.
- Получать информацию о состоянии портфеля пользователя и аналитику по нему: распределение портфеля по активам, компаниям, секторам и валютам активов.
- Получать с сервера брокера информацию о совершённых сделках за указанный период и представлять её в табличном виде.
- Совершать сделки по рынку, покупая или продавая активы в стакане, удовлетворяя имеющиеся заявки от продавцов или покупателей.
- Открывать ордера любого типа: отложенные лимитные, действующие в пределах одной торговой сессии, и стоп-ордера, которые могут действовать до отмены или до указанной даты.
- Закрывать открытые ранее ордера или списки ордеров любого типа по их ID.
- Закрывать ранее открытые позиции полностью (кроме заблокированных объёмов), указав конкретный инструмент или список инструментов через их тикеры или FIGI.
- Отменять все открытые ранее ордера и закрывать текущие позиции по всем инструментам сразу, кроме заблокированных объёмов и позиций по валютам, которые необходимо закрывать отдельно.
- Строить интерактивные или статические свечные графики цен (используя библиотеку PriceGenerator).
- Запрашивать данные об облигациях, обогащать их и превращать в Pandas DataFrame с большим количеством дополнительной информации для будущего использования датасайнтистами или биржевыми аналитиками: основные данные, текущая цена, календарь выплат по облигациям, купонный доход, текущая доходность и некоторая статистика, а также сохранять эти данные в XLSX-файл.
- Генерировать календарь выплат по всем сразу или по списку облигаций и сохранять его в файл формата Markdown или в XLSX-файл.
- Запрашивать общую информацию о пользователе, список аккаунтов (в том числе accountId всех счетов), доступные средства для маржинальной торговли и лимиты подключений через API для текущего тарифа, а также узнавать лимиты пользователя на доступные для вывода средства.
tksbrokerapi --accounts --output user-accounts.md
tksbrokerapi -v 10 --ticker IBM --info
Как установить и использовать
Проще всего использовать установку через PyPI:
После этого можно проверить установку командой:
Также можно использовать TKSBrokerAPI, скачав его напрямую из репозитория через git clone
.
В первом случае инструмент будет доступен в консоли через команду tksbrokerapi
, а во втором случае вам придётся запускать его как обычный Python-скрипт, через python TKSBrokerAPI.py
из каталога с исходным кодом.
В документации можно найти множество примеров работы с TKSBrokerAPI как в консоли, так и через импорт модуля.
Перед началом работы с платформой не забудьте получить токен доступа к API Tinkoff Invest, а также узнать свой идентификатор счёта пользователя.
При работе с платформой в консоли можно указать множество параметров и выполнить одно действие. Формат любых команд следующий:
tksbrokerapi [необязательные ключи и параметры] [одно действие]
Для работы с платформой в Python чаще всего используются методы основного класса TKSBrokerAPI.TinkoffBrokerServer()
, по всем доступным свойствам и методам которого также имеется документация.
На этом всё, а если у вас появились вопросы по работе платформы TKSBrokerAPI, то вы можете задать их на GitHub в разделе 👉 Issues 👈 (также подписывайтесь на блог разработчиков: t.me/TKSBrokerAPI).
Успехов вам в автоматизации биржевой торговли! И профита! 🚀 😉✌️
⚙ Ссылка на проект: github.com/Tim55667757/TKSBrokerAPI
🎁 Поддержать проект: yoomoney.ru/to/410015019068268