All Projects → daxartio → Tinvest

daxartio / Tinvest

Licence: mit
Тинькофф Инвестиции, tinkoff, python, aiohttp, requests, pydantic

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Tinvest

Pyatv
A python client library for the Apple TV
Stars: ✭ 322 (+180%)
Mutual labels:  asyncio, pypi
Waliyun
阿里云Node.js Open API SDK(完整版)
Stars: ✭ 40 (-65.22%)
Mutual labels:  openapi, sdk
Aliyun Sdk Js
阿里云 SDK for Javascript,支持在浏览器和 Nodejs 环境使用,支持大部分阿里云服务。
Stars: ✭ 727 (+532.17%)
Mutual labels:  openapi, sdk
asyncio-socks-server
A SOCKS proxy server implemented with the powerful python cooperative concurrency framework asyncio.
Stars: ✭ 154 (+33.91%)
Mutual labels:  pypi, asyncio
Pymarketcap
Python3 API wrapper and web scraper for https://coinmarketcap.com
Stars: ✭ 73 (-36.52%)
Mutual labels:  asyncio, pypi
fastapi-azure-auth
Easy and secure implementation of Azure AD for your FastAPI APIs 🔒 B2C, single- and multi-tenant support.
Stars: ✭ 174 (+51.3%)
Mutual labels:  openapi, asyncio
Fastapi
FastAPI framework, high performance, easy to learn, fast to code, ready for production
Stars: ✭ 39,588 (+34324.35%)
Mutual labels:  openapi, asyncio
aiotinydb
asyncio compatibility shim for tinydb
Stars: ✭ 42 (-63.48%)
Mutual labels:  pypi, asyncio
Openapi Javascript
KKBOX Open API SDK for JavaScript.
Stars: ✭ 64 (-44.35%)
Mutual labels:  openapi, sdk
Openapi Generator
OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an OpenAPI Spec (v2, v3)
Stars: ✭ 10,634 (+9146.96%)
Mutual labels:  openapi, sdk
duckpy
A simple Python library for searching on DuckDuckGo.
Stars: ✭ 20 (-82.61%)
Mutual labels:  pypi, asyncio
Invest Openapi Go Sdk
Stars: ✭ 101 (-12.17%)
Mutual labels:  openapi, sdk
thanker
Don't be a wanker, be a thanker! Automatically give thanks to Pypi packages you use in your project.
Stars: ✭ 25 (-78.26%)
Mutual labels:  pypi, asyncio
feedsearch-crawler
Crawl sites for RSS, Atom, and JSON feeds.
Stars: ✭ 23 (-80%)
Mutual labels:  pypi, asyncio
HibiAPI
一个实现了多种常用站点的易用化API的程序 / A program that implements easy-to-use APIs for a variety of commonly used sites.
Stars: ✭ 427 (+271.3%)
Mutual labels:  openapi, asyncio
Pytradfri
IKEA Trådfri/Tradfri API. Control and observe your lights from Python. Examples available. On pypi. Sans-io.
Stars: ✭ 778 (+576.52%)
Mutual labels:  asyncio, pypi
Cognitive Face Python
Python SDK for the Microsoft Face API, part of Cognitive Services
Stars: ✭ 226 (+96.52%)
Mutual labels:  sdk, pypi
Purerpc
Asynchronous pure Python gRPC client and server implementation supporting asyncio, uvloop, curio and trio
Stars: ✭ 125 (+8.7%)
Mutual labels:  asyncio, pypi
Connect Api Specification
This repository contains the OpenAPI specification as well as templates for generating SDKs for Square's APIs
Stars: ✭ 56 (-51.3%)
Mutual labels:  openapi, sdk
Rororo
Implement aiohttp.web OpenAPI 3 server applications with schema first approach.
Stars: ✭ 95 (-17.39%)
Mutual labels:  openapi, asyncio

T-Invest

Build Status PyPI PyPI - Python Version Codecov GitHub last commit Tinvest

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)
  • Скопируйте токен и сохраните, токен отображается только один раз, просмотреть его позже не получится, тем не менее вы можете выпускать неограниченное количество токенов

Документация

tinvest

invest-openapi

Быстрый старт

Для непосредственного взаимодействия с 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

Предлагайте свои пулл реквесты, проект с открытым исходным кодом.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].