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