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

