January 27

Краткий обзор платформы 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: tksbrokerapi --accounts --output user-accounts.md
Примеры интерактивного и статического графика цен, построенные с помощью платформы PriceGenerator в TKSBrokerAPI
Сырые данные по биржевым облигациям в формате .XLSX, полученные с помощью платформы TKSBrokerAPI
Календарь выплат по облигации, построенный с помощью платформы TKSBrokerAPI
Пример запроса доступной информации об акции IBM с помощью платформы TKSBrokerAPI: tksbrokerapi -v 10 --ticker IBM --info

Как установить и использовать

Проще всего использовать установку через PyPI:

pip install tksbrokerapi

После этого можно проверить установку командой:

pip show tksbrokerapi

Также можно использовать TKSBrokerAPI, скачав его напрямую из репозитория через git clone.

В первом случае инструмент будет доступен в консоли через команду tksbrokerapi, а во втором случае вам придётся запускать его как обычный Python-скрипт, через python TKSBrokerAPI.py из каталога с исходным кодом.

В документации можно найти множество примеров работы с TKSBrokerAPI как в консоли, так и через импорт модуля.

Перед началом работы с платформой не забудьте получить токен доступа к API Tinkoff Invest, а также узнать свой идентификатор счёта пользователя.

При работе с платформой в консоли можно указать множество параметров и выполнить одно действие. Формат любых команд следующий:

tksbrokerapi [необязательные ключи и параметры] [одно действие]

Для работы с платформой в Python чаще всего используются методы основного класса TKSBrokerAPI.TinkoffBrokerServer(), по всем доступным свойствам и методам которого также имеется документация.

Платформа TKSBrokerAPI. Наш девиз: Технологии · Знания · Наука (Technologies · Knowledge · Science)

На этом всё, а если у вас появились вопросы по работе платформы TKSBrokerAPI, то вы можете задать их на GitHub в разделе 👉 Issues 👈 (также подписывайтесь на блог разработчиков: t.me/TKSBrokerAPI).

Успехов вам в автоматизации биржевой торговли! И профита! 🚀 😉✌️

⚙ Ссылка на проект: github.com/Tim55667757/TKSBrokerAPI
🎁 Поддержать проект: yoomoney.ru/to/410015019068268