Skip to content

release-1.1.48

Compare
Choose a tag to compare
@Tim55667757 Tim55667757 released this 28 Jul 19:09
· 305 commits to master since this release
20e68bc

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