Skip to content

Latest commit

 

History

History
199 lines (143 loc) · 47.4 KB

CHANGELOG.md

File metadata and controls

199 lines (143 loc) · 47.4 KB

TKSBrokerAPI — список релизных изменений

gift

1.5.* (2022-11-21) — в разработке...

Дайджест

В очередной версии TKSBrokerAPI в отчёте о портфеле пользователя появилась новая секция с календарём платежей по облигациям. Он строится автоматически, если имеется хотя бы одна облигация в портфеле (ключ --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 Исправлено отображение дробных чисел при печати биржевого стакана.

1.4.90 (2022-11-07) — опубликована

Дайджест

Теперь можно обогащать сырые данные по облигациям большим числом полей и значений, выгружать их в XLSX-формате и pandas dataframe! Это пригодится датасайнтистам и биржевым аналитикам (смотрите описание ключа --bonds-xlsx). С помощью этих данных можно построить полный календарь выплат по облигациям (ключ --calendar).

Для скачиваемых с сервера или загружаемых из файла исторических свечей теперь можно построить интерактивные или простые графики (ключ --render-chart). Если вам нужны сырые данные с сервера по всем инструментам, их можно сохранить в формате XLSX с ключом --list-xlsx.

А также, теперь можно узнать: все данные по своему аккаунту, включая accounId (команда --user-info или --account) и лимиты на вывод доступных средств (команда --limits).

Новая функциональность
  • #15 Реализованы методы: RequestLimits() для запроса сырых данных по лимитам для пользователя на вывод средств, OverviewLimits() для отображения табличных данных и ключ --limits (--withdrawal-limits, -w) для запроса и отображения лимитов в консоли.
  • #6 При запуске с ключом --history добавлена возможность указать дополнительный ключ --render-chart и сгенерировать интерактивный или не интерактивный свечные графики, при помощи библиотеки PriceGenerator. Аналогично можно построить графики для ранее сохранённых csv-файлов с историей свечей. Для этого нужно указать ключ --render-chart вместе с новым ключом для загрузки данных из файла: --load-history.
  • #46 Реализован ключ --list-xlsx (или -x), который возвращает необработанные данные по всем доступным для данного аккаунта инструментам, аналогичные данным из dump.json, но сохраненные в формате XLSX, для дальнейшего использования дата-сайнтистами или биржевыми аналитиками, по умолчанию используется dump.xlsx. Также был разработан новый метод DumpInstrumentsAsXLSX() который конвертирует сырые данные по инструментам в формат XLSX.
  • #11 Добавлен ключ --user-info (-u), который выводит данные, связанные с аккаунтом, привязанным к текущему токену: доступную информацию о пользователе и его аккаунтах, права на операции, лимиты для маржинальной торговли. Также добавлен ключ --account (--accounts, -a), который выводит простую табличку, содержащую только аккаунты пользователя.
  • #10 При запросе информации об облигациях (с ключом --info или -i), теперь рассчитывается и отображается больше данных: график выплат по облигациям, общее количество выплат и уже погашенные купоны, купонный доход в процентах годовых (средняя купонная ежедневная доходность * 365), текущая доходность в процентах годовых (зависит от цены и количества оставшихся невыплаченных купонов, считается как средняя текущая ежедневная доходность * 365), НКД и размер купона. Для запроса нужной информации реализованы методы RequestBondCoupons() (возвращает словарь обработанных данных, полученных с сервера) и ExtendBondsData() (возвращает обогащённый pandas dataframe, содержащий больше информации об облигациях). Метод ShowInstrumentInfo() был доработан, для отображения большего количества информации по облигациям и календаря выплат. Для выгрузки обогащённых данных по облигациям в формат XLSX-файла (по умолчанию ext-bonds.xlsx), теперь можно использовать ключ --bonds-xlsx (-b).
  • #63 Реализован метод CreateBondsCalendar(), генерирующий pandas dataframe с общим календарём выплат по указанным или всем облигациям. Метод ShowBondsCalendar() отображает календарь в консоли и сохраняет в файл, calendar.md по умолчанию в формате markdown. Для запроса календаря выплат нужно использовать ключ --calendar (-c), при этом также сохраняется таблица в формате XLSX, в файл по умолчанию calendar.xlsx. В случае, если календарь строится более чем для одной облигации, то платежи в один и тот же месяц группируются.
Улучшения
  • #59 TKSBrokerAPI билд-номер теперь печатается в логах, а также его можно узнать набрав команду --version (или --ver).
  • #47 iList поле более неактуально из-за использования локального дампа dump.json, в котором автоматически обновляется список доступных для торговли инструментов, поэтому поле удалено из класса TinkoffBrokerServer().
  • #9 В метод ShowInstrumentInfo() добавлена информация о текущем статусе торгов по запрашиваемому инструменту. Реализован дополнительный метод RequestTradingStatus() для запроса статуса торгов по инструменту. Добавлены флаги: buyAvailableFlag, sellAvailableFlag, shortEnabledFlag, limitOrderAvailableFlag, marketOrderAvailableFlag и apiTradeAvailableFlag. В рамках этой же задачи реализована задача #37: добавлена возможность сохранения информации по инструменту в файл, заданный ключом --output, по умолчанию info.md.
  • #64 ВНИМАНИЕ! Выполнен рефакторинг во многих методах. Все параметры, которые отвечают за отображение дополнительной информации в консоли: showPrice, showPrices, printInfo, showInfo, showInstruments, showResults, showStatistics, printDeals, printCandles, showLimits, showAccounts — были заменены переменной с простым именемshow.
  • #65 ВНИМАНИЕ! Выполнен рефакторинг во многих методах. Все overview параметры заменены переменной portfolio.
  • Отключены повторы для 4xx сетевых ошибок, повторы оставлены только для 5xx ошибок. Это связано с тем, что нет смысла ожидать появления отсутствующих данных на сервере, например, в случае неверного указания ресурса.
  • Теперь при запуске метода SendAPIRequest(debug=True) в логи выводится больше отладочной информации, например, параметры запроса и ответа сервера, а также их хедеры.
  • Добавлено ожидание между сетевыми запросами, в случае достижения лимита по количеству запросов. Лимит определяется по значению заголовка ответа "x-ratelimit-remaining": "0", а количество секунд ожидания определяется значением заголовка x-ratelimit-reset, например, "x-ratelimit-reset": "15", что означает ожидание 15 секунд до следующего запроса. Это позволило значительно уменьшить количество сетевых ошибок, связанных с ожиданием для большого числа запросов к API сервера.
  • Хедер "x-app-name": "Tim55667757.TKSBrokerAPI" был добавлен к каждому API-запросу, для идентификации фреймворка TKSBrokerAPI.
Баг-фиксы
  • Исправлена ошибка NoneType object has no attribute ... в случае, если ключ --history использовался без указания каких-либо параметров.
  • #71 Пришлось сделать быстрый хак, чтобы избежать проблем в секциях статистики Portfolio distribution by currencies и Portfolio distribution by countries: принудительно добавлена валюта rub и страна "[RU] Российская Федерация", перед расчётом статистики.

1.3.70 (2022-09-07) — опубликована

Новая функциональность
  • #5 Добавлена возможность скачивания истории цен по инструменту с поддержкой докачки по ключу --history. Также ключ --interval позволяет указать временной интервал для скачиваемых ценовых свечей в формате OHLCV. Ключ --only-missing позволяет докачать только последние свечи, сохранённые в файле, заданном через --output. Ключ --csv-sep задаёт разделитель между данными в csv-файлах. History returned between two given dates: start and end. 1970-01-01 минимальная дата в прошлом, начиная с которой брокер даёт скачать историю. Внимание! Брокер использует ISO UTC формат времени.
Улучшения
  • #17 Оптимизирован запрос цен для инструментов и убраны повторные запросы цены для одного и того же инструмента при запуске с ключом --prices или вызове метода Overview(). За счёт удаления дублирующих запросов немного повысилась скорость работы.
  • #43 Добавлены новые ключи для уменьшения информации в методе Overview(): ключ --overview-positions показывает только открытые позиции, без всего остального, ключ --overview-digest показывает короткий дайджест состояния портфеля, ключ --overview-analytics показывает только раздел аналитики и распределения портфеля по различным категориям, ключ --overview-orders показывает только секцию открытых лимитных и стоп ордеров.
  • #44 Все markdown-таблицы приведены к стандартному виду, включая отрисовку правой части таблиц.
Баг-фиксы
  • #18 Добавлена обработка ошибки raise JSONDecodeError("Expecting value", s, err.value) from None. Теперь отображается сообщение: Check you Internet connection! Failed to establish a new connection to broker server! и выводится путь до файла с дебажными логами.
  • #16 Исправлено отображение дробных чисел с первым нулём после десятичной точки, в случаях, когда вместо 1.0 выводилось 1..
  • #38 Исправлено отображение дробной части цен при запросе ETF.

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"].

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

1.0.1 (2020-05 - 2022-07) — устаревшая версия, неработоспособная с новым Tinkoff Open API REST-протоколом

Ретроспектива

Первый прототип TKSBrokerAPI — python API над REST-протоколом для Tinkoff Invest API — включал в себя основные возможности для работы с биржей:

  • получать цены в стакане (DOM — Depth of Market) для выбранного инструмента;
  • получать список всех инструментов, их названий, тикеров и FIGI;
  • просматривать текущее состояние портфеля и его стоимость;
  • получать полную брокерскую информацию по инструменту, зная его тикер или FIGI;
  • получать таблицу текущих цен для списка инструментов;
  • получать информацию по историческим ценам инструментов, доступных через Tinkoff Broker, и сохранять их в csv-файлы;
  • загружать исторические ценовые данные из csv-файлов и отображать их на интерактивном графике или в консоли;
  • открывать и закрывать лимитные ордера (биржевые заявки или однодневные ордера, отображающиеся в стакане DOM);
  • создавать биржевые заявки (рыночные ордера исполняющиеся по текущим ценам в стакане DOM);
  • открывать сетку лимитных ордеров с некоторым шагом;
  • закрывать все ордера и активные заявки сразу или только определённого типа: акции, облигации, фонды;
  • создавать отчёт по операциям за указанный период.

Затем, примерно с середины и до конца 2021 года, разработчики Tinkoff активно изменяли свой REST-протокол. Модуль TKSBrokerAPI стал неработоспособным. Но в течение весны-лета 2022 года удалось восстановить и даже расширить большинство его функций, переписать код на работу с новым Tinkoff Open API REST-протоколом, выложить библиотеку в опенсорс и настроить релизный цикл её выпуска.

gift