{"id":42593778,"url":"https://github.com/foxweb/tinkyclient","last_synced_at":"2026-01-28T23:35:16.850Z","repository":{"id":49056404,"uuid":"259169920","full_name":"foxweb/tinkyclient","owner":"foxweb","description":"Tiny client for Tinkoff OpenAPI","archived":false,"fork":false,"pushed_at":"2025-09-27T00:07:07.000Z","size":705,"stargazers_count":41,"open_issues_count":0,"forks_count":4,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-09-27T01:25:13.711Z","etag":null,"topics":["api","ruby","tinkoff","tinkoff-invest","tinkoff-invest-api"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/foxweb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-04-27T01:10:03.000Z","updated_at":"2025-09-27T00:07:10.000Z","dependencies_parsed_at":"2025-09-27T01:20:02.824Z","dependency_job_id":"d8152e70-4e54-4263-a1d2-948aa12c7496","html_url":"https://github.com/foxweb/tinkyclient","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/foxweb/tinkyclient","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foxweb%2Ftinkyclient","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foxweb%2Ftinkyclient/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foxweb%2Ftinkyclient/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foxweb%2Ftinkyclient/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/foxweb","download_url":"https://codeload.github.com/foxweb/tinkyclient/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foxweb%2Ftinkyclient/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28855265,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-28T22:56:21.783Z","status":"ssl_error","status_checked_at":"2026-01-28T22:56:00.861Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","ruby","tinkoff","tinkoff-invest","tinkoff-invest-api"],"created_at":"2026-01-28T23:35:16.784Z","updated_at":"2026-01-28T23:35:16.840Z","avatar_url":"https://github.com/foxweb.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Rubocop](https://github.com/foxweb/tinkyclient/workflows/Rubocop/badge.svg)\n\n# TinkyClient — мини-клиент для работы с API Т-Инвестиций\n\nПредлагаю вашему вниманию небольшой консольный Ruby-клиент для доступа к брокерскому аккаунту Т-Инвестиции.\nНа данный момент реализовано только отображение портфолио.\nЦель проекта — сделать удобный консольный клиент для контроля своих активов, дополняющий официальное мобильное приложение [Т-Инвестиции](https://tbank.ru/invest/).\n\n![Portfolio](/examples/portfolio.png)\n\n# Быстрый старт\n\nТребования:\n- установленный [Ruby 3.4.5](https://www.ruby-lang.org/en/news/2025/07/15/ruby-3-4-5-released/) и новее\n- наличие [токена T-Инвестиции API](https://developer.tbank.ru/invest/intro/intro/token)\n- минимальный опыт работы в консоли Linux или MacOS.\n\n```sh\n$ bundle\n$ echo TINVEST_OPENAPI_TOKEN=ваш_токен \u003e .env.local\n$ bin/portfolio\n$ bin/wallet\n$ bin/console\n```\n# Основные функции\n\n## Портфель\n\nВывод подробной таблицы портфеля со всеми позициями на вашем брокерском аккаунте.\n\n```sh\n$ bin/portfolio\n```\n\n### Колонки таблицы\n\n- `Type` — тип актива.\n  - `BOND` — Облигация.\n  - `SHARE` — Акция.\n  - `CURRENCY` — Валюта.\n  - `ETF` — Exchange-traded fund. Фонд.\n  - `FUTURES` — Фьючерс.\n  - `SP` — Структурная нота.\n  - `OPTION` — Опцион.\n  - `CLEARING_CERTIFICATE` — Clearing certificate.\n  - `INDEX` — Индекс.\n  - `COMMODITY` — Товар.\n- `Name` — название актива.\n- `Amount` — количество в штуках или сумма в валюте.\n- `Avg. buy` — средняя цена покупки актива. Показатель берётся напрямую из OpenAPI. Например: если вы купили 2 акции за 10 и 20 рублей, то средняя цена покупки будет 15 рублей. От этой стоимости и текущей цены считается ожидаемый доход.\n- `Current price` — текущая цена актива. Отдаётся напрямую из API.\n- `Buy sum` — начальная стоимость актива по средней цене на момент покупки. Не отдаётся напрямую из API, поэтому программа вычисляет сумму по формуле: `avg_buy_price * amount`.\n- `Current sum` — текущая стоимость актива по текущей рыночной цене. Не отдаётся напрямую из API, поэтому программа вычисляет сумму по формуле: `current_price * amount`.\n- `Yield` — ожидаемый доход в валюте. Показатель берётся напрямую из API.\n- `Yield %` — ожидаемый доход в процентах. Не отдаётся напрямую из API, поэтому программа вычисляет процент по формуле: `expected_yield / (avg_buy_price * amount) * 100`.\n- `Daily %` — дневное изменение цены в процентах. Показатель берётся напрямую из API.\n\n## Валюта\n\nПоказывает, сколько и какой валюты доступно вам для инвестирования.\n\n```sh\n$ bin/wallet\n```\n\n![Portfolio](/examples/wallet.png)\n\n## Консоль\n\nКонсоль для удобной отладки и тестирования программы.\n\n```sh\n$ bin/console\n```\n\nВнутри консоли доступны для вызова публичные методы модуля `Tinky`:\n\n```sh\npry(Tinky)\u003e portfolio\npry(Tinky)\u003e wallet\npry(Tinky)\u003e available_currencies\npry(Tinky)\u003e puts summary_table(summary_data.values)\n```\n\n## Запуск в Docker\n\nЕсли на вашей системе не установлено Ruby-окружение и вы не хотите засирать им систему — используйте готовый Docker-образ. Локально потребуется только установить env-переменную с токеном.\n\n1. Если хотите каждый раз передавать токен из локального окружения в контейнер (лучший способ):\n  ```sh\n  $ docker run --rm -e TINVEST_OPENAPI_TOKEN -t foxweb/tinkyclient\n  ```\n\n2. Если вы храните токен в `.env.local` (не рекомендую, можно случайно его опубликовать или украсть):\n  ```sh\n  $ docker run --rm --env-file .env.local -t foxweb/tinkyclient\n  ```\n\n3. Если хотите каждый раз передавать токен через CLI в контейнер (не рекомендую, так как токен сохранится в history и логах):\n  ```sh\n  $ docker run --rm -e TINVEST_OPENAPI_TOKEN=ваш_токен -t foxweb/tinkyclient\n  ```\n\n## Постоянное обновление портфолио\n\nЕсли вы хотите вывести портфолио в отдельное окно, чтобы оно при этом автоматически обновлялось, попробуйте команду:\n\n```sh\n$ bin/portfolio --watch\n```\n\nВ зависимости от системы, `watch` надо устанавливать отдельно. Однако, на macOS вывод работает некорректно. Я устанавливал через `brew install watch`. Оказалось, что она некорректно показывает символы валют и убирает цвет. Пользователи также сообщали, что табличная вёрстка ломается.\n\nВ качестве альтернативы используйте такую команду:\n\n```sh\n$ while sleep 2; do bin/portfolio \u003e /tmp/portfolio; clear; cat /tmp/portfolio; done\n```\n\n# Уведомление о защите персональных данных\n\n1. Используя этот проект, никакие персональные данные НЕ ПЕРЕДАЮТСЯ никаким третьим лицам скрыто или явно.\n2. Использование этого проекта не требует от пользователя никаких логинов, паролей, номеров телефона и других персональных данных.\n3. Для доступа к вашем брокерскому счёту вы используете только ваш персональный токен из личного кабинета Т-Инвестиций.\n4. Этот токен вы генерируете самостоятельно.\n5. Для нормальной работы этой программы вы самостоятельно записываете токен в текстовый файл, который сохраняется только на вашем устройстве.\n6. Вы можете в любой момент отозвать (деактивировать) свой токен, если у вас возникнут подозрения в компрометации.\n\n# Лицензия\n\nMIT License. Используйте как хотите и где хотите на свой страх и риск.\n\n# Отказ от ответственности\n\nАвтор ничего не гарантирует и не отвечает ни за какие финансовые потери и риски пользователя, связанные с использованием этой программы. Программа разработана в образовательных целях, для обучения программированию и изучения языка Ruby. Несмотря на это, используя эту программу, вы можете как потерять, так приобрести реальные денежные средства.\n\n# Ссылки\n\n- https://tbank.ru/invest/\n- https://developer.tbank.ru/invest/api/t-invest-api\n- https://github.com/RussianInvestments/investAPI\n- https://t.me/tinkoffinvestopenapi\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffoxweb%2Ftinkyclient","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffoxweb%2Ftinkyclient","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffoxweb%2Ftinkyclient/lists"}