release-1.4.90
Release notes (in english)
Issues included in the release
PyPI: 1.4.90 (2022-11-07)
Дайджест
Теперь можно обогащать сырые данные по облигациям большим числом полей и значений, выгружать их в XLSX-формате и pandas dataframe! Это пригодится датасайнтистам и биржевым аналитикам (смотрите описание ключа --bonds-xlsx). С помощью этих данных можно построить полный календарь выплат по облигациям (ключ --calendar).
Для скачиваемых с сервера или загружаемых из файла исторических свечей теперь можно построить интерактивные или простые графики (ключ --render-chart). Если вам нужны сырые данные с сервера по всем инструментам, их можно сохранить в формате XLSX с ключом --list-xlsx.
| Интерактивный график | Статический график |
|---|---|
![]() |
![]() |
А также, теперь можно узнать: все данные по своему аккаунту, включая accounId (команда --user-info или --account) и лимиты на вывод доступных средств (команда --limits).
$ tksbrokerapi --accounts --output user-accounts.md
# User accounts
* **Actual date:** [2022-10-23 21:09:47 UTC]
| Account ID | Type | Status | Name |
|--------------|---------------------------|---------------------------|--------------------------------|
| ********** | Tinkoff brokerage account | Opened and active account | Testing - ********** |
| ********** | Tinkoff brokerage account | Opened and active account | Personal - ********** |
| ********** | Tinkoff brokerage account | New, open in progress... | Account ********** |
$ tksbrokerapi --limits --output my-limits.md
# Withdrawal limits
* **Actual date:** [2022-10-07 13:59:56 UTC]
* **Account ID:** [**********]
| Currencies | Total | Available for withdrawal | Blocked for trade | Futures guarantee |
|------------|---------------|--------------------------|-------------------|-------------------|
| [rub] | 2136.61 | 1135.25 | 1001.36 | — |
| [eur] | 0.29 | 0.29 | — | — |
| [cny] | 1.42 | 1.42 | — | — |
| [chf] | 1.00 | 1.00 | — | — |
| [try] | 10.00 | 10.00 | — | — |
| [usd] | 0.68 | 0.68 | — | — |
| [hkd] | 2.41 | 2.41 | — | — |
Новая функциональность
- #15 Реализованы методы:
RequestLimits()для запроса сырых данных по лимитам для пользователя на вывод средств,OverviewLimits()для отображения табличных данных и ключ--limits(--withdrawal-limits,-w) для запроса и отображения лимитов в консоли. - #6 При запуске с ключом
--historyдобавлена возможность указать дополнительный ключ--render-chartи сгенерировать интерактивный или не интерактивный свечные графики, при помощи библиотекиPriceGenerator. Аналогично можно построить графики для ранее сохранённых csv-файлов с историей свечей. Для этого нужно указать ключ--render-chartвместе с новым ключом для загрузки данных из файла:--load-history. - #46 Реализован ключ
--list-xlsx(или-x), который возвращает необработанные данные по всем доступным для данного аккаунта инструментам, аналогичные данным изdump.json, но сохраненные в формате XLSX, для дальнейшего использования дата-сайнтистами или биржевыми аналитиками, по умолчанию используетсяdump.xlsx. Также был разработан новый методDumpInstrumentsAsXLSX()который конвертирует сырые данные по инструментам в формат XLSX. - #11 Добавлен ключ
--user-info(-u), который выводит данные, связанные с аккаунтом, привязанным к текущему токену: доступную информацию о пользователе и его аккаунтах, права на операции, лимиты для маржинальной торговли. Также добавлен ключ--account(--accounts,-a), который выводит простую табличку, содержащую только аккаунты пользователя. - #10 При запросе информации об облигациях (с ключом
--infoили-i), теперь рассчитывается и отображается больше данных: график выплат по облигациям, общее количество выплат и уже погашенные купоны, купонный доход в процентах годовых (средняя купонная ежедневная доходность * 365), текущая доходность в процентах годовых (зависит от цены и количества оставшихся невыплаченных купонов, считается как средняя текущая ежедневная доходность * 365), НКД и размер купона. Для запроса нужной информации реализованы методыRequestBondCoupons()(возвращает словарь обработанных данных, полученных с сервера) иExtendBondsData()(возвращает обогащённый pandas dataframe, содержащий больше информации об облигациях). МетодShowInstrumentInfo()был доработан, для отображения большего количества информации по облигациям и календаря выплат. Для выгрузки обогащённых данных по облигациям в формат XLSX-файла (по умолчаниюext-bonds.xlsx), теперь можно использовать ключ"--bonds-xlsx(-b). - #63 Реализован метод
CreateBondsCalendar(), генерирующий pandas dataframe с общим календарём выплат по указанным или всем облигациям. МетодShowBondsCalendar()отображает календарь в консоли и сохраняет в файл,calendar.mdпо умолчанию в формате markdown. Для запроса календаря выплат нужно использовать ключ--calendar(-c), при этом также сохраняется таблица в формате XLSX, в файл по умолчаниюcalendar.xlsx. В случае, если календарь строится более чем для одной облигации, то платежи в один и тот же месяц группируются.
Улучшения
- #59 TKSBrokerAPI билд-номер теперь печатается в логах, а также его можно узнать набрав команду
--version(или--ver). - #47
iListполе более неактуально из-за использования локального дампаdump.json, в котором автоматически обновляется список доступных для торговли инструментов, поэтому поле удалено из классаTinkoffBrokerServer(). - #9 В метод
ShowInstrumentInfo()добавлена информация о текущем статусе торгов по запрашиваемому инструменту. Реализован дополнительный методRequestTradingStatus()для запроса статуса торгов по инструменту. Добавлены флаги:buyAvailableFlag,sellAvailableFlag,shortEnabledFlag,limitOrderAvailableFlag,marketOrderAvailableFlagиapiTradeAvailableFlag. В рамках этой же задачи реализована задача #37: добавлена возможность сохранения информации по инструменту в файл, заданный ключом--output, по умолчаниюinfo.md. - #64 ВНИМАНИЕ! Выполнен рефакторинг во многих методах. Все параметры, которые отвечают за отображение дополнительной информации в консоли:
showPrice,showPrices,printInfo,showInfo,showInstruments,showResults,showStatistics,printDeals,printCandles,showLimits,showAccounts— были заменены переменной с простым именемshow. - #65 ВНИМАНИЕ! Выполнен рефакторинг во многих методах. Все
overviewпараметры заменены переменнойportfolio. - Отключены повторы для 4xx сетевых ошибок, повторы оставлены только для 5xx ошибок. Это связано с тем, что нет смысла ожидать появления отсутствующих данных на сервере, например, в случае неверного указания ресурса.
- Теперь при запуске метода
SendAPIRequest(debug=True)в логи выводится больше отладочной информации, например, параметры запроса и ответа сервера, а также их хедеры. - Добавлено ожидание между сетевыми запросами, в случае достижения лимита по количеству запросов. Лимит определяется по значению заголовка ответа
"x-ratelimit-remaining": "0", а количество секунд ожидания определяется значением заголовкаx-ratelimit-reset, например,"x-ratelimit-reset": "15", что означает ожидание 15 секунд до следующего запроса. Это позволило значительно уменьшить количество сетевых ошибок, связанных с ожиданием для большого числа запросов к API сервера. - Хедер
"x-app-name": "Tim55667757.TKSBrokerAPI"был добавлен к каждому API-запросу, для идентификации фреймворка TKSBrokerAPI.
Баг-фиксы
- Исправлена ошибка
NoneType object has no attribute ...в случае, если ключ--historyиспользовался без указания каких-либо параметров. - #71 Пришлось сделать быстрый хак, чтобы избежать проблем в секциях статистики
Portfolio distribution by currenciesиPortfolio distribution by countries: принудительно добавлена валютаrubи страна"[RU] Российская Федерация", перед расчётом статистики.


