пятница, 29 июля 2022 г.

TKSBrokerAPI — python API для работы с Tinkoff Open API и доступа к торговому серверу брокера Тинькофф Инвестиции через REST протокол

TKSBrokerAPI

Build Status pypi license en-doc api-doc gift

Ссылка на проект: https://github.com/Tim55667757/TKSBrokerAPI

Поддержать проект: https://yoomoney.ru/to/410015019068268

Если вы занимаетесь одновременно инвестированием, автоматизацией и алгоритмической торговлей, то наверняка слышали про Tinkoff Open API (к нему есть неплохая Swagger-документация) — это API, предоставляемое брокером Тинькофф Инвестиции для автоматизации работы биржевых торговых роботов. Если ещё не слышали, то можете завести себе аккаунт и протестировать его возможности сами.

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

TKSBrokerAPI — это более простой инструмент, который можно использовать как обычный python-модуль или запускать из командной строки, и сразу из коробки получить возможность работать со счётом у брокера Тинькофф Инвестиции: получать информацию о состоянии портфеля, включая элементарную аналитику, открывать и закрывать позиции, получать общую информацию о торгуемых на бирже инструментах, запрашивать цены и получать отчёты об операциях за указанный период. Все данные выводятся сразу в консоль: в текстовом виде или сохраняются в файлах формата Markdown.


Пример запроса клиентского портфеля и вывод информации в консоль

TKSBrokerAPI позволяет автоматизировать рутинные торговые операции и реализовать ваши торговые сценарии, либо только получать нужную информацию от брокера. Благодаря богатой системе консольных команд его достаточно просто встроить в системы автоматизации CI/CD.

В будущем, на основе этого модуля, в опенсорс будут выложены готовые торговые сценарии и шаблоны для написания собственных сценариев на языке Python.

Основные возможности

На момент последнего актуального релиза v.1.1.48 инструмент TKSBrokerAPI умеет:

  • Получать с сервера брокера список всех доступных для указанного аккаунта инструментов: валют, акций, облигаций, фондов и фьючерсов.
  • Запрашивать у брокера информацию об инструменте, зная его тикер или идентификатор FIGI.
  • Запрашивать у брокера стакан актуальных биржевых цен для указанного по тикеру или FIGI инструмента, при этом можно указать глубину стакана.
  • Получать с сервера брокера таблицу последних цен.
  • Получать информацию о состоянии портфеля пользователя и аналитику по нему: распределение портфеля по активам, компаниям, секторам и валютам активов.
  • Получать с сервера брокера информацию о совершённых сделках за указанный период и представлять её в табличном виде.
  • Совершать сделки по рынку, покупая или продавая активы в стакане, удовлетворяя имеющиеся заявки от продавцов или покупателей.
  • Открывать ордера любого типа: отложенные лимитные, действующие в пределах одной торговой сессии, и стоп-ордера, которые могут действовать до отмены или до указанной даты.
  • Закрывать открытые ранее ордера или списки ордеров любого типа по их ID.
  • Закрывать ранее открытые позиции полностью (кроме заблокированных объёмов), указав конкретный инструмент или список инструментов через их тикеры или FIGI.
  • Отменять все открытые ранее ордера и закрывать текущие позиции по всем инструментам сразу, кроме заблокированных объёмов и позиций по валютам, которые необходимо закрывать отдельно.

Как установить


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

pip install tksbrokerapi

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

pip show tksbrokerapi

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

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

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

Токен

Сервис TINKOFF INVEST API использует для аутентификации токен. Токен — это набор символов, в котором зашифрованы данные о владельце, правах доступ и прочая информация, необходимая для авторизации в сервисе. Токен необходимо передавать на сервер с каждым сетевым запросом.

Модуль TKSBrokerAPI берёт всю работу с токенами на себя. Есть три варианта задания токена пользователя:

  • при вызове tksbrokerapi в консоли укажите ключ: --token "your_token_here";
  • либо укажите token при инициализации класса в python-скрипте: TKSBrokerAPI.TinkoffBrokerServer(token="your_token_here", ...);
  • или же можно заранее установить специальную переменную в пользовательском окружении: TKS_API_TOKEN=your_token_here.

 Работа с TINKOFF INVEST API без выпуска и использования токена невозможна. До начала работы с модулем TKSBrokerAPI, пожалуйста, откройте брокерский счёт в Тинькофф Инвестиции, а затем выберете нужный вам вид токена и создайте его, как указано по ссылке в официальной документации.

Идентификатор счёта пользователя

Второй важный параметр для работы TKSBrokerAPI — это числовой идентификатор счёта пользователя. Он не является обязательным, но без его указания будет невозможно выполнить многие операции через API, логически завязанные на конкретного пользователя (посмотреть портфель по брокерскому счёту, выполнить торговые операции и многие другие). Вы можете найти это число в любом брокерском отчёте, которые можно заказать либо из мобильного приложения Тинькофф Инвестиции, либо в личном кабинете на их сайте. Обычно идентификатор счёта пользователя находится сверху, в "шапке" отчётов. Также можно узнать этот номер спросив в чате техподдержки Тинькофф Инвестиции.

Есть три варианта задания идентификатора счёта пользователя:

  • при вызове tksbrokerapi в консоли укажите ключ: --account-id your_id_number";
  • либо укажите accountId при инициализации класса в python-скрипте: TKSBrokerAPI.TinkoffBrokerServer(token="...", accountId=your_id_number, ...);
  • или же можно заранее установить специальную переменную в пользовательском окружении: TKS_ACCOUNT_ID=your_id_number.

Примеры использования

После того, как все необходимые настройки будут выполнены, вы получите токен и узнаете свой идентификатор аккаунта, можно начать полноценно использовать модуль TKSBrokerAPI. Смотрите примеры по ссылке.

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

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

Примеры:



На этом всё, вопросы задавайте в GitHub в разделе 👉 Issues 👈, пожалуйста.

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

gift