Tinkoff Invest
Project description
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
Предлагайте свои пулл реквесты, проект с открытым исходным кодом.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.