Предлагаю вашему вниманию небольшой консольный Ruby-клиент для доступа к брокерскому аккаунту Т-Инвестиции. На данный момент реализовано только отображение портфолио. Цель проекта — сделать удобный консольный клиент для контроля своих активов, дополняющий официальное мобильное приложение Т-Инвестиции.
Требования:
- установленный Ruby 3.4.5 и новее
- наличие токена T-Инвестиции API
- минимальный опыт работы в консоли Linux или MacOS.
$ bundle
$ echo TINVEST_OPENAPI_TOKEN=ваш_токен > .env.local
$ bin/portfolio
$ bin/wallet
$ bin/console
Вывод подробной таблицы портфеля со всеми позициями на вашем брокерском аккаунте.
$ 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
.
Показывает, сколько и какой валюты доступно вам для инвестирования.
$ bin/wallet
Консоль для удобной отладки и тестирования программы.
$ bin/console
Внутри консоли доступны для вызова публичные методы модуля Tinky
:
pry(Tinky)> portfolio
pry(Tinky)> wallet
pry(Tinky)> available_currencies
pry(Tinky)> puts summary_table(summary_data.values)
Если на вашей системе не установлено Ruby-окружение и вы не хотите засирать им систему — используйте готовый Docker-образ. Локально потребуется только установить env-переменную с токеном.
- Если хотите каждый раз передавать токен из локального окружения в контейнер (лучший способ):
$ docker run --rm -e TINVEST_OPENAPI_TOKEN -t foxweb/tinkyclient
- Если вы храните токен в
.env.local
(не рекомендую, можно случайно его опубликовать или украсть):
$ docker run --rm --env-file .env.local -t foxweb/tinkyclient
- Если хотите каждый раз передавать токен через CLI в контейнер (не рекомендую, так как токен сохранится в history и логах):
$ docker run --rm -e TINVEST_OPENAPI_TOKEN=ваш_токен -t foxweb/tinkyclient
Если вы хотите вывести портфолио в отдельное окно, чтобы оно при этом автоматически обновлялось, попробуйте команду:
$ bin/portfolio --watch
В зависимости от системы, watch
надо устанавливать отдельно. Однако, на macOS вывод работает некорректно. Я устанавливал через brew install watch
. Оказалось, что она некорректно показывает символы валют и убирает цвет. Пользователи также сообщали, что табличная вёрстка ломается.
В качестве альтернативы используйте такую команду:
$ while sleep 2; do bin/portfolio > /tmp/portfolio; clear; cat /tmp/portfolio; done
- Используя этот проект, никакие персональные данные НЕ ПЕРЕДАЮТСЯ никаким третьим лицам скрыто или явно.
- Использование этого проекта не требует от пользователя никаких логинов, паролей, номеров телефона и других персональных данных.
- Для доступа к вашем брокерскому счёту вы используете только ваш персональный токен из личного кабинета Т-Инвестиций.
- Этот токен вы генерируете самостоятельно.
- Для нормальной работы этой программы вы самостоятельно записываете токен в текстовый файл, который сохраняется только на вашем устройстве.
- Вы можете в любой момент отозвать (деактивировать) свой токен, если у вас возникнут подозрения в компрометации.
MIT License. Используйте как хотите и где хотите на свой страх и риск.
Автор ничего не гарантирует и не отвечает ни за какие финансовые потери и риски пользователя, связанные с использованием этой программы. Программа разработана в образовательных целях, для обучения программированию и изучения языка Ruby. Несмотря на это, используя эту программу, вы можете как потерять, так приобрести реальные денежные средства.