Предлагаю вашему вниманию небольшой консольный Ruby-клиент для доступа к брокерскому аккаунту Т-Инвестиции. На данный момент реализовано только отображение портфолио. Цель проекта — сделать удобный консольный клиент для контроля своих активов, дополняющий официальное мобильное приложение Т-Инвестиции.
Требования:
- установленный Ruby 3.4.5 и новее
- наличие токена T-Инвестиции API
- минимальный опыт работы в консоли Linux или MacOS.
$ bundle
$ echo TINVEST_OPENAPI_TOKEN=ваш_токен > .env.local
$ bin/portfolio
$ bin/wallet
$ bin/consoleВывод подробной таблицы портфеля со всеми позициями на вашем брокерском аккаунте.
$ bin/portfolioType— тип актива.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.
Показывает, сколько и какой валюты доступно вам для инвестирования.
$ 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. Несмотря на это, используя эту программу, вы можете как потерять, так приобрести реальные денежные средства.

