https://github.com/foxweb/tinkyclient
Tiny client for Tinkoff OpenAPI
https://github.com/foxweb/tinkyclient
api ruby tinkoff tinkoff-invest tinkoff-invest-api
Last synced: 9 days ago
JSON representation
Tiny client for Tinkoff OpenAPI
- Host: GitHub
- URL: https://github.com/foxweb/tinkyclient
- Owner: foxweb
- License: mit
- Created: 2020-04-27T01:10:03.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2025-09-27T00:07:07.000Z (4 months ago)
- Last Synced: 2025-09-27T01:25:13.711Z (4 months ago)
- Topics: api, ruby, tinkoff, tinkoff-invest, tinkoff-invest-api
- Language: Ruby
- Homepage:
- Size: 688 KB
- Stars: 41
- Watchers: 5
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README

# TinkyClient — мини-клиент для работы с API Т-Инвестиций
Предлагаю вашему вниманию небольшой консольный Ruby-клиент для доступа к брокерскому аккаунту Т-Инвестиции.
На данный момент реализовано только отображение портфолио.
Цель проекта — сделать удобный консольный клиент для контроля своих активов, дополняющий официальное мобильное приложение [Т-Инвестиции](https://tbank.ru/invest/).

# Быстрый старт
Требования:
- установленный [Ruby 3.4.5](https://www.ruby-lang.org/en/news/2025/07/15/ruby-3-4-5-released/) и новее
- наличие [токена T-Инвестиции API](https://developer.tbank.ru/invest/intro/intro/token)
- минимальный опыт работы в консоли Linux или MacOS.
```sh
$ bundle
$ echo TINVEST_OPENAPI_TOKEN=ваш_токен > .env.local
$ bin/portfolio
$ bin/wallet
$ bin/console
```
# Основные функции
## Портфель
Вывод подробной таблицы портфеля со всеми позициями на вашем брокерском аккаунте.
```sh
$ bin/portfolio
```
### Колонки таблицы
- `Type` — тип актива.
- `BOND` — Облигация.
- `SHARE` — Акция.
- `CURRENCY` — Валюта.
- `ETF` — Exchange-traded fund. Фонд.
- `FUTURES` — Фьючерс.
- `SP` — Структурная нота.
- `OPTION` — Опцион.
- `CLEARING_CERTIFICATE` — Clearing certificate.
- `INDEX` — Индекс.
- `COMMODITY` — Товар.
- `Name` — название актива.
- `Amount` — количество в штуках или сумма в валюте.
- `Avg. buy` — средняя цена покупки актива. Показатель берётся напрямую из OpenAPI. Например: если вы купили 2 акции за 10 и 20 рублей, то средняя цена покупки будет 15 рублей. От этой стоимости и текущей цены считается ожидаемый доход.
- `Current price` — текущая цена актива. Отдаётся напрямую из API.
- `Buy sum` — начальная стоимость актива по средней цене на момент покупки. Не отдаётся напрямую из API, поэтому программа вычисляет сумму по формуле: `avg_buy_price * amount`.
- `Current sum` — текущая стоимость актива по текущей рыночной цене. Не отдаётся напрямую из API, поэтому программа вычисляет сумму по формуле: `current_price * amount`.
- `Yield` — ожидаемый доход в валюте. Показатель берётся напрямую из API.
- `Yield %` — ожидаемый доход в процентах. Не отдаётся напрямую из API, поэтому программа вычисляет процент по формуле: `expected_yield / (avg_buy_price * amount) * 100`.
- `Daily %` — дневное изменение цены в процентах. Показатель берётся напрямую из API.
## Валюта
Показывает, сколько и какой валюты доступно вам для инвестирования.
```sh
$ bin/wallet
```

## Консоль
Консоль для удобной отладки и тестирования программы.
```sh
$ bin/console
```
Внутри консоли доступны для вызова публичные методы модуля `Tinky`:
```sh
pry(Tinky)> portfolio
pry(Tinky)> wallet
pry(Tinky)> available_currencies
pry(Tinky)> puts summary_table(summary_data.values)
```
## Запуск в Docker
Если на вашей системе не установлено Ruby-окружение и вы не хотите засирать им систему — используйте готовый Docker-образ. Локально потребуется только установить env-переменную с токеном.
1. Если хотите каждый раз передавать токен из локального окружения в контейнер (лучший способ):
```sh
$ docker run --rm -e TINVEST_OPENAPI_TOKEN -t foxweb/tinkyclient
```
2. Если вы храните токен в `.env.local` (не рекомендую, можно случайно его опубликовать или украсть):
```sh
$ docker run --rm --env-file .env.local -t foxweb/tinkyclient
```
3. Если хотите каждый раз передавать токен через CLI в контейнер (не рекомендую, так как токен сохранится в history и логах):
```sh
$ docker run --rm -e TINVEST_OPENAPI_TOKEN=ваш_токен -t foxweb/tinkyclient
```
## Постоянное обновление портфолио
Если вы хотите вывести портфолио в отдельное окно, чтобы оно при этом автоматически обновлялось, попробуйте команду:
```sh
$ bin/portfolio --watch
```
В зависимости от системы, `watch` надо устанавливать отдельно. Однако, на macOS вывод работает некорректно. Я устанавливал через `brew install watch`. Оказалось, что она некорректно показывает символы валют и убирает цвет. Пользователи также сообщали, что табличная вёрстка ломается.
В качестве альтернативы используйте такую команду:
```sh
$ while sleep 2; do bin/portfolio > /tmp/portfolio; clear; cat /tmp/portfolio; done
```
# Уведомление о защите персональных данных
1. Используя этот проект, никакие персональные данные НЕ ПЕРЕДАЮТСЯ никаким третьим лицам скрыто или явно.
2. Использование этого проекта не требует от пользователя никаких логинов, паролей, номеров телефона и других персональных данных.
3. Для доступа к вашем брокерскому счёту вы используете только ваш персональный токен из личного кабинета Т-Инвестиций.
4. Этот токен вы генерируете самостоятельно.
5. Для нормальной работы этой программы вы самостоятельно записываете токен в текстовый файл, который сохраняется только на вашем устройстве.
6. Вы можете в любой момент отозвать (деактивировать) свой токен, если у вас возникнут подозрения в компрометации.
# Лицензия
MIT License. Используйте как хотите и где хотите на свой страх и риск.
# Отказ от ответственности
Автор ничего не гарантирует и не отвечает ни за какие финансовые потери и риски пользователя, связанные с использованием этой программы. Программа разработана в образовательных целях, для обучения программированию и изучения языка Ruby. Несмотря на это, используя эту программу, вы можете как потерять, так приобрести реальные денежные средства.
# Ссылки
- https://tbank.ru/invest/
- https://developer.tbank.ru/invest/api/t-invest-api
- https://github.com/RussianInvestments/investAPI
- https://t.me/tinkoffinvestopenapi