четверг, 24 ноября 2022 г.

TKSBrokerAPI Trade Automation Platform: release-1.5.120

Опубликован очередной релиз платформы TKSBrokerAPI: v1.5.120. Рассмотрим основные изменения.

Release notes (in english)
Issues included in the release

PyPI: 1.5.120 (2022-11-21)

Дайджест

В новой версии TKSBrokerAPI в отчёте о портфеле пользователя появилась новая секция с календарём платежей по облигациям (сам календарь, возможность обогащения облигаций данными и множество других интересных фич появились в предыдущей стабильной версии v1.4.90, о них я писал в прошлом посте). 

Календарь платежей строится автоматически, если имеется хотя бы одна облигация в портфеле (ключ --overview-calendar). Был добавлен ключ --html для сохранения любых пользовательских отчётов в HTML формат. Кроме того, появилась возможность закрывать позицию и все ордера по ключу --close-all для одного инструмента, заданного через --ticker или --figi.

Поддержать проект: https://yoomoney.ru/to/410015019068268

Торговый сценарий ./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 Исправлено отображение дробных чисел при печати биржевого стакана.

Успехов вам в автоматизации биржевой торговли! А платформа TKSBrokerAPI вам в этом поможет :)


Поддержать проект: https://yoomoney.ru/to/410015019068268