Skip to content
This repository has been archived by the owner on Oct 19, 2022. It is now read-only.

foxweb/tinkyclient

Repository files navigation

Rubocop

TinkyClient — tiny client for Tinkoff OpenAPI

Предлагаю вашему вниманию небольшой консольный Ruby-клиент для доступа к брокерскому аккаунту Тинькофф Инвестиции. На данный момент это очень ранняя пре-альфа-версия, реализовано только отображение портфолио. Цель проекта — сделать удобный консольный клиент для контроля своих активов, дополняющий официальное мобильное приложение Инвестиции.

Portfolio

Быстрый старт

Требования:

$ 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

Portfolio

Консоль

Консоль для удобной отладки и тестирования программы.

$ bin/console

Внутри консоли доступны для вызова публичные методы модуля Tinky:

pry(Tinky)> portfolio
pry(Tinky)> wallet
pry(Tinky)> exchange_rates(positions)
pry(Tinky)> total_amount(positions)

Запуск в Docker

Если на вашей системе не установлено Ruby-окружение и вы не хотите засирать им систему — используйте готовый Docker-образ. Локально потребуется только установить env-переменную с токеном.

  1. Если хотите каждый раз передавать токен из локального окружения в контейнер (лучший способ):
$ docker run --rm -e TINKOFF_OPENAPI_TOKEN -t foxweb/tinkyclient
  1. Если вы храните токен в .env.local (не рекомендую, можно случайно его опубликовать или украсть):
$ docker run --rm --env-file .env.local -t foxweb/tinkyclient
  1. Если хотите каждый раз передавать токен через CLI в контейнер (не рекомендую, так как токен сохранится в history и логах):
$ 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

Уведомление о защите персональных данных

  1. Используя этот проект, никакие персональные данные НЕ ПЕРЕДАЮТСЯ никаким третьим лицам скрыто или явно.
  2. Использование этого проекта не требует от пользователя никаких логинов, паролей, номеров телефона и других персональных данных.
  3. Для доступа к вашем брокерскому счёту вы используете только ваш персональный токен из личного кабинета Тинькофф Инвестиций.
  4. Этот токен вы генерируете самостоятельно.
  5. Для нормальной работы этой программы вы самостоятельно записываете токен в текстовый файл, который сохраняется только на вашем устройстве.
  6. Вы можете в любой момент отозвать (деактивировать) свой токен, если у вас возникнут подозрения в компрометации.

Лицензия

MIT License. Используйте как хотите и где хотите на свой страх и риск.

Отказ от ответственности

Автор ничего не гарантирует и не отвечает ни за какие финансовые потери и риски пользователя, связанные с использованием этой программы. Программа разработана в образовательных целях, для обучения программированию и изучения языка Ruby. Несмотря на это, используя эту программу, вы можете как потерять, так приобрести реальные денежные средства.

Ссылки

Releases

No releases published

Packages

No packages published

Languages