Skip to content

release-1.4.90

Compare
Choose a tag to compare
@Tim55667757 Tim55667757 released this 05 Nov 22:14
· 110 commits to master since this release
993874f

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