TKSBrokerAPI
Ссылка на проект: 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
.
Идентификатор счёта пользователя
Второй важный параметр для работы TKSBrokerAPI — это числовой идентификатор счёта пользователя. Он не является обязательным, но без его указания будет невозможно выполнить многие операции через API, логически завязанные на конкретного пользователя (посмотреть портфель по брокерскому счёту, выполнить торговые операции и многие другие). Вы можете найти это число в любом брокерском отчёте, которые можно заказать либо из мобильного приложения Тинькофф Инвестиции, либо в личном кабинете на их сайте. Обычно идентификатор счёта пользователя находится сверху, в "шапке" отчётов. Также можно узнать этот номер спросив в чате техподдержки Тинькофф Инвестиции.
Есть три варианта задания идентификатора счёта пользователя:
- при вызове
tksbrokerapi
в консоли укажите ключ:--account-id your_id_number"
; - либо укажите
accountId
при инициализации класса в python-скрипте:TKSBrokerAPI.TinkoffBrokerServer(token="...", accountId=your_id_number, ...)
; - или же можно заранее установить специальную переменную в пользовательском окружении:
TKS_ACCOUNT_ID=your_id_number
.
Примеры использования
При запуске программы в консоли можно указать множество параметров и выполнить одно действие. Формат любых команд следующий:
tksbrokerapi [необязательные ключи и параметры] [одно действие]
Примеры:
- Из командной строки
- Получить справку по ключам
- Получить список всех доступных для торговли инструментов
- Получить информацию по инструменту
- Запросить стакан цен с заданной глубиной
- Запросить таблицу последних актуальных цен для списка инструментов
- Получить текущий портфель пользователя и статистику распределения активов
- Получить отчёт по операциям с портфелем за указанный период
- Совершить сделку по рынку
- Открыть отложенный лимитный или стоп-ордер
- Отменить ордера и закрыть позиции
- Как python API через импорт модуля TKSBrokerAPI
На этом всё, вопросы задавайте в GitHub в разделе