T-Invest
pip install tinvest
Данный проект представляет собой инструментарий на языке Python для работы с OpenAPI Тинькофф Инвестиции, который можно использовать для создания торговых роботов.
Клиент предоставляет синхронный и асинхронный API для взаимодействия с Тинькофф Инвестиции.
Есть возможность делать запросы через командную строку, подробнее тут.
pip install tinvest[cli]
# Пример использования
tinvest openapi --token TOKEN portfolio
Performance
pip install tinvest[uvloop]
pip install tinvest[orjson]
Начало работы
Где взять токен аутентификации?
В разделе инвестиций вашего личного кабинета tinkoff. Далее:
- Перейдите в настройки
- Проверьте, что функция "Подтверждение сделок кодом" отключена
- Выпустите токен для торговли на бирже и режима "песочницы" (sandbox)
- Скопируйте токен и сохраните, токен отображается только один раз, просмотреть его позже не получится, тем не менее вы можете выпускать неограниченное количество токенов
Документация
Быстрый старт
Для непосредственного взаимодействия с OpenAPI нужно создать клиента. Клиенты разделены на streaming и rest.
Примеры использования SDK находятся ниже.
У меня есть вопрос
Основной репозиторий с документацией — в нем вы можете задать вопрос в Issues и получать информацию о релизах в Releases. Если возникают вопросы по данному SDK, нашёлся баг или есть предложения по улучшению, то можно задать его в Issues.
Примеры
Для работы с данным пакетом вам нужно изучить OpenAPI Тинькофф Инвестиции
Streaming
Предоставляет асинхронный интерфейс.
При сетевых сбоях будет произведена попытка переподключения.
import asyncio
import tinvest as ti
async def main():
async with ti.Streaming('TOKEN') as streaming:
await streaming.candle.subscribe('BBG0013HGFT4', ti.CandleResolution.min1)
await streaming.orderbook.subscribe('BBG0013HGFT4', 5)
await streaming.instrument_info.subscribe('BBG0013HGFT4')
async for event in streaming:
print(event)
asyncio.run(main())
Синхронный REST API Client
Для выполнения синхронных http запросов используется библиотека requests
.
С описанием клиентов можно ознакомиться по этой ссылке.
import tinvest
TOKEN = "<TOKEN>"
client = tinvest.SyncClient(TOKEN)
response = client.get_portfolio() # tinvest.PortfolioResponse
print(response.payload)
# Handle error
...
client = tinvest.SyncClient(TOKEN)
try:
response = client.get_operations("", "")
except tinvest.BadRequestError as e:
print(e.response) # tinvest.Error
Асинхронный REST API Client
Для выполнения асинхронных http запросов используется библиотека aiohttp
.
Клиенты имеют такой же интерфейс как в синхронной реализации, за исключением того,
что функции возвращают объект корутина.
import asyncio
import tinvest
TOKEN = "<TOKEN>"
async def main():
client = tinvest.AsyncClient(TOKEN)
response = await client.get_portfolio() # tinvest.PortfolioResponse
print(response.payload)
await client.close()
asyncio.run(main())
Sandbox
Sandbox позволяет вам попробовать свои торговые стратегии, при этом не тратя реальные средства. Протокол взаимодействия полностью совпадает с Production окружением.
client = tinvest.AsyncClient(SANDBOX_TOKEN, use_sandbox=True)
# client = tinvest.SyncClient(SANDBOX_TOKEN, use_sandbox=True)
Environments
name | required | default |
---|---|---|
TINVEST_TOKEN | optional | '' |
TINVEST_SANDBOX_TOKEN | optional | '' |
TINVEST_USE_ORJSON | optional | True |
TINVEST_USE_UVLOOP | optional | True |
Contributing
Предлагайте свои пулл реквесты, проект с открытым исходным кодом.