Версия: см. Tinky::VERSION или bin/version.
Предлагаю вашему вниманию небольшой консольный Ruby-клиент для доступа к брокерскому аккаунту Т-Инвестиции. На данный момент реализовано только отображение портфолио. Цель проекта — сделать удобный консольный клиент для контроля своих активов, дополняющий официальное мобильное приложение Т-Инвестиции.
Требования:
- установленный Ruby 4.0.1 и новее
- наличие токена T-Инвестиции API
- минимальный опыт работы в консоли Linux или MacOS.
$ bundle install
$ echo TINVEST_OPENAPI_TOKEN=ваш_токен > .env.local
$ bin/portfolio
$ bin/wallet
$ bin/portfolio-positions # только таблица позиций
$ bin/summary # сводка по суммам
$ bin/future-payments # будущие выплаты (дивиденды и купоны)
$ bin/user-info # данные пользователя
$ bin/account # данные счёта
$ bin/version # вывод текущей версии
$ bin/consoleПолный вывод: таблица позиций, сводка по суммам, будущие выплаты (дивиденды и купоны), данные пользователя и счёта.
$ bin/portfolioОтдельные секции портфеля (удобно для скриптов или быстрого просмотра одного блока):
| Команда | Описание |
|---|---|
bin/portfolio-positions |
Таблица позиций и примечание про заблокированные тикеры |
bin/summary |
Сводка по суммам (покупки, доходность, кошелёк) |
bin/future-payments |
Будущие выплаты — дивиденды и купоны на ближайшие 90 дней |
bin/user-info |
Данные пользователя (ID, премиум, тариф, уровень риска) |
bin/account |
Данные счёта (ID, тип, дата открытия, уровень доступа) |
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.
Показывает, сколько и какой валюты доступно вам для инвестирования.
$ bin/walletКонсоль для удобной отладки и тестирования программы.
$ bin/consoleВнутри консоли доступны для вызова публичные методы модуля Tinky:
pry(Tinky)> portfolio # полное портфолио
pry(Tinky)> wallet # количество валюты
pry(Tinky)> print_portfolio_section # только позиции
pry(Tinky)> print_summary_section # итоговая сводка о суммах и процентах
pry(Tinky)> print_future_payments_section # будущие выплаты
pry(Tinky)> print_user_info_section # информация о пользователе
pry(Tinky)> print_account_section # информация о брокерском счёте
pry(Tinky)> available_currencies # доступные валюты и металлы
pry(Tinky)> VERSION # текущая версия утилитыЕсли на вашей системе не установлено 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Встроенный режим: портфель обновляется в том же окне каждые 2 секунды (выход - Ctrl+C).
$ bin/portfolio --watchАльтернатива через цикл в shell (если нужен другой интервал или вывод в файл):
$ while sleep 2; do bin/portfolio > /tmp/portfolio; clear; cat /tmp/portfolio; done- Используя этот проект, никакие персональные данные НЕ ПЕРЕДАЮТСЯ никаким третьим лицам скрыто или явно.
- Использование этого проекта не требует от пользователя никаких логинов, паролей, номеров телефона и других персональных данных.
- Для доступа к вашем брокерскому счёту вы используете только ваш персональный токен из личного кабинета Т-Инвестиций.
- Этот токен вы генерируете самостоятельно.
- Для нормальной работы этой программы вы самостоятельно записываете токен в текстовый файл, который сохраняется только на вашем устройстве.
- Вы можете в любой момент отозвать (деактивировать) свой токен, если у вас возникнут подозрения в компрометации.
MIT License. Используйте как хотите и где хотите на свой страх и риск.
Автор ничего не гарантирует и не отвечает ни за какие финансовые потери и риски пользователя, связанные с использованием этой программы. Программа разработана в образовательных целях, для обучения программированию и изучения языка Ruby. Несмотря на это, используя эту программу, вы можете как потерять, так приобрести реальные денежные средства.

