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
. Ошибка возникла из-за неправильной обработки формата входной строки в одном из отладочных сообщений. Убраны лишние сообщения, а вместе с ними и ошибка форматирования.