Tiny client for Tinkoff OpenAPI
Предлагаю вашему вниманию небольшой консольный Ruby-клиент для доступа к брокерскому аккаунту Тинькофф Инвестиции. На данный момент это очень ранняя пре-альфа-версия, реализовано только отображение портфолио. Цель проекта — сделать удобный консольный клиент для контроля своих активов, дополняющий официальное мобильное приложение Инвестиции.
Требования:
$ bundle
$ echo TINKOFF_OPENAPI_TOKEN=ваш_токен > .env.local
$ bin/portfolio
$ bin/wallet
$ bin/console
Вывод подробной таблицы портфеля со всеми позициями на вашем брокерском аккаунте.
$ bin/portfolio
Type
— тип актива.
STOCK
— акции.BOND
— облигации.ETF
— инвестиционный фонд.Name
— название актива.Amount
— количество в штуках или сумма в валюте.Avg. buy
— средняя цена покупки актива. Показатель берётся напрямую из OpenAPI. Например: если вы купили 2 акции за 10 и 20 рублей, то средняя цена покупки будет 15 рублей. От этой стоимости и текущей цены считается ожидаемый доход.Current price
— текущая цена актива. Не отдаётся напрямую из OpenAPI, поэтому программа вычисляет цену по формуле: ((balance * avg_buy_price) + expected_yield) / balance
. Возможно небольшое отличие от тикеров на сервере брокера.Yield
— ожидаемый доход в валюте. Показатель берётся напрямую из OpenAPI.Yield %
— ожидаемый доход в процентах. Не отдаётся напрямую из OpenAPI, поэтому программа вычисляет процент по формуле: expected_yield / (avg_buy_price * balance) * 100
.Показывает, сколько и какой валюты доступно вам для инвестирования.
$ bin/wallet
Консоль для удобной отладки и тестирования программы.
$ bin/console
Внутри консоли доступны для вызова публичные методы модуля Tinky
:
pry(Tinky)> portfolio
pry(Tinky)> wallet
pry(Tinky)> exchange_rates(positions)
pry(Tinky)> total_amount(positions)
Если на вашей системе не установлено Ruby-окружение и вы не хотите засирать им систему — используйте готовый Docker-образ. Локально потребуется только установить env-переменную с токеном.
$ docker run --rm -e TINKOFF_OPENAPI_TOKEN -t foxweb/tinkyclient
.env.local
(не рекомендую, можно случайно его опубликовать или украсть):$ docker run --rm --env-file .env.local -t foxweb/tinkyclient
$ docker run --rm -e TINKOFF_OPENAPI_TOKEN=ваш_токен -t foxweb/tinkyclient
Если вы хотите вывести портфолио в отдельное окно, чтобы оно при этом автоматически обновлялось, попробуйте команду:
$ watch bin/portfolio
В зависимости от системы, watch
надо устанавливать отдельно. Однако, на macOS вывод работает некорректно. Я устанавливал через brew install watch
. Оказалось, что она некорректно показывает символы валют и убирает цвет. Пользователи также сообщали, что табличная вёрстка ломается.
В качестве альтернативы используйте такую команду:
$ while sleep 2; do bin/portfolio > /tmp/portfolio; clear; cat /tmp/portfolio; done
MIT License. Используйте как хотите и где хотите на свой страх и риск.
Автор ничего не гарантирует и не отвечает ни за какие финансовые потери и риски пользователя, связанные с использованием этой программы. Программа разработана в образовательных целях, для обучения программированию и изучения языка Ruby. Несмотря на это, используя эту программу, вы можете как потерять, так приобрести реальные денежные средства.