release-1.2.62
Release notes (in english)
Issues included in the release
PyPI: 1.2.62 (2022-08-23)
Новая функциональность
- #13 Для уменьшения количества запросов к серверу, добавлена возможность кэширования данных по биржевым инструментам. Кэш используется по умолчанию при первичной инициализации класса
TinkoffBrokerServer, но это действие можно отменить через переменную классаuseCache=Falseили используя ключ--no-cacheв консоли. Добавлен методDumpInstruments(), с помощью которого можно создать дамп данных с сервера. В классTinkoffBrokerServerтакже добавлена переменнаяiListDumpFile(путь до кэша, по умолчаниюdump.json). Кэш автоматически обновляется, если идёт другой день, чем день последнего изменения файлаdump.json. Примечание: все даты используются в UTC-формате. - #7 Добавлена возможность поиска инструмента по части названия, тикера или FIGI с помощью ключа
--search(или-s). Реализован метод для поискаSearchInstruments(), которому на вход можно передать поисковый паттерн: часть слова или строку с регулярным выражением. В качестве результата метод возвращает словарь словарей, похожий на переменнуюiList, но содержащий только найденные инструменты (примеры). - Был добавлен новый метод
IsInPortfolio(). Он проверяет на наличие инструмента в портфеле пользователя. Инструмент должен быть задан черезself.ticker(приоритетно) или черезself.figi. Метод возвращаетTrue, если портфель содержит открытую позицию по инструменту, в противном случае возвращаетFalse. - Был добавлен новый метод
GetInstrumentFromPortfolio(). Он возвращает данные по инструменту, если он есть в портфеле пользователя. Инструмент должен быть задан черезself.ticker(приоритетно) или черезself.figi.
Улучшения
- #12 В общую информацию о состоянии портфеля (ключ
--overviewили-o), добавлен раздел "Распределение портфеля по странам" (пример). - #8 Добавлен ключ
--no-cancelledи переменнаяshowCancelledв методеDeals(), чтобы регулировать отображение информации об отменённых операциях при использовании ключа--deals(или-d). Изменено имя файла с отчётом по умолчанию: вместоreport.mdтеперь используетсяdeals.md. - #42 Добавлен пример реализации абстрактного торгового сценария.
- В секцию
statрезультатов, выдаваемых методомOverview(), было добавлено полеfunds. Теперь в нём хранится словарь доступных для торговли средств по каждой валюте (всего средств - заблокированные средства), например,{"rub": {"total": 10000.99, "totalCostRUB": 10000.99, "free": 1234.56, "freeCostRUB": 1234.56}, "usd": {"total": 250.55, "totalCostRUB": 15375.80, "free": 125.05, "freeCostRUB": 7687.50}}.
Баг-фиксы
- Исправлен тип данных для облигаций (неправильно:
iJSON["type"] == "Bond", правильно:iJSON["type"] == "Bonds"). - Исправлена ошибка с JSON-декодером:
TypeError: JSONDecoder.__init__() got an unexpected keyword argument 'encoding'. Ошибка была из-за изменений в Python 3.9: аргументencodingбыл удалён. Смотрите: https://docs.python.org/3/library/json.html#json.loads - Исправлена ошибка с неверным расчётом оставшихся свободных средств в рублях:
Overview()["stat"]["funds"]["rub"].