release-1.1.48
Release notes (in english)
Issues included in the release
PyPI: 1.1.48 (2022-07-28)
Новая функциональность
- Лицензия изменена с MIT на Apache-2.0.
- Важно! Восстановлена функциональность большей части методов, входящих в
TKSBrokerAPIv1.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. Ошибка возникла из-за неправильной обработки формата входной строки в одном из отладочных сообщений. Убраны лишние сообщения, а вместе с ними и ошибка форматирования.