Releases: Tim55667757/TKSBrokerAPI
release-1.5.120
Release notes (in english)
Issues included in the release
PyPI: 1.5.120 (2022-11-21)
Дайджест
В очередной версии TKSBrokerAPI в отчётах появилась новая секция с календарём платежей по облигациям. Он строится автоматически, если в портфеле пользователя есть хотя бы одна облигация (ключ --overview-calendar
). Был добавлен ключ --html
для сохранения любых пользовательских отчётов в HTML формат. Кроме того, появилась возможность закрывать позицию и все ордера по ключу --close-all
для одного инструмента, заданного через --ticker
или --figi
.
Торговый сценарий ./docs/examples/scenario1.py был переписан в парадигме ООП: ./docs/examples/scenario1a.py. Теперь это полноценный торговый шаблон на базе платформы TKSBrokerAPI. Его можно использовать за основу для разработки собственных сценариев.
Пофикшен обидный баг при торговле "по рынку" (ключ --trade
), когда TP/SL ордеры открывались даже если основная заявка не была исполнена. Теперь при любых ошибках TP/SL ордеры не выставляются. А также, для удобства отладки теперь можно указывать ключ --more
вместе с любой другой командой. В логах появится больше информации, например, сетевые запросы, сетевые ответы и их заголовки.
Новая функциональность
- #62 В отчёт о состоянии портфеля пользователя добавлена секция с календарём платежей по облигациям, который строится автоматически, если хотя бы одна облигация присутствует в портфеле (метод
Overview(details="calendar")
, ключ--overview-calendar
). - #80 Пример торгового сценария ./docs/examples/scenario1.py дополнительно переписан в парадигме ООП: ./docs/examples/scenario1a.py. Эти шаблоны можно брать за основу для разработки собственных торговых сценариев, на базе платформы TKSBrokerAPI.
- #48 Если ключ
--close-all
будет указан совместно с одним из ключей--ticker
или--figi
, тогда будут закрыты все незаблокированные объёмы открытой позиции, отложенные лимитные и стоп ордеры для выбранного инструмента. Для поддержки этой фичи были реализованы дополнительные методы:CloseAllByTicker()
— для закрытия всех позиций и ордеров по инструменту заданному тикером,CloseAllByFIGI()
— для закрытия всех позиций и ордеров по инструменту заданному FIGI идентификатором,IsInLimitOrders()
— функция, которая возвращаетTrue
илиFalse
, при наличии или отсутствии открытых отложенных лимитных ордеров,GetLimitOrderIDs()
— функция, которая возвращает список открытых отложенных лимитных ордеров,IsInStopOrders()
— функция, которая возвращаетTrue
илиFalse
, при наличии или отсутствии открытых стоп ордеров иGetStopOrderIDs()
— функция, которая возвращает список открытых стоп ордеров для инструмента. - #83 Теперь можно указывать ключ
--html
для генерации дополнительных отчётов из Markdown-файлов в HTML формат. Рендеринг HTML и ключ--html
были реализованы для отчётов, создаваемых командами--list
,--info
,--search
,--prices
,--deals
,--limits
,--calendar
,--account
,--user-info
,--overview
,--overview-digest
,--overview-positions
,--overview-orders
,--overview-analytics
и--overview-calendar
. HTML-генератор основан на Mako Templates library. - #67 Теперь можно указывать ключ
--more
вместе с любой командой. Он включает во всех методах TKSBrokerAPI больше отладочной информации и выводит её в логи. Например, сохраняются фактические сетевые запросы, ответы на них и заголовки.
Улучшения
- #74 Улучшен CI/CD скрипт
.travis.yml
. Теперь при запуске сборки из пулл-реквеста выполняются только шаги запуска юнит-тестов и сборки пакета. Выкладка пакета в PyPI не происходит. Публикация в PyPI теперь запускается только при сборке напрямую из ветки или после принятия пулл-реквеста. - #39 Теперь все операции закрытия позиций или ордеров (наборы ключей
--close-***
) поддерживают возможность указания инструментов не только через тикеры, но и через FIGI идентификаторы. - #60 Теперь ключи
--ticker
и--figi
— регистронезависимые. Можно указывать в консоли их значения в любом регистре, а внутри платформы TKSBrokerAPI они будут автоматически приведены к верхнему регистру. - #75 Если при запуске с ключом
--limits
окажется, что нет доступных для вывода лимитов денежных средств, то теперь пустая таблица отображаться не будет. - #68 В отчёт по акции (метод
ShowInstrumentInfo()
, ключ--info
) добавлена информация про тип акции: обыкновенная, привилегированная, американские депозитарные расписки, глобальные депозитарные расписки, товарищество с ограниченной ответственностью, акции из реестра Нью-Йорка, закрытый инвестиционный фонд или траст недвижимости. - #35 В таблице "Summary" с отчетом по операциям (ключ
--deals
) упрощены заголовки. - #51 Константа
NANO
, методыNanoToFloat()
иFloatToNano()
вынесены в новый модульTradeRoutines
. Это библиотека с набором функций для упрощения реализации торговых стратегий на базе платформы TKSBrokerAPI. - #52 Метод
GetDatesAsString()
также перенесён в модульTradeRoutines
.
Баг-фиксы
- #66 Исправлен баг в методе
Trade()
(ключ--trade
). Теперь, в случае если основной рыночный ордер по инструменту не был исполнен, то TP/SL ордеры также не выставляются для этого инструмента. В предыдущих версиях TP/SL ордеры открывались даже в случае ошибок при открытии рыночного ордера, к которому они привязаны, что нарушало логику торговых сценариев. - #84 Исправлен баг в методе
Overview()
(ключ--overview
), который появился после решения задачи #17. В секциях лимитных и стоп ордеров в отчёте о состоянии портфеля пользователя отображались только первые ордеры в списке. Сейчас снова отображаются все открытые ордеры. Кроме того, улучшена производительность: теперь для ордеров по одному и тому же инструменту цена запрашивается только один раз, что критично, в случае большого числа открытых ордеров. - #81 Исправлено отображение дробных чисел при печати биржевого стакана.
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] Российская Федерация"
, перед расчётом статистики.
release-1.3.70
Release notes (in english)
Issues included in the release
PyPI: 1.3.70 (2022-09-07)
Новая функциональность
- #5 Добавлена возможность скачивания истории цен по инструменту с поддержкой докачки по ключу
--history
. Также ключ--interval
позволяет указать временной интервал для скачиваемых ценовых свечей в формате OHLCV. Ключ--only-missing
позволяет докачать только последние свечи, сохранённые в файле, заданном через--output
. Ключ--csv-sep
задаёт разделитель между данными в csv-файлах. History returned between two given dates:start
andend
.1970-01-01
минимальная дата в прошлом, начиная с которой брокер даёт скачать историю. Внимание! Брокер использует ISO UTC формат времени.
Улучшения
- #17 Оптимизирован запрос цен для инструментов и убраны повторные запросы цены для одного и того же инструмента при запуске с ключом
--prices
или вызове методаOverview()
. За счёт удаления дублирующих запросов немного повысилась скорость работы. - #43 Добавлены новые ключи для уменьшения информации в методе
Overview()
: ключ--overview-positions
показывает только открытые позиции, без всего остального, ключ--overview-digest
показывает короткий дайджест состояния портфеля, ключ--overview-analytics
показывает только раздел аналитики и распределения портфеля по различным категориям, ключ--overview-orders
показывает только секцию открытых лимитных и стоп ордеров. - #44 Все markdown-таблицы приведены к стандартному виду, включая отрисовку правой части таблиц.
Баг-фиксы
- #18 Добавлена обработка ошибки
raise JSONDecodeError("Expecting value", s, err.value) from None
. Теперь отображается сообщение:Check you Internet connection! Failed to establish a new connection to broker server!
и выводится путь до файла с дебажными логами. - #16 Исправлено отображение дробных чисел с первым нулём после десятичной точки, в случаях, когда вместо
1.0
выводилось1.
. - #38 Исправлено отображение дробной части цен при запросе ETF.
release-1.2.62
Release notes (in english)
Issues included in the release
PyPI: 1.2.62 (2022-08-23)
Новая функциональность
- #13 Для уменьшения количества запросов к серверу, добавлена возможность кэширования данных по биржевым инструментам. Кэш используется по умолчанию при первичной инициализации класса
TinkoffBrokerServer
, но это действие можно отменить через переменную классаuseCache=False
или используя ключ--no-cache
в консоли. Добавлен методDumpInstruments()
, с помощью которого можно создать дамп данных с сервера. В классTinkoffBrokerServer
также добавлена переменнаяiListDumpFile
(путь до кэша, по умолчаниюdump.json
). Кэш автоматически обновляется, если идёт другой день, чем день последнего изменения файлаdump.json
. Примечание: все даты используются в UTC-формате. - #7 Добавлена возможность поиска инструмента по части названия, тикера или FIGI с помощью ключа
--search
(или-s
). Реализован метод для поискаSearchInstruments()
, которому на вход можно передать поисковый паттерн: часть слова или строку с регулярным выражением. В качестве результата метод возвращает словарь словарей, похожий на переменнуюiList
, но содержащий только найденные инструменты (примеры). - Был добавлен новый метод
IsInPortfolio()
. Он проверяет на наличие инструмента в портфеле пользователя. Инструмент должен быть задан черезself.ticker
(приоритетно) или черезself.figi
. Метод возвращаетTrue
, если портфель содержит открытую позицию по инструменту, в противном случае возвращаетFalse
. - Был добавлен новый метод
GetInstrumentFromPortfolio()
. Он возвращает данные по инструменту, если он есть в портфеле пользователя. Инструмент должен быть задан черезself.ticker
(приоритетно) или черезself.figi
.
Улучшения
- #12 В общую информацию о состоянии портфеля (ключ
--overview
или-o
), добавлен раздел "Распределение портфеля по странам" (пример). - #8 Добавлен ключ
--no-cancelled
и переменнаяshowCancelled
в методеDeals()
, чтобы регулировать отображение информации об отменённых операциях при использовании ключа--deals
(или-d
). Изменено имя файла с отчётом по умолчанию: вместоreport.md
теперь используетсяdeals.md
. - #42 Добавлен пример реализации абстрактного торгового сценария.
- В секцию
stat
результатов, выдаваемых методомOverview()
, было добавлено полеfunds
. Теперь в нём хранится словарь доступных для торговли средств по каждой валюте (всего средств - заблокированные средства), например,{"rub": {"total": 10000.99, "totalCostRUB": 10000.99, "free": 1234.56, "freeCostRUB": 1234.56}, "usd": {"total": 250.55, "totalCostRUB": 15375.80, "free": 125.05, "freeCostRUB": 7687.50}}
.
Баг-фиксы
- Исправлен тип данных для облигаций (неправильно:
iJSON["type"] == "Bond"
, правильно:iJSON["type"] == "Bonds"
). - Исправлена ошибка с JSON-декодером:
TypeError: JSONDecoder.__init__() got an unexpected keyword argument 'encoding'
. Ошибка была из-за изменений в Python 3.9: аргументencoding
был удалён. Смотрите: https://docs.python.org/3/library/json.html#json.loads - Исправлена ошибка с неверным расчётом оставшихся свободных средств в рублях:
Overview()["stat"]["funds"]["rub"]
.
release-1.1.48
Release notes (in english)
Issues included in the release
PyPI: 1.1.48 (2022-07-28)
Новая функциональность
- Лицензия изменена с MIT на Apache-2.0.
- Важно! Восстановлена функциональность большей части методов, входящих в
TKSBrokerAPI
v1.0, кроме открытия сетки ордеров и скачивания исторических данных (будут добавлены в следующих релизах). Теперь все методы работают с новым Open API: https://tinkoff.github.io/investAPI/swagger-ui/ - Важно! модуль
TKSBrokerAPI
вынесен в опенсорс, дальнейшая разработка продолжается только там: https://github.com/Tim55667757/TKSBrokerAPI (анонсы и релиз-ноты — там же). - Важно! Версия Tinkoff Invest API, поддерживаемая библиотекой
TKSBrokerAPI
, теперь v2 и без обратной совместимости. - Важно! Все внутренние переменные времени переведены в ISO UTC формат с
Z
(Zulu time) на конце строки. Пример:1961-04-12T06:07:00.123456Z
. Локальное время больше не используется. Это нужно для избежания путаницы со временем Tinkoff Invest API, которое использует UTС Z-нотацию. - #1 Добавлены основные разделы документации в
README.md
и примеры работы в консоли, а также API-документация на модульTKSBrokerAPI
. - #2 Добавлен шаг
PDocBuilder
для автоматической сборки документации на базеpdoc
для методов модуляTKSBrokerAPI
. - #3 Настроен базовый CI для релизного цикла: шаг запуска юнит-тестов и запуск сборки пакета. Реализован CD для релизного цикла: для фича-веток собираются dev-сборки, из релизных веток и master — собираются релизные пакеты, которые затем публикуются в PyPI. Пример успешной сборки: tksbrokerapi-1.2.dev39 и PyPI-пакет.
- #4 Добавлены простейшие юнит-тесты на некоторые методы, либо заглушки.
- Добавлен раздел аналитики в
Overview()
метод. Показывается распределение инструментов по классам, компаниям, секторам и валютам активов. - Показывается расширенная информация по инструменту для ключа
--info
в зависимости от типа инструмента (валюта, акция, облигация, фонд или фьючерс). - Добавлены ключи
--close-order
,--close-orders
,--close-trade
и--close-trades
. При их помощи можно отменить один или несколько ордеров по ID или закрыть сделки по инструментам, зная их тикеры. - Реализованы методы закрытия ордеров и позиций:
ClosePositions()
,CloseAllPositions()
,CloseOrders()
,CloseAllOrders()
иCloseAll()
. - Реализованы методы открытия лимитных и стоп-ордеров:
Order()
,BuyLimit()
,BuyStop()
,SellLimit()
иSellStop()
. - Реализованы методы открытия и закрытия позиций по инструментам:
Trade()
,CloseTrades()
,CloseAllTrades()
,Buy()
,Sell()
и исправлен методCloseAll()
при закрытии инструментов.
Улучшения
- Важно! За счет оптимизации алгоритмов, рефакторинга кода и использования модуля
multiprocessing
удалось ускорить скачивание инструментов при их первичном листинге на 40-60%. - Важно! Включено логирование с ротацией от 5Мб в файл по-умолчанию
TKSBrokerAPI.log
. Оптимизирован модуль логирования. Уменьшено количество ненужных оповещений. По умолчанию debug-логи печатаются только в лог-файл, а в консоль выводятся info-логи. Изменить уровень логирования можно ключами:--debug-level
,--verbosity
или-v
. - Все перечислимые типы данных и константы вынесены в файл
TKSEnums.py
. - Добавлены алиасы для USD, EUR, GBP, CHF, CNY, HKD, TRY — теперь их можно использовать вместо тикеров.
- Портфолио клиента, информация по отдельному инструменту, список доступных инструментов для торговли и история клиентских операций теперь отображаются в markdown-формате.
- Для класса
TinkoffBrokerServer()
теперь можно задавать параметрtoken
как через переменную при инициализации класса, так и при установке переменной окруженияTKS_API_TOKEN
. Если параметрtoken
задан при инициализации класса, то он считается приоритетным. - Для класса
TinkoffBrokerServer()
теперь можно задавать параметрaccountId
как через переменную при инициализации класса, так и при установке переменной окруженияTKS_ACCOUNT_ID
. Если параметрaccountId
задан при инициализации класса, то он считается приоритетным. Узнать номер своего аккаунта можно в любом брокерском отчёте, там будет указан номер договора, он же является вашимaccountId
. - Обновлены все методы, связанные с отображением в консоли данных с биржи, после перехода у брокера Tinkoff Invest API на версию v2.
- Метод
Overview()
теперь показывает больше информации по отложенным и стоп-ордерам. - Метод
SendAPIRequest()
теперь показывает в логах информацию от сервера при всех 4xx и 5xx ошибках. - Из метода
Overview()
вынесены в отдельные методыRequestPortfolio()
,RequestPositions()
,RequestPendingOrders
иRequestStopOrders()
— операции по запросу портфеля, открытых позиций и ордеров пользователя. - При помощи метода
CloseOrders()
теперь можно закрывать и биржевые отложенные (pending) ордера, и стоп-ордера. Достаточно указать ID или список ID. - Добавлено отображение разницы в % между предыдущей и текущей ценой закрытия инструмента во все таблицы, где это востребовано.
- #22 Ключи
--open-trade
и--open-order
заменены ключами--trade
и--order
, потому что у них были слишком длинные имена. МетодыOpenOrder()
иOpenTrade()
заменены методамиOrder()
иTrade()
. - Статический метод
GetDatesAsString()
вынесен за пределы классаTinkoffBrokerServer()
. - Переменная
instrumentsList
для простоты переименована вiList
. - Метод
MDInfo()
переименован вShowInstrumentInfo()
(по аналогии с уже имеющимсяShowInstrumentsInfo()
).
Баг-фиксы
- Важно! Проведён рефакторинг и исправлено множество ошибок в методах, связанные с переходом Tinkoff Invest API на версию v2 и сменой типов данных.
- Исправлен счётчик в логе в строке "Pairs (tickers, timeframes) count: [XXX]"
- Исправлена ошибка в методе
Deals()
: в случае, когда конечная дата не указана теперь берётся текущая дата. - Исправлен баг с отображением истории операций, если за указанный период были дивидендные выплаты.
- Исправлен баг, когда сервер возвращал пустую комиссию.
- #26 Исправлена ошибка с неправильным результатом для дробных чисел:
FloatToNano(number=0.05)
. - #34 Исправлена ошибка с
KeyError: 'asks'
, когда от сервера не приходит ответ с данными по текущим ценам. - #32 Исправлены ошибки при попытке закрытия всех ордеров с ключом
--close-all orders
. Ошибка возникла из-за неправильной обработки формата входной строки в одном из отладочных сообщений. Убраны лишние сообщения, а вместе с ними и ошибка форматирования.
release-1.0.1
1.0.1 (2020-05 - 2022-07) — устаревшая версия, неработоспособная с новым Tinkoff Open API REST-протоколом
Ретроспектива
Первый прототип TKSBrokerAPI — python API над REST-протоколом для Tinkoff Invest API — включал в себя основные возможности для работы с биржей:
- получать цены в стакане (DOM — Depth of Market) для выбранного инструмента;
- получать список всех инструментов, их названий, тикеров и FIGI;
- просматривать текущее состояние портфеля и его стоимость;
- получать полную брокерскую информацию по инструменту, зная его тикер или FIGI;
- получать таблицу текущих цен для списка инструментов;
- получать информацию по историческим ценам инструментов, доступных через Tinkoff Broker, и сохранять их в csv-файлы;
- загружать исторические ценовые данные из csv-файлов и отображать их на интерактивном графике или в консоли;
- открывать и закрывать лимитные ордера (биржевые заявки или однодневные ордера, отображающиеся в стакане DOM);
- создавать биржевые заявки (рыночные ордера исполняющиеся по текущим ценам в стакане DOM);
- открывать сетку лимитных ордеров с некоторым шагом;
- закрывать все ордера и активные заявки сразу или только определённого типа: акции, облигации, фонды;
- создавать отчёт по операциям за указанный период.
Затем, примерно с середины и до конца 2021 года, разработчики Tinkoff активно изменяли свой REST-протокол. Модуль TKSBrokerAPI
стал неработоспособным. Но в течение весны-лета 2022 года удалось восстановить и даже расширить большинство его функций, переписать код на работу с новым Tinkoff Open API REST-протоколом, выложить библиотеку в опенсорс и настроить релизный цикл её выпуска.