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] Российская Федерация"
, перед расчётом статистики.