diff --git a/.gitignore b/.gitignore
index e28c1a8..fc2455c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,6 @@
.DS_Store
.vscode
+.idea
# npm
node_modules
diff --git a/investAPI-main/README.md b/investAPI-main/README.md
index e0588dd..66f2f11 100644
--- a/investAPI-main/README.md
+++ b/investAPI-main/README.md
@@ -1,12 +1,12 @@
-# API Тинькофф Инвестиций
+# T-Invest API
-Tinkoff Invest API — это интерфейс для взаимодействия с торговой платформой [Тинькофф Инвестиции](https://www.tinkoff.ru/invest/).
+T-Invest API — это интерфейс для взаимодействия с торговой платформой [Т-Инвестиции](https://www.tbank.ru/invest/).
-[Документация для разработчиков](https://tinkoff.github.io/investAPI/)
+[Документация для разработчиков](https://russianInvestments.github.io/investAPI/)
# Акции
-С 25 июля 2022 действует акция с кэшбэком в размере 10% от комиссии по всем торговым поручениям, выставляемым через [API](https://www.tinkoff.ru/invest/open-api/).
+С 25 июля 2022 действует акция с кэшбэком в размере 10% от комиссии по всем торговым поручениям, выставляемым через [API](https://www.tbank.ru/invest/open-api/).
# Примеры решаемых задач
@@ -14,7 +14,7 @@ Tinkoff Invest API — это интерфейс для взаимодейств
Через API можно загрузить как исторические котировки, так и котировки в режиме реального времени по всем бумагам
-Для загрузки всех исторических котировок (по всем годам и бумагам) рекомендуем использовать [скрипт](https://github.com/Tinkoff/investAPI/blob/main/src/marketdata/download_md.sh)
+Для загрузки всех исторических котировок (по всем годам и бумагам) рекомендуем использовать [скрипт](https://github.com/russianInvestments/investAPI/blob/main/src/marketdata/download_md.sh)
### Сигналы на покупку или продажу
@@ -27,11 +27,11 @@ Tinkoff Invest API — это интерфейс для взаимодейств
### Тестирование стратегий на истории
-Tinkoff Invest API позволит протестировать торговую гипотезу на основе исторических данных
+T-Invest API позволит протестировать торговую гипотезу на основе исторических данных
### Создание торговых роботов
-При помощи Tinkoff Invest API можно создать своего торгового робота, осуществляющего полностью автоматическую торговлю по стратегии
+При помощи T-Invest API можно создать своего торгового робота, осуществляющего полностью автоматическую торговлю по стратегии
# Функциональные возможности
@@ -51,21 +51,22 @@ API реализован на быстром, удобном и функцион
Для поддержки web-клиентов, например браузерных JS скриптов, внедрена поддержка [gRPC-web](https://grpc.io/docs/platforms/web/basics/).
-А для клиентов, привыкших работать с REST API, реализован прокси [Swagger](https://tinkoff.github.io/investAPI/swagger-ui/)
+Для клиентов, привыкших работать с REST API, реализован прокси [Swagger](https://russianInvestments.github.io/investAPI/swagger-ui/).
+Есть поддержка WebSocket стриминга. [Спецификация](https://github.com/RussianInvestments/investAPI/blob/main/src/docs/ws/asyncapi.yaml)
-[Документация для разработчиков](https://tinkoff.github.io/investAPI/)
+[Документация для разработчиков](https://RussianInvestments.github.io/investAPI/)
# SDK
-Вы можете как самостоятельно создать обертку по [proto-контрактам](https://github.com/Tinkoff/investAPI/tree/main/src/docs/contracts) так воспользоваться одним из SDK:
+Вы можете как самостоятельно создать обертку по [proto-контрактам](https://github.com/RussianInvestments/investAPI/tree/main/src/docs/contracts) так воспользоваться одним из SDK:
-## Официальные
-* [go](https://github.com/Tinkoff/invest-api-go-sdk)
-* [python](https://github.com/Tinkoff/invest-python)
-* [java](https://github.com/Tinkoff/invest-api-java-sdk)
-* [csharp](https://github.com/Tinkoff/invest-api-csharp-sdk)
+## SDK от RussianInvestments
+* [go](https://github.com/RussianInvestments/invest-api-go-sdk)
+* [python](https://github.com/RussianInvestments/invest-python)
+* [java](https://github.com/RussianInvestments/invest-api-java-sdk)
+* [csharp](https://github.com/RussianInvestments/invest-api-csharp-sdk)
-## Неофициальные
+## Неофициальные SDK
* [golang](https://github.com/ssummers02/invest-api-go-sdk)
* nodejs
- [betslus1/unofficial-tinkoff-invest-api_v2-lazy-sdk-NODEJS](https://github.com/betslus1/unofficial-tinkoff-invest-api_v2-lazy-sdk-NODEJS)
@@ -74,7 +75,9 @@ API реализован на быстром, удобном и функцион
* [haskell](https://github.com/nickmi11er/tinkoff-invest-haskell)
* [php](https://github.com/metaseller/tinkoff-invest-api-v2-php)
* [php YII2](https://packagist.org/packages/metaseller/tinkoff-invest-api-v2-yii2)
-* [swift](https://github.com/JohnReeze/TinkoffInvestSwiftSDK)
+* swift
+ - [JohnReeze/TinkoffInvestSwiftSDK](https://github.com/JohnReeze/TinkoffInvestSwiftSDK)
+ - [egorbos/invest-api-swift-sdk](https://github.com/egorbos/invest-api-swift-sdk)
* [ruby](https://github.com/blackchestnut/invest_tinkoff)
* [rust](https://github.com/ovr/tinkoff-invest-rust)
* [c++](https://github.com/samoilovv/TinkoffInvestSDK)
@@ -83,7 +86,7 @@ SDK на других языках в процессе разработки.
# Как работать с этим репозитарием
-В [Issues](https://github.com/Tinkoff/investAPI/issues) вы можете задать вопрос или найти ответ, если вопрос уже был задан другими пользователями.
+В [Issues](https://github.com/RussianInvestments/investAPI/issues) вы можете задать вопрос или найти ответ, если вопрос уже был задан другими пользователями.
Если вы встретили неточность или хотели бы что-то дополнить, то мы будем рады принять от вас pull request.
@@ -91,8 +94,7 @@ SDK на других языках в процессе разработки.
* [Telegram-канал](https://t.me/tinkoffinvestopenapi)
* [Telegram-чат по общим вопросам](https://t.me/joinchat/VaW05CDzcSdsPULM)
-* [Telegram-чат для заказчиков и разработчиков торговых роботов](https://t.me/tinkoff_invest_robot_development)
# Разработчикам ПО для широкого круга пользователей
-Если Вы разрабатываете публичное ПО, использующее Tinkoff Invest API, то необходимо написать на al.a.volkov@tinkoff.ru краткую информацию о проекте для регистрации выделенного appname и получения дополнительной техподдержки.
+Если Вы разрабатываете публичное ПО, использующее T-Invest API, то необходимо написать в поддержку Т-Инвестиций по адресу invest-public-api@tbank.ru краткую информацию о проекте для регистрации выделенного appname и получения дополнительной техподдержки.
diff --git a/investAPI-main/src/docs/accredited_investor.md b/investAPI-main/src/docs/accredited_investor.md
index ea56b66..72fd3e2 100644
--- a/investAPI-main/src/docs/accredited_investor.md
+++ b/investAPI-main/src/docs/accredited_investor.md
@@ -1,24 +1,22 @@
# Квалифицированный инвестор
-Согласно законодательству Российской Федерации, для доступа физического лица к операциям
-с определённым перечнем ценных бумаг требуется получить статус квалифицированного инвестора.
-Речь идёт, например, о доступе к торгам ценными бумагами на иностранных биржах и
-активами на внебиржевом рынке: сплитированными и целыми лотами евробондов
-российских и зарубежных компаний, структурными нотами и многим другим.
-
-Неквалифицированным инвесторам недоступна торговля ценными бумагами, отсутствующими на Бирже СПБ и ММВБ.
+Согласно законодательству Российской Федерации, физическое лицо должно иметь статус квалифицированного инвестора для доступа к операциям с определённым перечнем ценных бумаг. Например, для торгов ценными бумагами на иностранных биржах и активами на внебиржевом рынке — сплитированными и целыми лотами евробондов российских и зарубежных компаний, структурными нотами и многим другим.
+Неквалифицированные инвесторы не могут торгововать ценными бумагами, которых нет на Бирже СПБ и ММВБ.
## Требования к квалифицированным инвесторам
-Для получения статуса квалифицированного инвестора нужно выполнить одно из условий:
+Чтобы получить статус квалифицированного инвестора, нужно выполнить одно из условий:
* владеть активами на сумму от 6 млн рублей;
* иметь опыт работы на финансовом рынке;
-* профильное образование;
-* оборот по сделкам от 6 млн рублей.
+* иметь профильное образование;
+* иметь оборот по сделкам от 6 млн рублей.
+
+## Смотрите также
+
+* [Подробнее про статус квалифицированного инвестора](https://help.tbank.ru/invest-premium/invest-premium-qualification/)
+
+* [Как получить статус квалифицированного инвестора](https://help.tbank.ru/invest-premium/invest-premium-qualification/how-to-get-qualification/)
-См. также:
-* [Статус квалифицированного инвестора](https://help.tinkoff.ru/invest-premium/invest-premium-qualification/);
-* [Как получить статус квалифицированного инвестора](https://help.tinkoff.ru/invest-premium/invest-premium-qualification/how-to-get-qualification/);
-* [Как получить статус квалифицированного инвестора по опыту работы](https://help.tinkoff.ru/invest-premium/invest-premium-qualification/invest-premium-requirement/).
+* [Как получить статус квалифицированного инвестора по опыту работы](https://help.tbank.ru/invest-premium/invest-premium-qualification/invest-premium-requirement/)
\ No newline at end of file
diff --git a/investAPI-main/src/docs/algorithmic_trading.md b/investAPI-main/src/docs/algorithmic_trading.md
index dccca0f..18d09cb 100644
--- a/investAPI-main/src/docs/algorithmic_trading.md
+++ b/investAPI-main/src/docs/algorithmic_trading.md
@@ -1,162 +1,169 @@
# Алгоритмическая торговля
-**Алгоритмическая торговля** (алготрейдинг) – это автоматическая система торговли на бирже, основанная
-на определённых алгоритмах. Алгоритмы также называют "Торговыми роботами". Существует большое количество
-стратегий и алгоритмов, реализуемых на базе торговых роботов.
-
-## Этапы алгоритмической торговли
-Вне зависимости от выбранной стратегии выделяется несколько этапов разработки торгового робота:
-
-1. **Сбор и анализ исторических данных**. На данном этапе перед разработчиком торгового робота стоит задача
-сбора максимального количество исторических данных с биржи, а именно котировки, свечи. Требуется это в
-первую очередь для анализа и подготовки гипотез, которые будут в последующем проверяться и дорабатываться.
-
-2. **Выдвижение гипотезы**. Используя исторические данные разработчик должен сформировать гипотезу, т.е.
-некую идею, которая будет реализовываться торговым роботом. Гипотеза необязательно должна быть
-"человекочитаемой" — это вполне может быть результат обучения алгоритма, основанного на интеллектуальных
-технологиях (нейросети, машинное обучение и т.п.).
-
-3. **Проверка гипотезы на исторических данных**. На данном этапе производится проверка выдвинутой на
-предыдущем шаге теории. Производится эмуляция торговли робота "в прошлом". Оценивается уровень доходности
-и прибыльность стратегии. Если результаты неудовлетворительные, то следует вернуться назад и доработать
-гипотезу или выдвинуть новую.
-
-4. **Проверка гипотезы в реальном времени**. Не всегда историческая доходность гарантирует доходность в
-будущем, поэтому кроме проверки на исторических данных требуется провести тестирование алгоритма и на
-реальных данных. Для этой задачи отлично подходит песочница Public Invest API. Хотя песочница и имеет ряд
-ограничений (например, отсутствует влияние на рынок самого алгоритма), для предварительной проверки
-гипотезы она вполне может подойти.
-
-5. **Реальная торговля на бирже**. На данном этапе запускается полноценная торговля на бирже — с последующим
-мониторингом доходности и корректировкой алгоритма, если того требует ситуация.
-
-## Классификация алгоритмической торговли
-
-Виды алгоритмической торговли:
-
-* **по степени автономности алгоритмов:**
-
- * **сигнальные** – тип алгоритмов, которые, исходя из внутренней логики, формируют сигналы трейдеру о покупке
-или продаже инструментов. Решение же о непосредственном выставлении заявки на биржу принимает человек
-(разработчик алгоритма);
-
- * **автоматические** – тип торгового робота, который самостоятельно торгует на бирже, т.е.
-выставление/отмена торговых поручений происходит в полностью автоматическом режиме без участия человека.
-
-* **по частоте торгов**:
-
- * **высокочастотная торговля (англ. high-frequency trading, HFT)** – основная форма алгоритмической
+**Алгоритмическая торговля** (алготрейдинг) — это автоматическая система торговли на бирже, основанная
+на определённых алгоритмах. Алгоритмы также называют «торговыми роботами». Существует большое количество
+стратегий и алгоритмов, которые реализуются на базе торговых роботов.
+
+## Этапы
+
+Вне зависимости от выбранной стратегии, выделяется несколько этапов разработки торгового робота:
+
+
+Сбор и анализ исторических данных. На этом этапе перед разработчиком торгового робота стоит задача
+сбора максимального количества исторических данных с биржи — котировки, свечи. Это нужно для анализа и подготовки гипотез, которые будут проверяться и дорабатываться после.
+
+Выдвижение гипотезы. Используя исторические данные, разработчик должен сформировать гипотезу —
+некую идею, которая будет реализовываться торговым роботом.
+Гипотеза необязательно должна быть «человекочитаемой» — это вполне может быть результат обучения алгоритма, основанного на интеллектуальных технологиях: нейросети, машинное обучение и так далее.
+
+Проверка гипотезы на исторических данных. На этом этапе проверяется теория, выдвинутая на
+предыдущем шаге, производится эмуляция торговли робота «в прошлом», оценивается уровень доходности
+и прибыльность стратегии.
+Если результаты неудовлетворительные, нужно вернуться назад и доработать
+гипотезу или выдвинуть новую.
+
+Проверка гипотезы в реальном времени. Не всегда историческая доходность гарантирует доходность в
+будущем. Поэтому кроме проверки на исторических данных нужно провести тестирование алгоритма на
+реальных данных.
+Для этой задачи можно воспользоваться песочницей Public Invest API. Несмотря на то, что песочница имеет ряд ограничений — например, отсутствует влияние на рынок самого алгоритма, — для предварительной проверки гипотезы её может быть достаточно.
+
+Реальная торговля на бирже. На этом этапе запускается полноценная торговля на бирже с последующим
+мониторингом доходности и корректировкой алгоритма, если это нужно.
+
+
+
+## Классификация
+
+Виды алгоритмической торговли:
+
+По степени автономности алгоритмов.
+
+Сигнальные – тип алгоритмов, которые формируют сигналы трейдеру о покупке
+или продаже инструментов исходя из внутренней логики. Решение о выставлении заявки на биржу принимает человек — разработчик алгоритма.
+
+Автоматические – тип торгового робота, который самостоятельно торгует на бирже — торговые поручения
+выставляются и отменяются автоматически без участия человека.
+
+
+
+По частоте торгов.
+
+Высокочастотная торговля (high-frequency trading, HFT) – основная форма алгоритмической
торговли на финансовых рынках, в которой современное оборудование и алгоритмы используются для быстрой
-торговли ценными бумагами. В HFT используются специальные торговые стратегии, при которых компьютеры
-покупают и продают позиции в течение долей секунды, получая при этом на каждой сделке минимальную прибыль
-(часто измеряемую сотыми долями процента). Данный тип алгоритмов очень критичен к скорости получения
-биржевой информации и скорости выставления поручений на торговую площадку. Задержки на считанные
-миллисекунды способны свести и без того небольшую доходность каждой сделки к нулю или даже к убыткам;
-
- * **интрадей торговля** – торговля внутри одного торгового дня. При такой стратегии сделки с инструментами
+торговли ценными бумагами.
+В HFT используются специальные торговые стратегии, при которых компьютеры покупают и продают позиции в течение долей секунды, получая при этом на каждой сделке минимальную прибыль — часто она измеряется сотыми долями процента. Этот тип алгоритмов очень критичен к скорости получения биржевой информации и скорости выставления поручений на торговую площадку. Задержки на считанные миллисекунды способны свести и без того небольшую доходность каждой сделки к нулю или даже к убыткам.
+
+Интрадей-торговля – торговля внутри одного торгового дня. При такой стратегии сделки с инструментами
производятся строго в рамках одного торгового дня и никогда не переносятся на следующий. Отличие от HFT в
-первую очередь заключается во времени владения активом, оно может достигать минут и часов;
-
- * **фундаментальная торговля** – вид алгоритмов, при котором отсутствует привязка к торговому дню биржи.
+первую очередь заключается во времени владения активом — оно может достигать минут и часов.
+
+Фундаментальная торговля – вид алгоритмов, при котором нет привязки к торговому дню биржи.
Один актив может удерживаться торговым роботом в течение нескольких дней или даже недель в ожидании выгодного
-предложения о продаже/покупке.
-
-* **по цели реализации алгоритма:**
-
- * **получение непосредственно прибыли** – цель таких алгоритмов генерировать прибыль на спекуляции
-активами;
-
- * **уменьшение риска владения портфелем** – данный тип алгоритмов предназначен для автоматической
-диверсификации и ребалансировки портфеля владельца. Основная цель самого алгоритма не генерация прибыли,
+предложения о продаже или покупке.
+
+
+
+
+
+По цели реализации алгоритма.
+
+Получение непосредственно прибыли – цель таких алгоритмов генерировать прибыль на спекуляции
+активами.
+
+Уменьшение риска владения портфелем – этот тип алгоритмов предназначен для автоматической
+диверсификации и ребалансировки портфеля владельца. Основная цель самого алгоритма — не генерация прибыли,
а максимально быстрое реагирование на изменение баланса портфеля и приведение его к заранее заданным
-параметрам. Например, поддержание доли акций (по цене) в границах 30-40% от стоимости портфеля;
-
- * **оптимизация крупных сделок** – данный тип алгоритмов предназначен для совершения очень крупных по
+параметрам. Например, поддержание доли акций (по цене) в границах 30-40% от стоимости портфеля.
+
+Оптимизация крупных сделок – этот тип алгоритмов предназначен для совершения очень крупных по
объёму сделок. Особенности работы торговых площадок подразумевают сильное влияние на стоимость актива
крупными торговыми поручениями. Например, если появляется заявка на покупку определённых акций на сумму
-$1млн, это неминуемо сильно повысит цены торгов. Чтобы избежать такого влияния, крупные участники рынка
-используют алгоритмы, которые могут в течение длительного времени маленькими партиями покупать или продавать
-инструменты по заданным параметрам цены. Такое "дробление" позволяет минимизировать
-влияние трейдера на рынок и получить требуемые объёмы сделок по приемлемым ценам.
-
-* **по количеству используемых пулов ликвидности:**
-
- * **арбитражные** – эти алгоритмы используют разницу цен на разных торговых
-площадках, а также курсовую разницу различных валют. Арбитражный алгоритм очень критичный к скорости работы алгоритм,
-т.к. разница цен может наблюдаться считанные доли секунды.
-
- * **монопульные** – алгоритмы, использующие в своей работе только одну торговую площадку.
-
-* **по типам алгоритмов принятие решений и/или генерации сигналов:**
-
- * **парная торговля с целью уменьшения спреда** – тип алгоритмов, за основу которых берётся метод
-одновременного выставления поручений на покупку и продажу инструмента в границах текущего спреда стакана;
-
- * **машинное обучение и прочие элементы AI** – использование возможностей нейросетей и прочих
+$1млн, это неминуемо сильно повысит цены торгов.
+ Чтобы избежать такого влияния, крупные участники рынка используют алгоритмы, которые могут в течение длительного времени маленькими партиями покупать или продавать инструменты по заданным параметрам цены. Такое «дробление» позволяет минимизировать влияние трейдера на рынок и получить требуемые объёмы сделок по приемлемым ценам.
+
+
+
+По количеству используемых пулов ликвидности.
+
+Арбитражные – эти алгоритмы используют разницу цен на разных торговых
+площадках, а также курсовую разницу различных валют. Арбитражный алгоритм очень критичнен к скорости работы,
+так как разница цен может быть считанные доли секунды.
+
+Монопульные – алгоритмы, которые используют в своей работе только одну торговую площадку.
+
+
+
+По типам алгоритмов принятие решений и/или генерации сигналов.
+
+Парная торговля с целью уменьшения спреда – тип алгоритмов, за основу которых берётся метод
+одновременного выставления поручений на покупку и продажу инструмента в границах текущего спреда стакана.
+
+Машинное обучение и прочие элементы AI – использование возможностей нейросетей и прочих
интеллектуальных технологий для поиска корреляций и прогнозирования динамики цены того или иного
-инструмента;
-
- * **индикаторная алгоритмическая торговля** – тип алгоритмов, которые используют для прогнозирования
-высчитанные по строгому алгоритму индикаторы с заранее известными параметрами.
-
-* **по используемым инструментам:**
-
- * **фьючерсная и индексная торговля**;
- * **опционная торговля, включая опционный арбитраж**.
-
-> **Важно!**
-> Приведённая классификация является достаточно общей и нужно понимать, что реально работающий
+инструмента.
+
+Индикаторная алгоритмическая торговля – тип алгоритмов, которые используют для прогнозирования
+высчитанные по строгому алгоритму индикаторы с заранее известными параметрами.
+
+
+
+По используемым инструментам.
+
+- Фьючерсная и индексная торговля.
+- Опционная торговля, включая опционный арбитраж.
+
+
+
+
+> **Важно**
+> Приведённая классификация является общей — нужно понимать, что реально работающий
торговый робот может объединять в себе алгоритмы нескольких видов.
-## Риски алгоритмической торговли
+## Риски
-При торговле на бирже необходимо учесть:
-
-1. **Требуется определённый уровень компетентности в вопросах биржевой торговли**. Мы настоятельно
-рекомендуем изучить теорию биржевой торговли и особенностей работы Тинькофф Инвестиций перед началом
+При торговле на бирже нужно учитывать:
+
+Уровень компетентности в вопросах биржевой торговли. Мы настоятельно
+рекомендуем изучить теорию биржевой торговли и особенности работы Т-Инвестиций перед началом
разработки своего торгового робота, чтобы исключить риски, связанные с неправильным пониманием
-функционирования торговых площадок и вашего брокера.
-
-2. **Требуется определённый уровень компетентности в программировании**. Несмотря на наличие подробной
+функционирования торговых площадок и вашего брокера.
+
+Уровень компетентности в программировании. Несмотря на наличие подробной
документации и ряда готовых решений, снижающих порог входа, от разработчика будет требоваться некоторый
-набор знаний и навыков для написания своего алгоритма.
-
-3. **Убытки от работы торгового робота**. На бирже никто не застрахован от неудач, алгоритмическая же
+набор знаний и навыков для написания своего алгоритма.
+
+Убытки от работы торгового робота. На бирже никто не застрахован от неудач — алгоритмическая же
торговля накладывает дополнительный риск, связанный со скоростью принятий решений и большим количеством
-сделок. Неправильно работающий робот может довольно быстро опустошить счёт (даже не используя
-маржинальную торговлю). Мы рекомендуем внимательно относиться к этапам бэктестинга алгоритмов, проверять
-работу робота не только на исторических данных, но и тестировать выбранную стратегию на реальных данных
-(например, используя песочницу). Также следует разумно подходить к объёму средств, которые "доверяются"
-роботу при старте его работы, когда алгоритм ещё не проверен "в бою".
-
-4. **Различные ошибки в работе систем**. Как и любая информационная система, вся инфраструктура
-TINKOFF INVEST API и инфраструктура пользователя подвержены рискам нештатных ситуаций, ошибок, перерывов
-в работе. Это же справедливо для самой биржи, там тоже порой возникают различные сбои. Поэтому
-рекомендуется предусмотреть в работе вашего алгоритма максимальное количество таких ситуаций и корректное
-реагирование на них. Это могут быть уведомления, которые робот присылает вам в случае возникновения
-ошибок, механизм аварийного прекращения торговли или перерыва в ней. Описание возможных ошибок TINKOFF
-INVEST API и рекомендации по их устранению представлены на [странице](/src/docs/errors.md).
-
-## Стратегии алгоритмической торговли
-
-Различают следующие виды стратегий:
-
-* **TWAP** (с англ. Time Weighted Average Price — «взвешенная по времени средняя цена») — такой алгоритм
-открывает заявки через равные промежутки времени по ценам с лучшим спросом или предложением;
-
-* **VWAP** (с англ. Volume Weighted Average Price – «взвешенная по объёму средняя цена») — данный алгоритм нужен для
+сделок.
+Неправильно работающий робот может довольно быстро опустошить счёт — даже если не использовать маржинальную торговлю. Мы рекомендуем внимательно относиться к этапам бэктестинга алгоритмов, проверять работу робота не только на исторических данных, но и на реальных — например, используя песочницу. Также следует разумно подходить к объёму средств, которые «доверяются» роботу при старте его работы, когда алгоритм ещё не проверен «в бою».
+
+Различные ошибки в работе систем. Как и любая информационная система, вся инфраструктура
+T-Invest API и инфраструктура пользователя подвержены рискам нештатных ситуаций, ошибок, перерывов
+в работе.
+ Это также относится к работе самой биржи — там тоже возникают различные сбои. Поэтому рекомендуем предусмотреть в работе вашего алгоритма максимальное количество таких ситуаций и корректное реагирование на них. Например, это могут быть уведомления, которые робот присылает вам при возникновении ошибок, механизм аварийного прекращения торговли или перерыва в ней.
+ Описание возможных ошибок T-Invest API и рекомендации по их устранению
+
+
+
+## Стратегии
+
+Различают следующие виды стратегий:
+
+TWAP (Time Weighted Average Price — «взвешенная по времени средняя цена») — алгоритм
+открывает заявки через равные промежутки времени по ценам с лучшим спросом или предложением.
+
+VWAP (Volume Weighted Average Price – «взвешенная по объёму средняя цена») — алгоритм для
равномерного открытия позиции по равным частям определенного объёма в течение конкретного времени, а
-также по ценам не выше, чем средневзвешенное значение с момента запуска;
-
-* **Execution Strategy** — алгоритм предназначен для покупки актива по средневзвешенной цене в большом объёме, как
-правило, используется крупными игроками (хедж-фондами и брокерами);
-
-* **Спекулятивная стратегия** — стандартная модель для частных трейдеров, которая стремится к достижению
-максимально выгодной цены для входа в сделку с целью получения последующей прибыли;
-
-* **Data Mining** — это поиск новых закономерностей для новых алгоритмов. Более 75% дата-майнинга
-приходится на сбор данных до запуска тестирования. Итог поиска зависит только от профессионального и
-глубокого подхода. Сам же поиск осуществляют различные алгоритмы по ручным настройкам. Например, найти
-паттерн, после которого в течение трех свечей рынок рос 2000 раз, а падал всего 200 раз. После этого
-найденные паттерны встраиваются в алгоритмы торговых роботов и успешно (либо не очень) торгуются.
-
+также по ценам не выше, чем средневзвешенное значение с момента запуска.
+
+Execution Strategy — алгоритм для покупки актива по средневзвешенной цене в большом объёме. Как
+правило, используется крупными игроками — хедж-фондами и брокерами.
+
+Спекулятивная стратегия — стандартная модель для частных трейдеров, которая стремится к достижению
+максимально выгодной цены для входа в сделку с целью получения последующей прибыли.
+
+Data Mining — это поиск новых закономерностей для новых алгоритмов. Более 75% дата-майнинга
+приходится на сбор данных до запуска тестирования.
+ Итог поиска зависит только от профессионального и глубокого подхода. Сам же поиск осуществляют различные алгоритмы по ручным настройкам. Например, найти паттерн, после которого в течение трёх свечей рынок рос 2000 раз, а падал всего 200. После этого найденные паттерны встраиваются в алгоритмы торговых роботов и успешно или не очень торгуются.
+
+
\ No newline at end of file
diff --git a/investAPI-main/src/docs/api_protocols.md b/investAPI-main/src/docs/api_protocols.md
index 4d9ccae..2a32f33 100644
--- a/investAPI-main/src/docs/api_protocols.md
+++ b/investAPI-main/src/docs/api_protocols.md
@@ -1,11 +1,12 @@
# Доступные протоколы взаимодействия
-TINKOFF INVEST API поддерживает возможность использования различных протоколов.
-О том, как начать работать с gRPC, описано на [странице](/investAPI/grpc/).
+T-Invest API поддерживает возможность использования различных протоколов.
-| Протокол | Подробнее| Endpoint |
+[Как начать работать с gRPC](/investAPI/grpc/)
+
+| Протокол | Детали| Endpoint |
|----------|----------|----------|
-| gRPC | API реализован на быстром, удобном и функциональном протоколе [gRPC](https://grpc.io/docs/) | invest-public-api.tinkoff.ru:443 — продовый сервис,sandbox-invest-public-api.tinkoff.ru:443 — сервис песочницы |
-| gRPC-web | Для поддержки web-клиентов, например браузерных JS скриптов, внедрена поддержка [gRPC-web](https://grpc.io/docs/platforms/web/basics/) | invest-public-api.tinkoff.ru:443 — продовый сервис,sandbox-invest-public-api.tinkoff.ru:443 — сервис песочницы |
-| REST API | Для клиентов, привыкших работать с REST API, реализован прокси [Swagger](https://tinkoff.github.io/investAPI/swagger-ui/). Инструкция по использованию Swagger описана на [странице](/investAPI/swagger/)| https://invest-public-api.tinkoff.ru/rest/ — продовый сервис, https://sandbox-invest-public-api.tinkoff.ru/rest/ — сервис песочницы
-| WebSocket |Внедрена поддержка Websocket протокола | wss://invest-public-api.tinkoff.ru/ws/ |
+| gRPC | API реализован на быстром, удобном и функциональном протоколе [gRPC](https://grpc.io/docs/). | invest-public-api.tinkoff.ru:443
— продовый сервис;sandbox-invest-public-api.tinkoffru:443
— песочница.
|
+| gRPC-web | Для поддержки web-клиентов, например, браузерных JS скриптов, внедрена поддержка [gRPC-web](https://grpc.io/docs/platforms/web/basics/). | invest-public-api.tinkoff.ru:443
— продовый сервис;sandbox-invest-public-api.tinkoffru:443
— песочница.
|
+| REST API | Для клиентов, привыкших работать с REST API, реализован прокси [Swagger](https://russianinvestments.github.io/investAPI/swagger-ui/).
[Инструкция по работе со Swagger](/investAPI/swagger/)| https://invest-public-api.tinkoff.ru/rest/
— продовый сервис;https://sandbox-invest-public-api.tinkoff.ru/rest/
— песочница.
+| WebSocket |Внедрена поддержка WebSocket-протокола. | `wss://invest-public-api.tinkoff.ru/ws/` |
diff --git a/investAPI-main/src/docs/async.md b/investAPI-main/src/docs/async.md
new file mode 100644
index 0000000..d2005c8
--- /dev/null
+++ b/investAPI-main/src/docs/async.md
@@ -0,0 +1,52 @@
+# Асинхронный метод выставления заявок
+
+
+С целью уменьшить latency доставки торговых поручений до биржи в T-Invest API реализован асинхронный метод выставления заявок.
+При подачи поручений асинхронным методом брокер не дожидается подтверждения от биржи об успешном статусе выставления заявки и
+присвоении ей биржевого номера. При работе с асинхронным методом есть ряд особенностей.
+
+Метод позволяет выставлять поручения параллельно, не создавая очереди заявок, что возможно при работе с PostOrder.
+Это позволяет ускорить работа алгоритма распараллелив процессы.
+
+
+
+## PostOrderAsync запрос
+
+Входные параметры асинхронного метода идентичны [PostOrder](/investAPI/orders/#postorder).
+При этом есть особенности:
+
+[Идентификатор ключа идемпотентности](/investAPI/head-orders/#_5) `order_id` является обязательным
+и должен быть передан в UUID формате любой версии.
+
+
+## PostOrderAsync ответ
+
+###В случае ошибки
+
+При выставлении асинхронного поручения на стороне брокера проводятся предварительные проверки, идентичные синхронному взаимодействию.
+В случае ошибок валидации ответ будет идентичен [PostOrder](/investAPI/orders/#postorder).
+
+###Успешное выставление заявки
+
+Если проверки пройдены и заявка передана на биржу, то вернется [ответ](/investAPI/orders/#postorderasyncresponse), где
+`order_request_id` - ключ идемпотентности, переданный в запросе в виде `order_id`.
+
+
+Важно
+В ответе метода нет биржевого идентификатора. trade_intent_id
— внутренний идентификатор брокера.
+
+
+
+Важно
+Успешный ответ не гарантирует, что заявка будет выставлена на бирже. Биржа на своей стороне может отклонить заявку.
+
+
+
+## Получить статус торгового поручения.
+
+Изменение статуса торгового поручения можно подписавшись на [Стрим заявок](/investAPI/orders_state_stream/).
+`order_request_id` в сообщениях стрима соответствует `order_request_id` в ответе PostOrderAsync, `order_id` — биржевому номеру заявки.
+Получив из стрима биржевой номер, дальнейшие статусы можно отслеживать методами [GetOrderState](/investAPI/orders/#getorderstate)
+и [GetOrder](/investAPI/orders/#getorders), а отменить методом [CancelOrder](/investAPI/orders/#cancelorder).
+
+Дополнительно в методы GetOrderState и CancelOrder добавлена поддержка работы по ключу идемпотентности `order_request_id`.
\ No newline at end of file
diff --git a/investAPI-main/src/docs/cases.md b/investAPI-main/src/docs/cases.md
index 8017447..281b12d 100644
--- a/investAPI-main/src/docs/cases.md
+++ b/investAPI-main/src/docs/cases.md
@@ -1,45 +1,69 @@
-### Наиболее популярные кейсы
+Чтобы понимать алгоритм выполнения основных задач, ознакомьтесь с доступными SDK в разделе [**Языки программирования**](https://russianinvestments.github.io/investAPI/faq_python/).
-Для понимания алгоритма выполнения основных задач ознакомьтесь с доступными SDK в [разделе](https://tinkoff.github.io/investAPI/faq_python/) "Языки программирования".
+Также рекомендуем прочитать [статью о создании торгового робота](https://habr.com/ru/companies/tinkoff/articles/709166/) — в ней описаны популярные сценарии для пользователей T-Invest API.
-Рекомендуется также прочитать [статью о создании торгового робота](https://habr.com/ru/companies/tinkoff/articles/709166/).
+## Создать заявку на покупку или продажу инструмента
-В статье описаны популярные сценарии для пользователей Tinkoff Invest API.
+Когда стратегия даёт команду продавать или покупать, нужно создать заявку:
-#### Как создать заявку на покупку или продажу инструмента
+1. Проверьте, существует ли позиция по бумаге через метод [FindInstrument](/investAPI/instruments/#findinstrument).
+2. Проверьте статус торгового инструмента через метод [GetTradingStatus](/investAPI/marketdata/#gettradingstatus).
+3. Получите последние цены на инструмент через метод [GetLastPrice](/investAPI/marketdata#getlastprices).
+4. Получите параметр `min_price_increment` для расчёта цены, которую можно выставить, через метод [GetInstrumentBy](/investAPI/instruments/#getinstrumentby).
+5. Проверьте свой счёт в аккаунте.
+6. Выставите заявку через метод [PostOrder](/investAPI/orders#postorder) и сохраните полученный параметр `order_id`.
+7. Получите список активных заявок через метод [GetOrders](/investAPI/orders#getorders) и по параметру `order_id` проверьте, есть ли заявка в списке активных.
-В случае, когда стратегия дает команду продавать или покупать, необходимо создать заявку:
+Информацию об исполненной заявке можно получить через метод [GetOrderState](/investAPI/orders#getorderstate) по параметру `order_id`.
-1. Проверьте существует ли позиция по бумаге с помощью метода [FindInstrument](/investAPI/instruments/#findinstrument).
-2. Проверьте статус торгового инструмента с помощью метода [GetTradingStatus](/investAPI/marketdata/#gettradingstatus).
-3. Получите последние цены на инструмент с помощью метода [GetLastPrice](/investAPI/marketdata#getlastprices).
-4. Получите параметр `min_price_increment` для расчета цены, которую возможно выставить, с помощью метода [GetInstrumentBy](/src/docs/instruments.md/#getinstrumentby).
-5. Проверьте свой счет на аккаунте.
-6. Выставите заявку с помощью метода [PostOrder](/investAPI/orders#postorder) и сохраните полученный параметр `order_id`.
-7. Получите список активных заявок с помощью метода [GetOrders](/investAPI/orders#getorders) и проверьте есть ли заявка в списке активных по параметру `order_id`.
+## Получить информации об аккаунте
-Информацию об исполненной заявке возможно получить с помощью метода [GetOrderState](/investAPI/orders#getorderstate) по параметру `order_id`.
-
-
-### Начало работы и получение информации об аккаунте
-
-Для получения информации об аккаунте:
+Чтобы получить информацию об аккаунте:
1. Вызовите метод [GetAccounts](/investAPI/users#getaccounts) для получения списка счетов, их статусов и типов.
-2. Вызовите метод [GetInfo](/investAPI/users#getinfo), который позволяет:
- * определить наличие у пользователя статуса квалифицированного инвестора, премиального клиента;
+2. Вызовите метод [GetInfo](/investAPI/users#getinfo). С помощью него можно:
+ * определить наличие у пользователя статуса квалифицированного инвестора и премиального клиента;
* получить список типов инструментов, к которым пользователь имеет доступ по итогам тестирования.
- Эта информация помогает определить ограничения в торговле.
-3. Получите доступные лимиты с помощью метода [GetInfo](/investAPI/users#getaccounts).
-4. Периодически обновляйте информацию о маржинальных показателях счета с помощью метода [GetMarginAttributes](/investAPI/users#getmarginattributes) по параметру `accountId` для торговли на срочном рынке.
+ Это помогает определить ограничения в торговле.
+
+3. Получите доступные лимиты через метод [GetInfo](/investAPI/users#getaccounts).
+4. Для торговли на срочном рынке периодически обновляйте информацию о маржинальных показателях счёта через метод [GetMarginAttributes](/investAPI/users#getmarginattributes) по параметру `accountId`.
-### Как найти базовый актив фьючерса
+## Найти базовый актив фьючерса
-Для поиска базового актива фьючерса:
+Чтобы найти базовый актив фьючерса:
1. Вызовите один из методов: [GetFutureBy](/investAPI/instruments/#futureby) или [GetFutures](/investAPI/instruments/#futures).
-2. Сохраните значение параметра `basic_asset_position_uid` (уникальный идентификатор позиции основного инструмента).
+2. Сохраните значение параметра `basic_asset_position_uid` — это уникальный идентификатор позиции основного инструмента.
+
+>**Примечание**
+> Для поиска базового актива фьючерса можно также использовать метод [FindInstrument](/investAPI/instruments/#findinstrument) — в `query` передайте значение параметра `basic_asset_position_uid`, который возвращается в методах [GetFutureBy](/investAPI/instruments/#futureby) и [GetFutures](/investAPI/instruments/#futures).
+
+
+## Ошибки с сертификатом
+
+При работе с API могут возникнуть ошибки, связанные с сертификатом:
+
+* `failed to connect to all addresses`;
+* `handshake failed`;
+* `certificate verify failed`;
+
+Часто эта проблема возникает из-за недействительного сертификата, который используется в приложении.
+
+Выпустите новый сертификат — например, через команду `openssl s_client -connect invest-public-api.tinkoff.ru:443`, и импортируйте его.
+
+
+### Загрузить сертификат вручную
+
+Сертификат можно загрузить вручную. Пример шагов для Windows и Google Chrome:
+
+1. Зайдите на [сайт Т-Банк](https://www.tbank.ru/).
+2. В адресной строке нажмите и выберите **Безопасное подключение**.
+3. Нажмите **Показать сертификат**.
+4. В открывшемся окне выберите вкладку **Подробнее**.
+5. Нажмите **Экспорт** и сохраните сертификат на компьютер.
+6. Откройте папку с сохранённым файлом, нажмите по нему правой кнопкой мыши и выберите **Установить сертификат**.
+7. Установите сертификат через мастера импорта сертификатов, выбирая ответы по умолчанию.
->**Примечание**
-> Для поиска базового актива фьючерса можно также использовать метод [FindInstrument](/investAPI/instruments/#findinstrument). Для этого достаточно передать в query значение параметра `basic_asset_position_uid`, возвращаемое методами GetFutureBy и GetFutures.
+![Загрузка сертификата](/investAPI/img/cert.png "Загрузка сертификата")
\ No newline at end of file
diff --git a/investAPI-main/src/docs/common.md b/investAPI-main/src/docs/common.md
index 15b8ef7..13253eb 100644
--- a/investAPI-main/src/docs/common.md
+++ b/investAPI-main/src/docs/common.md
@@ -3,28 +3,6 @@
-#### SecurityTradingStatus
-
-| Name | Number | Description |
-| ---- | ------ | ----------- |
-| SECURITY_TRADING_STATUS_UNSPECIFIED | 0 | Торговый статус не определён |
-| SECURITY_TRADING_STATUS_NOT_AVAILABLE_FOR_TRADING | 1 | Недоступен для торгов |
-| SECURITY_TRADING_STATUS_OPENING_PERIOD | 2 | Период открытия торгов |
-| SECURITY_TRADING_STATUS_CLOSING_PERIOD | 3 | Период закрытия торгов |
-| SECURITY_TRADING_STATUS_BREAK_IN_TRADING | 4 | Перерыв в торговле |
-| SECURITY_TRADING_STATUS_NORMAL_TRADING | 5 | Нормальная торговля |
-| SECURITY_TRADING_STATUS_CLOSING_AUCTION | 6 | Аукцион закрытия |
-| SECURITY_TRADING_STATUS_DARK_POOL_AUCTION | 7 | Аукцион крупных пакетов |
-| SECURITY_TRADING_STATUS_DISCRETE_AUCTION | 8 | Дискретный аукцион |
-| SECURITY_TRADING_STATUS_OPENING_AUCTION_PERIOD | 9 | Аукцион открытия |
-| SECURITY_TRADING_STATUS_TRADING_AT_CLOSING_AUCTION_PRICE | 10 | Период торгов по цене аукциона закрытия |
-| SECURITY_TRADING_STATUS_SESSION_ASSIGNED | 11 | Сессия назначена |
-| SECURITY_TRADING_STATUS_SESSION_CLOSE | 12 | Сессия закрыта |
-| SECURITY_TRADING_STATUS_SESSION_OPEN | 13 | Сессия открыта |
-| SECURITY_TRADING_STATUS_DEALER_NORMAL_TRADING | 14 |Доступна торговля в режиме внутренней ликвидности брокера |
-| SECURITY_TRADING_STATUS_DEALER_BREAK_IN_TRADING | 15 |Перерыв торговли в режиме внутренней ликвидности брокера |
-| SECURITY_TRADING_STATUS_DEALER_NOT_AVAILABLE_FOR_TRADING | 16 |Недоступна торговля в режиме внутренней ликвидности брокера |
-
### Нестандартные типы данных
#### MoneyValue
diff --git a/investAPI-main/src/docs/contracts/common.proto b/investAPI-main/src/docs/contracts/common.proto
index 4f5d1a3..120b6db 100644
--- a/investAPI-main/src/docs/contracts/common.proto
+++ b/investAPI-main/src/docs/contracts/common.proto
@@ -22,55 +22,112 @@ enum InstrumentType {
INSTRUMENT_TYPE_SP = 6; //Структурная нота.
INSTRUMENT_TYPE_OPTION = 7; //Опцион.
INSTRUMENT_TYPE_CLEARING_CERTIFICATE = 8; //Clearing certificate.
+ INSTRUMENT_TYPE_INDEX = 9; //Индекс.
+ INSTRUMENT_TYPE_COMMODITY = 10; //Товар.
}
-//Денежная сумма в определенной валюте
+//Статус запрашиваемых инструментов.
+enum InstrumentStatus {
+ INSTRUMENT_STATUS_UNSPECIFIED = 0; //Значение не определено.
+ INSTRUMENT_STATUS_BASE = 1; //Базовый список инструментов (по умолчанию). Инструменты, доступные для торговли через T-Invest API. Cейчас списки бумаг, которые доступны из API и других интерфейсах совпадают — кроме внебиржевых бумаг. Но в будущем возможны ситуации, когда списки инструментов будут отличаться.
+ INSTRUMENT_STATUS_ALL = 2; //Список всех инструментов.
+}
+
+//Денежная сумма в определённой валюте.
message MoneyValue {
- // строковый ISO-код валюты
+ // Строковый ISO-код валюты.
string currency = 1;
- // целая часть суммы, может быть отрицательным числом
+ // Целая часть суммы, может быть отрицательным числом.
int64 units = 2;
- // дробная часть суммы, может быть отрицательным числом
+ // Дробная часть суммы, может быть отрицательным числом.
int32 nano = 3;
}
-//Котировка — денежная сумма без указания валюты
+//Котировка — денежная сумма без указания валюты.
message Quotation {
- // целая часть суммы, может быть отрицательным числом
+ // Целая часть суммы, может быть отрицательным числом.
int64 units = 1;
- // дробная часть суммы, может быть отрицательным числом
+ // Дробная часть суммы, может быть отрицательным числом.
int32 nano = 2;
}
//Режим торгов инструмента
enum SecurityTradingStatus {
- SECURITY_TRADING_STATUS_UNSPECIFIED = 0; //Торговый статус не определён
- SECURITY_TRADING_STATUS_NOT_AVAILABLE_FOR_TRADING = 1; //Недоступен для торгов
- SECURITY_TRADING_STATUS_OPENING_PERIOD = 2; //Период открытия торгов
- SECURITY_TRADING_STATUS_CLOSING_PERIOD = 3; //Период закрытия торгов
- SECURITY_TRADING_STATUS_BREAK_IN_TRADING = 4; //Перерыв в торговле
- SECURITY_TRADING_STATUS_NORMAL_TRADING = 5; //Нормальная торговля
- SECURITY_TRADING_STATUS_CLOSING_AUCTION = 6; //Аукцион закрытия
- SECURITY_TRADING_STATUS_DARK_POOL_AUCTION = 7; //Аукцион крупных пакетов
- SECURITY_TRADING_STATUS_DISCRETE_AUCTION = 8; //Дискретный аукцион
- SECURITY_TRADING_STATUS_OPENING_AUCTION_PERIOD = 9; //Аукцион открытия
- SECURITY_TRADING_STATUS_TRADING_AT_CLOSING_AUCTION_PRICE = 10; //Период торгов по цене аукциона закрытия
- SECURITY_TRADING_STATUS_SESSION_ASSIGNED = 11; //Сессия назначена
- SECURITY_TRADING_STATUS_SESSION_CLOSE = 12; //Сессия закрыта
- SECURITY_TRADING_STATUS_SESSION_OPEN = 13; //Сессия открыта
- SECURITY_TRADING_STATUS_DEALER_NORMAL_TRADING = 14; //Доступна торговля в режиме внутренней ликвидности брокера
- SECURITY_TRADING_STATUS_DEALER_BREAK_IN_TRADING = 15; //Перерыв торговли в режиме внутренней ликвидности брокера
- SECURITY_TRADING_STATUS_DEALER_NOT_AVAILABLE_FOR_TRADING = 16; //Недоступна торговля в режиме внутренней ликвидности брокера
+ SECURITY_TRADING_STATUS_UNSPECIFIED = 0; //Торговый статус не определён.
+ SECURITY_TRADING_STATUS_NOT_AVAILABLE_FOR_TRADING = 1; //Недоступен для торгов.
+ SECURITY_TRADING_STATUS_OPENING_PERIOD = 2; //Период открытия торгов.
+ SECURITY_TRADING_STATUS_CLOSING_PERIOD = 3; //Период закрытия торгов.
+ SECURITY_TRADING_STATUS_BREAK_IN_TRADING = 4; //Перерыв в торговле.
+ SECURITY_TRADING_STATUS_NORMAL_TRADING = 5; //Нормальная торговля.
+ SECURITY_TRADING_STATUS_CLOSING_AUCTION = 6; //Аукцион закрытия.
+ SECURITY_TRADING_STATUS_DARK_POOL_AUCTION = 7; //Аукцион крупных пакетов.
+ SECURITY_TRADING_STATUS_DISCRETE_AUCTION = 8; //Дискретный аукцион.
+ SECURITY_TRADING_STATUS_OPENING_AUCTION_PERIOD = 9; //Аукцион открытия.
+ SECURITY_TRADING_STATUS_TRADING_AT_CLOSING_AUCTION_PRICE = 10; //Период торгов по цене аукциона закрытия.
+ SECURITY_TRADING_STATUS_SESSION_ASSIGNED = 11; //Сессия назначена.
+ SECURITY_TRADING_STATUS_SESSION_CLOSE = 12; //Сессия закрыта.
+ SECURITY_TRADING_STATUS_SESSION_OPEN = 13; //Сессия открыта.
+ SECURITY_TRADING_STATUS_DEALER_NORMAL_TRADING = 14; //Доступна торговля в режиме внутренней ликвидности брокера.
+ SECURITY_TRADING_STATUS_DEALER_BREAK_IN_TRADING = 15; //Перерыв торговли в режиме внутренней ликвидности брокера.
+ SECURITY_TRADING_STATUS_DEALER_NOT_AVAILABLE_FOR_TRADING = 16; //Недоступна торговля в режиме внутренней ликвидности брокера.
+}
+
+message PingRequest {
+ optional google.protobuf.Timestamp time = 1; //Время формирования запроса
+}
+
+message PingDelaySettings {
+ optional int32 ping_delay_ms = 15; //Задержка пинг сообщений milliseconds 5000-180000, default 120000
}
//Проверка активности стрима.
message Ping {
+ google.protobuf.Timestamp time = 1; //Время проверки.
+ string stream_id = 2; //Идентификатор соединения.
+ optional google.protobuf.Timestamp ping_request_time = 4; //Время формирования запроса
+}
+
+//Тип цены.
+enum PriceType {
+ PRICE_TYPE_UNSPECIFIED = 0; //Значение не определено.
+ PRICE_TYPE_POINT = 1; //Цена в пунктах (только для фьючерсов и облигаций).
+ PRICE_TYPE_CURRENCY = 2; //Цена в валюте расчётов по инструменту.
+}
+
+message Page {
+ int32 limit = 1; //Максимальное число возвращаемых записей.
+ int32 page_number = 2; //Порядковый номер страницы, начиная с 0.
+}
+
+message PageResponse {
+ int32 limit = 1; //Максимальное число возвращаемых записей.
+ int32 page_number = 2; //Порядковый номер страницы, начиная с 0.
+ int32 total_count = 3; //Общее количество записей.
+}
+
+message ResponseMetadata {
+ string tracking_id = 42; //Идентификатор трекинга.
+ google.protobuf.Timestamp server_time = 43; //Серверное время.
+}
+
+message BrandData {
+ string logo_name = 1; // Логотип инструмента. Имя файла для получения логотипа.
+ string logo_base_color = 2; // Цвет бренда.
+ string text_color = 3; // Цвет текста для цвета логотипа бренда.
+}
+
+enum ResultSubscriptionStatus {
+ RESULT_SUBSCRIPTION_STATUS_UNSPECIFIED = 0; //Статус подписки не определен.
+ RESULT_SUBSCRIPTION_STATUS_OK = 1; //Подписка успешно установлена.
+ RESULT_SUBSCRIPTION_STATUS_ERROR = 13; //Ошибка подписки
+}
- //Время проверки.
- google.protobuf.Timestamp time = 1;
+message ErrorDetail {
+ string code = 1; //Код ошибки.
+ string message = 3; //Описание ошибки.
}
diff --git a/investAPI-main/src/docs/contracts/google/api/field_behavior.proto b/investAPI-main/src/docs/contracts/google/api/field_behavior.proto
new file mode 100644
index 0000000..1a3a2f2
--- /dev/null
+++ b/investAPI-main/src/docs/contracts/google/api/field_behavior.proto
@@ -0,0 +1,90 @@
+// Copyright 2023 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.api;
+
+import "google/protobuf/descriptor.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations";
+option java_multiple_files = true;
+option java_outer_classname = "FieldBehaviorProto";
+option java_package = "com.google.api";
+option objc_class_prefix = "GAPI";
+
+extend google.protobuf.FieldOptions {
+ // A designation of a specific field behavior (required, output only, etc.)
+ // in protobuf messages.
+ //
+ // Examples:
+ //
+ // string name = 1 [(google.api.field_behavior) = REQUIRED];
+ // State state = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
+ // google.protobuf.Duration ttl = 1
+ // [(google.api.field_behavior) = INPUT_ONLY];
+ // google.protobuf.Timestamp expire_time = 1
+ // [(google.api.field_behavior) = OUTPUT_ONLY,
+ // (google.api.field_behavior) = IMMUTABLE];
+ repeated google.api.FieldBehavior field_behavior = 1052;
+}
+
+// An indicator of the behavior of a given field (for example, that a field
+// is required in requests, or given as output but ignored as input).
+// This **does not** change the behavior in protocol buffers itself; it only
+// denotes the behavior and may affect how API tooling handles the field.
+//
+// Note: This enum **may** receive new values in the future.
+enum FieldBehavior {
+ // Conventional default for enums. Do not use this.
+ FIELD_BEHAVIOR_UNSPECIFIED = 0;
+
+ // Specifically denotes a field as optional.
+ // While all fields in protocol buffers are optional, this may be specified
+ // for emphasis if appropriate.
+ OPTIONAL = 1;
+
+ // Denotes a field as required.
+ // This indicates that the field **must** be provided as part of the request,
+ // and failure to do so will cause an error (usually `INVALID_ARGUMENT`).
+ REQUIRED = 2;
+
+ // Denotes a field as output only.
+ // This indicates that the field is provided in responses, but including the
+ // field in a request does nothing (the server *must* ignore it and
+ // *must not* throw an error as a result of the field's presence).
+ OUTPUT_ONLY = 3;
+
+ // Denotes a field as input only.
+ // This indicates that the field is provided in requests, and the
+ // corresponding field is not included in output.
+ INPUT_ONLY = 4;
+
+ // Denotes a field as immutable.
+ // This indicates that the field may be set once in a request to create a
+ // resource, but may not be changed thereafter.
+ IMMUTABLE = 5;
+
+ // Denotes that a (repeated) field is an unordered list.
+ // This indicates that the service may provide the elements of the list
+ // in any arbitrary order, rather than the order the user originally
+ // provided. Additionally, the list's order may or may not be stable.
+ UNORDERED_LIST = 6;
+
+ // Denotes that this field returns a non-empty default value if not set.
+ // This indicates that if the user provides the empty value in a request,
+ // a non-empty value will be returned. The user will not be aware of what
+ // non-empty value to expect.
+ NON_EMPTY_DEFAULT = 7;
+}
diff --git a/investAPI-main/src/docs/contracts/instruments.proto b/investAPI-main/src/docs/contracts/instruments.proto
index 3b3240d..009b4b2 100644
--- a/investAPI-main/src/docs/contracts/instruments.proto
+++ b/investAPI-main/src/docs/contracts/instruments.proto
@@ -11,101 +11,119 @@ option php_namespace = "Tinkoff\\Invest\\V1";
import "google/protobuf/timestamp.proto";
import "common.proto";
+import "google/api/field_behavior.proto";
+service InstrumentsService {/*Методы сервиса предназначены для получения:1. Информации об инструментах.2.
+ Расписания торговых сессий.3. Календаря выплат купонов по облигациям.4.
+ Размера гарантийного обеспечения по фьючерсам.5. Дивидендов по ценной бумаге.*/
-service InstrumentsService {/*Сервис предназначен для получения:**1**. информации об инструментах;**2**.
- расписания торговых сессий;**3**. календаря выплат купонов по облигациям;**4**.
- размера гарантийного обеспечения по фьючерсам;**5**. дивидендов по ценной бумаге.*/
-
- //Метод получения расписания торгов торговых площадок.
+ //Получить расписания торгов торговых площадок.
rpc TradingSchedules (TradingSchedulesRequest) returns (TradingSchedulesResponse);
- //Метод получения облигации по её идентификатору.
+ //Получить облигации по её идентификатору.
rpc BondBy (InstrumentRequest) returns (BondResponse);
- //Метод получения списка облигаций.
+ //Получить список облигаций.
rpc Bonds (InstrumentsRequest) returns (BondsResponse);
- //Метод получения графика выплат купонов по облигации.
+ //Получить график выплат купонов по облигации.
rpc GetBondCoupons (GetBondCouponsRequest) returns (GetBondCouponsResponse);
- //Метод получения валюты по её идентификатору.
+ //Получить события по облигации
+ rpc GetBondEvents (GetBondEventsRequest) returns (GetBondEventsResponse);
+
+ //Получить валюту по её идентификатору.
rpc CurrencyBy (InstrumentRequest) returns (CurrencyResponse);
- //Метод получения списка валют.
+ //Получить список валют.
rpc Currencies (InstrumentsRequest) returns (CurrenciesResponse);
- //Метод получения инвестиционного фонда по его идентификатору.
+ //Получить инвестиционный фонд по его идентификатору.
rpc EtfBy (InstrumentRequest) returns (EtfResponse);
- //Метод получения списка инвестиционных фондов.
+ //Получить список инвестиционных фондов.
rpc Etfs (InstrumentsRequest) returns (EtfsResponse);
- //Метод получения фьючерса по его идентификатору.
+ //Получить фьючерс по его идентификатору.
rpc FutureBy (InstrumentRequest) returns (FutureResponse);
- //Метод получения списка фьючерсов.
+ //Получить список фьючерсов.
rpc Futures (InstrumentsRequest) returns (FuturesResponse);
- //Метод получения опциона по его идентификатору.
+ //Получить опцион по его идентификатору.
rpc OptionBy (InstrumentRequest) returns (OptionResponse);
- //Deprecated Метод получения списка опционов.
+ //Deprecated Получить списка опционов.
rpc Options (InstrumentsRequest) returns (OptionsResponse) {
option deprecated = true;
};
- //Метод получения списка опционов.
+ //Получить список опционов.
rpc OptionsBy (FilterOptionsRequest) returns (OptionsResponse);
- //Метод получения акции по её идентификатору.
+ //Получить акцию по её идентификатору.
rpc ShareBy (InstrumentRequest) returns (ShareResponse);
- //Метод получения списка акций.
+ //Получить список акций.
rpc Shares (InstrumentsRequest) returns (SharesResponse);
- //Метод получения накопленного купонного дохода по облигации.
+ //Получить индикативные инструменты — индексы, товары и другие.
+ rpc Indicatives(IndicativesRequest) returns (IndicativesResponse);
+
+ //Получить накопленный купонный доход по облигации.
rpc GetAccruedInterests (GetAccruedInterestsRequest) returns (GetAccruedInterestsResponse);
- //Метод получения размера гарантийного обеспечения по фьючерсам.
+ //Получить размера гарантийного обеспечения по фьючерсам.
rpc GetFuturesMargin (GetFuturesMarginRequest) returns (GetFuturesMarginResponse);
- //Метод получения основной информации об инструменте.
+ //Получить основную информацию об инструменте.
rpc GetInstrumentBy (InstrumentRequest) returns (InstrumentResponse);
- //Метод для получения событий выплаты дивидендов по инструменту.
+ //Получить события выплаты дивидендов по инструменту.
rpc GetDividends (GetDividendsRequest) returns (GetDividendsResponse);
- //Метод получения актива по его идентификатору.
+ //Получить актив по его идентификатору.
rpc GetAssetBy (AssetRequest) returns (AssetResponse);
- //Метод получения списка активов. Метод работает для всех инструментов, за исключением срочных - опционов и фьючерсов.
+ //Получить список активов. Метод работает для всех инструментов, кроме срочных — фьючерсов и опционов.
rpc GetAssets (AssetsRequest) returns (AssetsResponse);
- //Метод получения списка избранных инструментов.
+ //Получить список избранных инструментов.
rpc GetFavorites (GetFavoritesRequest) returns (GetFavoritesResponse);
- //Метод редактирования списка избранных инструментов.
+ //Отредактировать список избранных инструментов.
rpc EditFavorites (EditFavoritesRequest) returns (EditFavoritesResponse);
- //Метод получения списка стран.
+ //Получить список стран.
rpc GetCountries (GetCountriesRequest) returns (GetCountriesResponse);
- //Метод поиска инструмента.
+ //Найти инструмент.
rpc FindInstrument (FindInstrumentRequest) returns (FindInstrumentResponse);
- //Метод получения списка брендов.
+ //Получить список брендов.
rpc GetBrands(GetBrandsRequest) returns (GetBrandsResponse);
- //Метод получения бренда по его идентификатору.
+ //Получить бренд по его идентификатору.
rpc GetBrandBy(GetBrandRequest) returns (Brand);
+
+ //Получить фундаментальные показатели по активу.
+ rpc GetAssetFundamentals(GetAssetFundamentalsRequest) returns (GetAssetFundamentalsResponse);
+
+ //Получить расписания выхода отчётностей эмитентов.
+ rpc GetAssetReports(GetAssetReportsRequest) returns (GetAssetReportsResponse);
+
+ //Получить мнения аналитиков по инструменту.
+ rpc GetConsensusForecasts(GetConsensusForecastsRequest) returns (GetConsensusForecastsResponse);
+
+ //Получить прогнозов инвестдомов по инструменту.
+ rpc GetForecastBy(GetForecastRequest) returns (GetForecastResponse);
}
//Запрос расписания торгов.
message TradingSchedulesRequest {
- string exchange = 1; //Наименование биржи или расчетного календаря. Если не передаётся, возвращается информация по всем доступным торговым площадкам.
- google.protobuf.Timestamp from = 2; //Начало периода по часовому поясу UTC.
- google.protobuf.Timestamp to = 3; //Окончание периода по часовому поясу UTC.
+ optional string exchange = 1; //Наименование биржи или расчетного календаря. Если не передаётся, возвращается информация по всем доступным торговым площадкам.
+ optional google.protobuf.Timestamp from = 2; //Начало периода по UTC.
+ optional google.protobuf.Timestamp to = 3; //Окончание периода по UTC.
}
//Список торговых площадок.
@@ -124,36 +142,38 @@ message TradingDay {
reserved 5, 6;
google.protobuf.Timestamp date = 1; // Дата.
bool is_trading_day = 2; // Признак торгового дня на бирже.
- google.protobuf.Timestamp start_time = 3; // Время начала торгов по часовому поясу UTC.
- google.protobuf.Timestamp end_time = 4; // Время окончания торгов по часовому поясу UTC.
- google.protobuf.Timestamp opening_auction_start_time = 7; // Время начала аукциона открытия в часовом поясе UTC.
- google.protobuf.Timestamp closing_auction_end_time = 8; // Время окончания аукциона закрытия в часовом поясе UTC.
- google.protobuf.Timestamp evening_opening_auction_start_time = 9; // Время начала аукциона открытия вечерней сессии в часовом поясе UTC.
- google.protobuf.Timestamp evening_start_time = 10; // Время начала вечерней сессии в часовом поясе UTC.
- google.protobuf.Timestamp evening_end_time = 11; // Время окончания вечерней сессии в часовом поясе UTC.
- google.protobuf.Timestamp clearing_start_time = 12; // Время начала основного клиринга в часовом поясе UTC.
- google.protobuf.Timestamp clearing_end_time = 13; // Время окончания основного клиринга в часовом поясе UTC.
- google.protobuf.Timestamp premarket_start_time = 14; // Время начала премаркета в часовом поясе UTC.
- google.protobuf.Timestamp premarket_end_time = 15; // Время окончания премаркета в часовом поясе UTC.
- google.protobuf.Timestamp closing_auction_start_time = 16; // Время начала аукциона закрытия в часовом поясе UTC.
- google.protobuf.Timestamp opening_auction_end_time = 17; // Время окончания аукциона открытия в часовом поясе UTC.
+ google.protobuf.Timestamp start_time = 3; // Время начала торгов по UTC.
+ google.protobuf.Timestamp end_time = 4; // Время окончания торгов по UTC.
+ google.protobuf.Timestamp opening_auction_start_time = 7; // Время начала аукциона открытия по UTC.
+ google.protobuf.Timestamp closing_auction_end_time = 8; // Время окончания аукциона закрытия по UTC.
+ google.protobuf.Timestamp evening_opening_auction_start_time = 9; // Время начала аукциона открытия вечерней сессии по UTC.
+ google.protobuf.Timestamp evening_start_time = 10; // Время начала вечерней сессии по UTC.
+ google.protobuf.Timestamp evening_end_time = 11; // Время окончания вечерней сессии по UTC.
+ google.protobuf.Timestamp clearing_start_time = 12; // Время начала основного клиринга по UTC.
+ google.protobuf.Timestamp clearing_end_time = 13; // Время окончания основного клиринга по UTC.
+ google.protobuf.Timestamp premarket_start_time = 14; // Время начала премаркета по UTC.
+ google.protobuf.Timestamp premarket_end_time = 15; // Время окончания премаркета по UTC.
+ google.protobuf.Timestamp closing_auction_start_time = 16; // Время начала аукциона закрытия по UTC.
+ google.protobuf.Timestamp opening_auction_end_time = 17; // Время окончания аукциона открытия по UTC.
+ repeated TradingInterval intervals = 18; // Торговые интервалы.
}
//Запрос получения инструмента по идентификатору.
message InstrumentRequest {
- InstrumentIdType id_type = 1; // Тип идентификатора инструмента. Возможные значения: figi, ticker. Подробнее об идентификации инструментов: [Идентификация инструментов](https://tinkoff.github.io/investAPI/faq_identification/)
- string class_code = 2; // Идентификатор class_code. Обязателен при id_type = ticker.
- string id = 3; // Идентификатор запрашиваемого инструмента.
+ InstrumentIdType id_type = 1 [(google.api.field_behavior) = REQUIRED]; // Тип идентификатора инструмента. Возможные значения — `figi`, `ticker`. [Подробнее об идентификации инструментов](https://russianinvestments.github.io/investAPI/faq_identification/).
+ optional string class_code = 2; // Идентификатор `class_code`. Обязательный, если `id_type = ticker`.
+ string id = 3 [(google.api.field_behavior) = REQUIRED]; // Идентификатор запрашиваемого инструмента.
}
//Запрос получения инструментов.
message InstrumentsRequest {
- InstrumentStatus instrument_status = 1; //Статус запрашиваемых инструментов. Возможные значения: [InstrumentStatus](#instrumentstatus)
+ optional InstrumentStatus instrument_status = 1; //Статус запрашиваемых инструментов. [Возможные значения](#instrumentstatus).
+ optional InstrumentExchangeType instrument_exchange = 2; // Тип площадки торговли. [Возможные значения](#instrumentexchangetype).
}
-//Параметры фильтрации опционов
+//Параметры фильтрации опционов.
message FilterOptionsRequest {
- string basic_asset_uid = 1; //Идентификатор базового актива опциона. Обязательный параметр.
- string basic_asset_position_uid = 2; //Идентификатор позиции базового актива опциона
+ optional string basic_asset_uid = 1; //Идентификатор базового актива опциона. Обязательный параметр.
+ optional string basic_asset_position_uid = 2; //Идентификатор позиции базового актива опциона.
}
//Информация об облигации.
@@ -168,9 +188,10 @@ message BondsResponse {
//Запрос купонов по облигации.
message GetBondCouponsRequest {
- string figi = 1; //Figi-идентификатор инструмента.
- google.protobuf.Timestamp from = 2; //Начало запрашиваемого периода в часовом поясе UTC. Фильтрация по coupon_date (дата выплаты купона)
- google.protobuf.Timestamp to = 3; //Окончание запрашиваемого периода в часовом поясе UTC. Фильтрация по coupon_date (дата выплаты купона)
+ string figi = 1 [deprecated = true]; //FIGI-идентификатор инструмента.
+ optional google.protobuf.Timestamp from = 2; //Начало запрашиваемого периода по UTC. Фильтрация по `coupon_date` — дата выплаты купона.
+ optional google.protobuf.Timestamp to = 3; //Окончание запрашиваемого периода по UTC. Фильтрация по `coupon_date` — дата выплаты купона.
+ string instrument_id = 4 [(google.api.field_behavior) = REQUIRED]; //Идентификатор инструмента — `figi` или `instrument_uid`.
}
//Купоны по облигации.
@@ -178,12 +199,58 @@ message GetBondCouponsResponse {
repeated Coupon events = 1;
}
+//События по облигации.
+message GetBondEventsRequest {
+ optional google.protobuf.Timestamp from = 2; //Начало запрашиваемого периода по UTC.
+ optional google.protobuf.Timestamp to = 3; //Окончание запрашиваемого периода по UTC.
+ string instrument_id = 4 [(google.api.field_behavior) = REQUIRED]; //Идентификатор инструмента — `figi` или `instrument_uid`.
+ EventType type = 5; //Тип события
+
+ enum EventType {
+ EVENT_TYPE_UNSPECIFIED = 0; //Неопределённое значение.
+ EVENT_TYPE_CPN = 1; // Купон.
+ EVENT_TYPE_CALL = 2; // Опцион (оферта).
+ EVENT_TYPE_MTY = 3;// Погашение.
+ EVENT_TYPE_CONV = 4; // Конвертация.
+ }
+}
+
+//Объект передачи информации о событии облигации.
+message GetBondEventsResponse {
+ repeated BondEvent events = 1;
+ message BondEvent {
+ string instrument_id = 2; // Идентификатор инструмента.
+ int32 event_number = 3; // Номер события для данного типа события.
+ google.protobuf.Timestamp event_date = 4; // Дата события.
+ GetBondEventsRequest.EventType event_type = 5; // Тип события.
+ Quotation event_total_vol = 6; // Полное количество бумаг, задействованных в событии.
+ google.protobuf.Timestamp fix_date = 7; // Дата фиксации владельцев для участия в событии.
+ google.protobuf.Timestamp rate_date = 8; // Дата определения даты или факта события.
+ google.protobuf.Timestamp default_date = 9; // Дата дефолта, если применимо.
+ google.protobuf.Timestamp real_pay_date = 10; // Дата реального исполнения обязательства.
+ google.protobuf.Timestamp pay_date = 11; // Дата выплаты.
+ MoneyValue pay_one_bond = 12; // Выплата на одну облигацию.
+ MoneyValue money_flow_val = 13; // Выплаты на все бумаги, задействованные в событии.
+ string execution = 14; // Признак исполнения.
+ string operation_type = 15; // Тип операции.
+ Quotation value = 16; // Стоимость операции — ставка купона, доля номинала, цена выкупа или коэффициент конвертации.
+ string note = 17; // Примечание.
+ string convert_to_fin_tool_id = 18; // ID выпуска бумаг, в который произведена конвертация (для конвертаций).
+ google.protobuf.Timestamp coupon_start_date = 19; // Начало купонного периода.
+ google.protobuf.Timestamp coupon_end_date = 20; // Окончание купонного периода.
+ int32 coupon_period = 21; // Купонный период.
+ Quotation coupon_interest_rate = 22; // Ставка купона, процентов годовых.
+ }
+}
+
+
+
//Объект передачи информации о купоне облигации.
message Coupon {
- string figi = 1; //Figi-идентификатор инструмента.
+ string figi = 1; //FIGI-идентификатор инструмента.
google.protobuf.Timestamp coupon_date = 2; //Дата выплаты купона.
int64 coupon_number = 3; //Номер купона.
- google.protobuf.Timestamp fix_date = 4; //(Опционально) Дата фиксации реестра для выплаты купона.
+ google.protobuf.Timestamp fix_date = 4; //Дата фиксации реестра для выплаты купона — опционально.
MoneyValue pay_one_bond = 5; //Выплата на одну облигацию.
CouponType coupon_type = 6; //Тип купона.
google.protobuf.Timestamp coupon_start_date = 7; //Начало купонного периода.
@@ -193,14 +260,14 @@ message Coupon {
//Тип купонов.
enum CouponType {
- COUPON_TYPE_UNSPECIFIED = 0; //Неопределенное значение
- COUPON_TYPE_CONSTANT = 1; //Постоянный
- COUPON_TYPE_FLOATING = 2; //Плавающий
- COUPON_TYPE_DISCOUNT = 3; //Дисконт
- COUPON_TYPE_MORTGAGE = 4; //Ипотечный
- COUPON_TYPE_FIX = 5; //Фиксированный
- COUPON_TYPE_VARIABLE = 6; //Переменный
- COUPON_TYPE_OTHER = 7; //Прочее
+ COUPON_TYPE_UNSPECIFIED = 0; //Неопределённое значение.
+ COUPON_TYPE_CONSTANT = 1; //Постоянный.
+ COUPON_TYPE_FLOATING = 2; //Плавающий.
+ COUPON_TYPE_DISCOUNT = 3; //Дисконт.
+ COUPON_TYPE_MORTGAGE = 4; //Ипотечный.
+ COUPON_TYPE_FIX = 5; //Фиксированный.
+ COUPON_TYPE_VARIABLE = 6; //Переменный.
+ COUPON_TYPE_OTHER = 7; //Прочее.
}
//Данные по валюте.
@@ -252,9 +319,9 @@ message Option {
string basic_asset_position_uid = 5; //Уникальный идентификатор позиции основного инструмента.
SecurityTradingStatus trading_status = 21; //Текущий режим торгов инструмента.
- RealExchange real_exchange = 31; //Реальная площадка исполнения расчётов (биржа). Допустимые значения: [REAL_EXCHANGE_MOEX, REAL_EXCHANGE_RTS]
+ RealExchange real_exchange = 31; //Реальная площадка исполнения расчётов (биржа).
OptionDirection direction = 41; //Направление опциона.
- OptionPaymentType payment_type = 42; //Тип расчетов по опциону.
+ OptionPaymentType payment_type = 42; //Тип расчётов по опциону.
OptionStyle style = 43; //Стиль опциона.
OptionSettlementType settlement_type = 44; //Способ исполнения опциона.
@@ -267,18 +334,22 @@ message Option {
string country_of_risk = 151; //Код страны рисков.
string country_of_risk_name = 152; //Наименование страны рисков.
string sector = 161; //Сектор экономики.
+ BrandData brand = 162; // Информация о бренде.
int32 lot = 201; //Количество бумаг в лоте.
Quotation basic_asset_size = 211; //Размер основного актива.
- Quotation klong = 221; //Коэффициент ставки риска длинной позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР). 1 – клиент с повышенным уровнем риска (КПУР)
- Quotation kshort = 222; //Коэффициент ставки риска короткой позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР). 1 – клиент с повышенным уровнем риска (КПУР)
- Quotation dlong = 223; //Ставка риска начальной маржи для КСУР лонг. Подробнее: [ставка риска в лонг](https://help.tinkoff.ru/margin-trade/long/risk-rate/)
- Quotation dshort = 224; //Ставка риска начальной маржи для КСУР шорт. Подробнее: [ставка риска в шорт](https://help.tinkoff.ru/margin-trade/short/risk-rate/)
- Quotation dlong_min = 225; //Ставка риска начальной маржи для КПУР лонг. Подробнее: [ставка риска в лонг](https://help.tinkoff.ru/margin-trade/long/risk-rate/)
- Quotation dshort_min = 226; //Ставка риска начальной маржи для КПУР шорт. Подробнее: [ставка риска в шорт](https://help.tinkoff.ru/margin-trade/short/risk-rate/)
+ Quotation klong = 221; //Коэффициент ставки риска длинной позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР); 1 – клиент с повышенным уровнем риска (КПУР).
+ Quotation kshort = 222; //Коэффициент ставки риска короткой позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР); 1 – клиент с повышенным уровнем риска (КПУР).
+ Quotation dlong = 223 [deprecated = true]; //Ставка риска начальной маржи для КСУР лонг. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+ Quotation dshort = 224 [deprecated = true]; //Ставка риска начальной маржи для КСУР шорт. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+ Quotation dlong_min = 225 [deprecated = true]; //Ставка риска начальной маржи для КПУР лонг. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+ Quotation dshort_min = 226 [deprecated = true]; //Ставка риска начальной маржи для КПУР шорт. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
Quotation min_price_increment = 231; //Минимальный шаг цены.
MoneyValue strike_price = 241; //Цена страйка.
+ Quotation dlong_client = 290; //Ставка риска в лонг, с учетом текущего уровня риска портфеля клиента. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+ Quotation dshort_client = 291; //Ставка риска в шорт, с учетом текущего уровня риска портфеля клиента. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+
google.protobuf.Timestamp expiration_date = 301; //Дата истечения срока в формате UTC.
google.protobuf.Timestamp first_trade_date = 311; //Дата начала обращения контракта в формате UTC.
google.protobuf.Timestamp last_trade_date = 312; //Дата исполнения в формате UTC.
@@ -286,42 +357,42 @@ message Option {
google.protobuf.Timestamp first_1day_candle_date = 322; //Дата первой дневной свечи в формате UTC.
bool short_enabled_flag = 401; //Признак доступности для операций шорт.
- bool for_iis_flag = 402; //Возможность покупки/продажи на ИИС.
- bool otc_flag = 403; //Признак внебиржевой ценной бумаги.
+ bool for_iis_flag = 402; //Возможность покупки или продажи на ИИС.
+ bool otc_flag = 403; //Флаг, используемый ранее для определения внебиржевых инструментов. На данный момент не используется для торгуемых через API инструментов. Может использоваться как фильтр для операций, совершавшихся некоторое время назад на ОТС площадке.
bool buy_available_flag = 404; //Признак доступности для покупки.
bool sell_available_flag = 405; //Признак доступности для продажи.
- bool for_qual_investor_flag = 406; //Флаг отображающий доступность торговли инструментом только для квалифицированных инвесторов.
- bool weekend_flag = 407; //Флаг отображающий доступность торговли инструментом по выходным.
+ bool for_qual_investor_flag = 406; //Флаг, отображающий доступность торговли инструментом только для квалифицированных инвесторов.
+ bool weekend_flag = 407; //Флаг, отображающий доступность торговли инструментом по выходным.
bool blocked_tca_flag = 408; //Флаг заблокированного ТКС.
- bool api_trade_available_flag = 409; //Параметр указывает на возможность торговать инструментом через API.
+ bool api_trade_available_flag = 409; //Возможность торговать инструментом через API.
}
//Тип опциона по направлению сделки.
enum OptionDirection {
- OPTION_DIRECTION_UNSPECIFIED = 0; //Тип не определен.
+ OPTION_DIRECTION_UNSPECIFIED = 0; //Тип не определён.
OPTION_DIRECTION_PUT = 1; //Опцион на продажу.
OPTION_DIRECTION_CALL = 2; //Опцион на покупку.
}
-//Тип расчетов по опциону.
+//Тип расчётов по опциону.
enum OptionPaymentType {
- OPTION_PAYMENT_TYPE_UNSPECIFIED = 0; //Тип не определен.
- OPTION_PAYMENT_TYPE_PREMIUM = 1; //Опционы с использованием премии в расчетах.
+ OPTION_PAYMENT_TYPE_UNSPECIFIED = 0; //Тип не определён.
+ OPTION_PAYMENT_TYPE_PREMIUM = 1; //Опционы с использованием премии в расчётах.
OPTION_PAYMENT_TYPE_MARGINAL = 2; //Маржируемые опционы.
}
//Тип опциона по стилю.
enum OptionStyle {
- OPTION_STYLE_UNSPECIFIED = 0; //Тип не определен.
+ OPTION_STYLE_UNSPECIFIED = 0; //Тип не определён.
OPTION_STYLE_AMERICAN = 1; //Американский опцион.
OPTION_STYLE_EUROPEAN = 2; //Европейский опцион.
}
//Тип опциона по способу исполнения.
enum OptionSettlementType {
- OPTION_EXECUTION_TYPE_UNSPECIFIED = 0; //Тип не определен.
+ OPTION_EXECUTION_TYPE_UNSPECIFIED = 0; //Тип не определён.
OPTION_EXECUTION_TYPE_PHYSICAL_DELIVERY = 1; // Поставочный тип опциона.
- OPTION_EXECUTION_TYPE_CASH_SETTLEMENT = 2; //Расчетный тип опциона.
+ OPTION_EXECUTION_TYPE_CASH_SETTLEMENT = 2; //Расчётный тип опциона.
}
//Данные по акции.
@@ -336,42 +407,42 @@ message SharesResponse {
//Объект передачи информации об облигации.
message Bond {
- string figi = 1; //Figi-идентификатор инструмента.
+ string figi = 1; //FIGI-идентификатор инструмента.
string ticker = 2; //Тикер инструмента.
string class_code = 3; //Класс-код (секция торгов).
- string isin = 4; //Isin-идентификатор инструмента.
- int32 lot = 5; //Лотность инструмента. Возможно совершение операций только на количества ценной бумаги, кратные параметру *lot*. Подробнее: [лот](https://tinkoff.github.io/investAPI/glossary#lot)
+ string isin = 4; //ISIN-идентификатор инструмента.
+ int32 lot = 5; //Лотность инструмента. Возможно совершение операций только на количества ценной бумаги, кратные параметру `lot`. [Подробнее](https://russianinvestments.github.io/investAPI/glossary#lot).
string currency = 6; //Валюта расчётов.
- Quotation klong = 7; //Коэффициент ставки риска длинной позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР). 1 – клиент с повышенным уровнем риска (КПУР)
- Quotation kshort = 8; //Коэффициент ставки риска короткой позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР). 1 – клиент с повышенным уровнем риска (КПУР)
- Quotation dlong = 9; //Ставка риска начальной маржи для КСУР лонг. Подробнее: [ставка риска в лонг](https://help.tinkoff.ru/margin-trade/long/risk-rate/)
- Quotation dshort = 10; //Ставка риска начальной маржи для КСУР шорт. Подробнее: [ставка риска в шорт](https://help.tinkoff.ru/margin-trade/short/risk-rate/)
- Quotation dlong_min = 11; // Ставка риска начальной маржи для КПУР лонг. Подробнее: [ставка риска в лонг](https://help.tinkoff.ru/margin-trade/long/risk-rate/)
- Quotation dshort_min = 12; //Ставка риска начальной маржи для КПУР шорт. Подробнее: [ставка риска в шорт](https://help.tinkoff.ru/margin-trade/short/risk-rate/)
+ Quotation klong = 7; //Коэффициент ставки риска длинной позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР); 1 – клиент с повышенным уровнем риска (КПУР).
+ Quotation kshort = 8; //Коэффициент ставки риска короткой позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР); 1 – клиент с повышенным уровнем риска (КПУР).
+ Quotation dlong = 9 [deprecated = true]; //Ставка риска начальной маржи для КСУР лонг. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+ Quotation dshort = 10 [deprecated = true]; //Ставка риска начальной маржи для КСУР шорт. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+ Quotation dlong_min = 11 [deprecated = true]; // Ставка риска начальной маржи для КПУР лонг. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+ Quotation dshort_min = 12 [deprecated = true]; //Ставка риска начальной маржи для КПУР шорт. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
bool short_enabled_flag = 13; //Признак доступности для операций в шорт.
string name = 15; //Название инструмента.
string exchange = 16; //Tорговая площадка (секция биржи).
int32 coupon_quantity_per_year = 17; //Количество выплат по купонам в год.
- google.protobuf.Timestamp maturity_date = 18; //Дата погашения облигации в часовом поясе UTC.
+ google.protobuf.Timestamp maturity_date = 18; //Дата погашения облигации по UTC.
MoneyValue nominal = 19; //Номинал облигации.
MoneyValue initial_nominal = 20; //Первоначальный номинал облигации.
- google.protobuf.Timestamp state_reg_date = 21; //Дата выпуска облигации в часовом поясе UTC.
- google.protobuf.Timestamp placement_date = 22; //Дата размещения в часовом поясе UTC.
+ google.protobuf.Timestamp state_reg_date = 21; //Дата выпуска облигации по UTC.
+ google.protobuf.Timestamp placement_date = 22; //Дата размещения по UTC.
MoneyValue placement_price = 23; //Цена размещения.
MoneyValue aci_value = 24; //Значение НКД (накопленного купонного дохода) на дату.
- string country_of_risk = 25; //Код страны риска, т.е. страны, в которой компания ведёт основной бизнес.
- string country_of_risk_name = 26; //Наименование страны риска, т.е. страны, в которой компания ведёт основной бизнес.
+ string country_of_risk = 25; //Код страны риска — то есть страны, в которой компания ведёт основной бизнес.
+ string country_of_risk_name = 26; //Наименование страны риска — то есть страны, в которой компания ведёт основной бизнес.
string sector = 27; //Сектор экономики.
string issue_kind = 28; //Форма выпуска. Возможные значения: **documentary** — документарная; **non_documentary** — бездокументарная.
int64 issue_size = 29; //Размер выпуска.
int64 issue_size_plan = 30; //Плановый размер выпуска.
SecurityTradingStatus trading_status = 31; //Текущий режим торгов инструмента.
- bool otc_flag = 32; //Признак внебиржевой ценной бумаги.
+ bool otc_flag = 32; //Флаг, используемый ранее для определения внебиржевых инструментов. На данный момент не используется для торгуемых через API инструментов. Может использоваться как фильтр для операций, совершавшихся некоторое время назад на ОТС площадке.
bool buy_available_flag = 33; //Признак доступности для покупки.
bool sell_available_flag = 34; //Признак доступности для продажи.
bool floating_coupon_flag = 35; //Признак облигации с плавающим купоном.
@@ -383,44 +454,52 @@ message Bond {
string uid = 40; //Уникальный идентификатор инструмента.
RealExchange real_exchange = 41; //Реальная площадка исполнения расчётов. (биржа)
string position_uid = 42; //Уникальный идентификатор позиции инструмента.
+ string asset_uid = 43; //Уникальный идентификатор актива.
bool for_iis_flag = 51; //Признак доступности для ИИС.
- bool for_qual_investor_flag = 52; //Флаг отображающий доступность торговли инструментом только для квалифицированных инвесторов.
- bool weekend_flag = 53; //Флаг отображающий доступность торговли инструментом по выходным
- bool blocked_tca_flag = 54; //Флаг заблокированного ТКС
+ bool for_qual_investor_flag = 52; //Флаг, отображающий доступность торговли инструментом только для квалифицированных инвесторов.
+ bool weekend_flag = 53; //Флаг, отображающий доступность торговли инструментом по выходным.
+ bool blocked_tca_flag = 54; //Флаг заблокированного ТКС.
bool subordinated_flag = 55; //Признак субординированной облигации.
- bool liquidity_flag = 56; //Флаг достаточной ликвидности
+ bool liquidity_flag = 56; //Флаг достаточной ликвидности.
google.protobuf.Timestamp first_1min_candle_date = 61; //Дата первой минутной свечи.
google.protobuf.Timestamp first_1day_candle_date = 62; //Дата первой дневной свечи.
RiskLevel risk_level = 63; //Уровень риска.
+ BrandData brand = 64; // Информация о бренде.
+ BondType bond_type = 65; // Тип облигации.
+ google.protobuf.Timestamp call_date = 69; // Дата погашения облигации.
+
+ Quotation dlong_client = 90; //Ставка риска в лонг, с учетом текущего уровня риска портфеля клиента. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+ Quotation dshort_client = 91; //Ставка риска в шорт, с учетом текущего уровня риска портфеля клиента. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+
}
//Объект передачи информации о валюте.
message Currency {
- string figi = 1; //Figi-идентификатор инструмента.
+ string figi = 1; //FIGI-идентификатор инструмента.
string ticker = 2; //Тикер инструмента.
string class_code = 3; //Класс-код (секция торгов).
- string isin = 4; //Isin-идентификатор инструмента.
- int32 lot = 5; //Лотность инструмента. Возможно совершение операций только на количества ценной бумаги, кратные параметру *lot*. Подробнее: [лот](https://tinkoff.github.io/investAPI/glossary#lot)
+ string isin = 4; //ISIN-идентификатор инструмента.
+ int32 lot = 5; //Лотность инструмента. Возможно совершение операций только на количества ценной бумаги, кратные параметру `lot`. [Подробнее](https://russianinvestments.github.io/investAPI/glossary#lot).
string currency = 6; //Валюта расчётов.
- Quotation klong = 7; //Коэффициент ставки риска длинной позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР). 1 – клиент с повышенным уровнем риска (КПУР)
- Quotation kshort = 8; //Коэффициент ставки риска короткой позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР). 1 – клиент с повышенным уровнем риска (КПУР)
- Quotation dlong = 9; //Ставка риска начальной маржи для КСУР лонг.Подробнее: [ставка риска в лонг](https://help.tinkoff.ru/margin-trade/long/risk-rate/)
- Quotation dshort = 10; //Ставка риска начальной маржи для КСУР шорт. Подробнее: [ставка риска в шорт](https://help.tinkoff.ru/margin-trade/short/risk-rate/)
- Quotation dlong_min = 11; //Ставка риска начальной маржи для КПУР лонг. Подробнее: [ставка риска в лонг](https://help.tinkoff.ru/margin-trade/long/risk-rate/)
- Quotation dshort_min = 12; //Ставка риска начальной маржи для КПУР шорт. Подробнее: [ставка риска в шорт](https://help.tinkoff.ru/margin-trade/short/risk-rate/)
+ Quotation klong = 7; //Коэффициент ставки риска длинной позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР); 1 – клиент с повышенным уровнем риска (КПУР).
+ Quotation kshort = 8; //Коэффициент ставки риска короткой позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР); 1 – клиент с повышенным уровнем риска (КПУР).
+ Quotation dlong = 9 [deprecated = true]; //Ставка риска начальной маржи для КСУР лонг. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+ Quotation dshort = 10 [deprecated = true]; //Ставка риска начальной маржи для КСУР шорт. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+ Quotation dlong_min = 11 [deprecated = true]; //Ставка риска начальной маржи для КПУР лонг. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+ Quotation dshort_min = 12 [deprecated = true]; //Ставка риска начальной маржи для КПУР шорт. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
bool short_enabled_flag = 13; //Признак доступности для операций в шорт.
string name = 15; //Название инструмента.
- string exchange = 16; //Tорговая площадка (секция биржи)
+ string exchange = 16; //Tорговая площадка (секция биржи).
MoneyValue nominal = 17; //Номинал.
- string country_of_risk = 18; //Код страны риска, т.е. страны, в которой компания ведёт основной бизнес.
- string country_of_risk_name = 19; //Наименование страны риска, т.е. страны, в которой компания ведёт основной бизнес.
+ string country_of_risk = 18; //Код страны риска — то есть страны, в которой компания ведёт основной бизнес.
+ string country_of_risk_name = 19; //Наименование страны риска — то есть страны, в которой компания ведёт основной бизнес.
SecurityTradingStatus trading_status = 20; //Текущий режим торгов инструмента.
- bool otc_flag = 21; //Признак внебиржевой ценной бумаги.
+ bool otc_flag = 21; //Флаг, используемый ранее для определения внебиржевых инструментов. На данный момент не используется для торгуемых через API инструментов. Может использоваться как фильтр для операций, совершавшихся некоторое время назад на ОТС площадке.
bool buy_available_flag = 22; //Признак доступности для покупки.
bool sell_available_flag = 23; //Признак доступности для продажи.
string iso_currency_name = 24; //Строковый ISO-код валюты.
@@ -432,44 +511,49 @@ message Currency {
string position_uid = 29; //Уникальный идентификатор позиции инструмента.
bool for_iis_flag = 41; //Признак доступности для ИИС.
- bool for_qual_investor_flag = 52; //Флаг отображающий доступность торговли инструментом только для квалифицированных инвесторов.
- bool weekend_flag = 53; //Флаг отображающий доступность торговли инструментом по выходным.
+ bool for_qual_investor_flag = 52; //Флаг, отображающий доступность торговли инструментом только для квалифицированных инвесторов.
+ bool weekend_flag = 53; //Флаг, отображающий доступность торговли инструментом по выходным.
bool blocked_tca_flag = 54; //Флаг заблокированного ТКС.
google.protobuf.Timestamp first_1min_candle_date = 56; //Дата первой минутной свечи.
google.protobuf.Timestamp first_1day_candle_date = 57; //Дата первой дневной свечи.
+ BrandData brand = 60; // Информация о бренде.
+
+ Quotation dlong_client = 90; //Ставка риска в лонг, с учетом текущего уровня риска портфеля клиента. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+ Quotation dshort_client = 91; //Ставка риска в шорт, с учетом текущего уровня риска портфеля клиента. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+
}
//Объект передачи информации об инвестиционном фонде.
message Etf {
- string figi = 1; //Figi-идентификатор инструмента.
+ string figi = 1; //FIGI-идентификатор инструмента.
string ticker = 2; //Тикер инструмента.
string class_code = 3; //Класс-код (секция торгов).
- string isin = 4; //Isin-идентификатор инструмента.
- int32 lot = 5; //Лотность инструмента. Возможно совершение операций только на количества ценной бумаги, кратные параметру *lot*. Подробнее: [лот](https://tinkoff.github.io/investAPI/glossary#lot)
+ string isin = 4; //ISIN-идентификатор инструмента.
+ int32 lot = 5; //Лотность инструмента. Возможно совершение операций только на количества ценной бумаги, кратные параметру `lot`. [Подробнее](https://russianinvestments.github.io/investAPI/glossary#lot).
string currency = 6; //Валюта расчётов.
- Quotation klong = 7; //Коэффициент ставки риска длинной позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР). 1 – клиент с повышенным уровнем риска (КПУР)
- Quotation kshort = 8; //Коэффициент ставки риска короткой позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР). 1 – клиент с повышенным уровнем риска (КПУР)
- Quotation dlong = 9; //Ставка риска начальной маржи для КСУР лонг.Подробнее: [ставка риска в лонг](https://help.tinkoff.ru/margin-trade/long/risk-rate/)
- Quotation dshort = 10; //Ставка риска начальной маржи для КСУР шорт. Подробнее: [ставка риска в шорт](https://help.tinkoff.ru/margin-trade/short/risk-rate/)
- Quotation dlong_min = 11; //Ставка риска начальной маржи для КПУР лонг. Подробнее: [ставка риска в лонг](https://help.tinkoff.ru/margin-trade/long/risk-rate/)
- Quotation dshort_min = 12; //Ставка риска начальной маржи для КПУР шорт. Подробнее: [ставка риска в шорт](https://help.tinkoff.ru/margin-trade/short/risk-rate/)
+ Quotation klong = 7; //Коэффициент ставки риска длинной позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР); 1 – клиент с повышенным уровнем риска (КПУР).
+ Quotation kshort = 8; //Коэффициент ставки риска короткой позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР); 1 – клиент с повышенным уровнем риска (КПУР).
+ Quotation dlong = 9 [deprecated = true]; //Ставка риска начальной маржи для КСУР лонг. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+ Quotation dshort = 10 [deprecated = true]; //Ставка риска начальной маржи для КСУР шорт. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+ Quotation dlong_min = 11 [deprecated = true]; //Ставка риска начальной маржи для КПУР лонг. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+ Quotation dshort_min = 12 [deprecated = true]; //Ставка риска начальной маржи для КПУР шорт. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
bool short_enabled_flag = 13; //Признак доступности для операций в шорт.
string name = 15; //Название инструмента.
string exchange = 16; //Tорговая площадка (секция биржи).
Quotation fixed_commission = 17; //Размер фиксированной комиссии фонда.
string focus_type = 18; //Возможные значения: **equity** — акции;**fixed_income** — облигации;**mixed_allocation** — смешанный;**money_market** — денежный рынок;**real_estate** — недвижимость;**commodity** — товары;**specialty** — специальный;**private_equity** — private equity;**alternative_investment** — альтернативные инвестиции.
- google.protobuf.Timestamp released_date = 19; //Дата выпуска в часовом поясе UTC.
- Quotation num_shares = 20; //Количество акций фонда в обращении.
+ google.protobuf.Timestamp released_date = 19; //Дата выпуска по UTC.
+ Quotation num_shares = 20; //Количество паев фонда в обращении.
- string country_of_risk = 21; //Код страны риска, т.е. страны, в которой компания ведёт основной бизнес.
- string country_of_risk_name = 22; //Наименование страны риска, т.е. страны, в которой компания ведёт основной бизнес.
+ string country_of_risk = 21; //Код страны риска — то есть страны, в которой компания ведёт основной бизнес.
+ string country_of_risk_name = 22; //Наименование страны риска — то есть страны, в которой компания ведёт основной бизнес.
string sector = 23; //Сектор экономики.
string rebalancing_freq = 24; //Частота ребалансировки.
SecurityTradingStatus trading_status = 25; //Текущий режим торгов инструмента.
- bool otc_flag = 26; //Признак внебиржевой ценной бумаги.
+ bool otc_flag = 26; //Флаг, используемый ранее для определения внебиржевых инструментов. На данный момент не используется для торгуемых через API инструментов. Может использоваться как фильтр для операций, совершавшихся некоторое время назад на ОТС площадке.
bool buy_available_flag = 27; //Признак доступности для покупки.
bool sell_available_flag = 28; //Признак доступности для продажи.
Quotation min_price_increment = 29; //Шаг цены.
@@ -478,48 +562,55 @@ message Etf {
string uid = 31; //Уникальный идентификатор инструмента.
RealExchange real_exchange = 32; //Реальная площадка исполнения расчётов (биржа).
string position_uid = 33; //Уникальный идентификатор позиции инструмента.
+ string asset_uid = 34; //Уникальный идентификатор актива.
+ InstrumentExchangeType instrument_exchange = 35; //Тип площадки торговли.
bool for_iis_flag = 41; //Признак доступности для ИИС.
- bool for_qual_investor_flag = 42; //Флаг отображающий доступность торговли инструментом только для квалифицированных инвесторов.
- bool weekend_flag = 43; //Флаг отображающий доступность торговли инструментом по выходным.
+ bool for_qual_investor_flag = 42; //Флаг, отображающий доступность торговли инструментом только для квалифицированных инвесторов.
+ bool weekend_flag = 43; //ФлагФлаг, отображающий доступность торговли инструментом по выходным.
bool blocked_tca_flag = 44; //Флаг заблокированного ТКС.
- bool liquidity_flag = 45; //Флаг достаточной ликвидности
+ bool liquidity_flag = 45; //Флаг достаточной ликвидности.
google.protobuf.Timestamp first_1min_candle_date = 56; //Дата первой минутной свечи.
google.protobuf.Timestamp first_1day_candle_date = 57; //Дата первой дневной свечи.
+ BrandData brand = 60; // Информация о бренде.
+
+ Quotation dlong_client = 90; //Ставка риска в лонг, с учетом текущего уровня риска портфеля клиента. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+ Quotation dshort_client = 91; //Ставка риска в шорт, с учетом текущего уровня риска портфеля клиента. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+
}
//Объект передачи информации о фьючерсе.
message Future {
- string figi = 1; //Figi-идентификатор инструмента.
+ string figi = 1; //FIGI-идентификатор инструмента.
string ticker = 2; //Тикер инструмента.
string class_code = 3; //Класс-код (секция торгов).
- int32 lot = 4; //Лотность инструмента. Возможно совершение операций только на количества ценной бумаги, кратные параметру *lot*. Подробнее: [лот](https://tinkoff.github.io/investAPI/glossary#lot)
+ int32 lot = 4; //Лотность инструмента. Возможно совершение операций только на количества ценной бумаги, кратные параметру `lot`. [Подробнее](https://russianinvestments.github.io/investAPI/glossary#lot).
string currency = 5; //Валюта расчётов.
- Quotation klong = 6; //Коэффициент ставки риска длинной позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР). 1 – клиент с повышенным уровнем риска (КПУР)
- Quotation kshort = 7; //Коэффициент ставки риска короткой позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР). 1 – клиент с повышенным уровнем риска (КПУР)
- Quotation dlong = 8; //Ставка риска начальной маржи для КСУР лонг.Подробнее: [ставка риска в лонг](https://help.tinkoff.ru/margin-trade/long/risk-rate/)
- Quotation dshort = 9; //Ставка риска начальной маржи для КСУР шорт. Подробнее: [ставка риска в шорт](https://help.tinkoff.ru/margin-trade/short/risk-rate/)
- Quotation dlong_min = 10; //Ставка риска начальной маржи для КПУР лонг. Подробнее: [ставка риска в лонг](https://help.tinkoff.ru/margin-trade/long/risk-rate/)
- Quotation dshort_min = 11; //Ставка риска начальной маржи для КПУР шорт. Подробнее: [ставка риска в шорт](https://help.tinkoff.ru/margin-trade/short/risk-rate/)
+ Quotation klong = 6; //Коэффициент ставки риска длинной позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР); 1 – клиент с повышенным уровнем риска (КПУР).
+ Quotation kshort = 7; //Коэффициент ставки риска короткой позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР); 1 – клиент с повышенным уровнем риска (КПУР).
+ Quotation dlong = 8 [deprecated = true]; //Ставка риска начальной маржи для КСУР лонг. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+ Quotation dshort = 9 [deprecated = true]; //Ставка риска начальной маржи для КСУР шорт. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+ Quotation dlong_min = 10 [deprecated = true]; //Ставка риска начальной маржи для КПУР лонг. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+ Quotation dshort_min = 11 [deprecated = true]; //Ставка риска начальной маржи для КПУР шорт. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
bool short_enabled_flag = 12; //Признак доступности для операций шорт.
string name = 13; //Название инструмента.
string exchange = 14; //Tорговая площадка (секция биржи).
- google.protobuf.Timestamp first_trade_date = 15; //Дата начала обращения контракта в часовом поясе UTC.
- google.protobuf.Timestamp last_trade_date = 16; //Дата в часовом поясе UTC, до которой возможно проведение операций с фьючерсом.
+ google.protobuf.Timestamp first_trade_date = 15; //Дата начала обращения контракта по UTC.
+ google.protobuf.Timestamp last_trade_date = 16; //Дата по UTC, до которой возможно проведение операций с фьючерсом.
string futures_type = 17; //Тип фьючерса. Возможные значения: **physical_delivery** — физические поставки; **cash_settlement** — денежный эквивалент.
string asset_type = 18; //Тип актива. Возможные значения: **commodity** — товар; **currency** — валюта; **security** — ценная бумага; **index** — индекс.
string basic_asset = 19; //Основной актив.
Quotation basic_asset_size = 20; //Размер основного актива.
- string country_of_risk = 21; //Код страны риска, т.е. страны, в которой компания ведёт основной бизнес.
- string country_of_risk_name = 22; //Наименование страны риска, т.е. страны, в которой компания ведёт основной бизнес.
+ string country_of_risk = 21; //Код страны риска — то есть страны, в которой компания ведёт основной бизнес.
+ string country_of_risk_name = 22; //Наименование страны риска — то есть страны, в которой компания ведёт основной бизнес.
string sector = 23; //Сектор экономики.
google.protobuf.Timestamp expiration_date = 24; //Дата истечения срока в часов поясе UTC.
SecurityTradingStatus trading_status = 25; //Текущий режим торгов инструмента.
- bool otc_flag = 26; //Признак внебиржевой ценной бумаги.
+ bool otc_flag = 26; //Флаг, используемый ранее для определения внебиржевых инструментов. На данный момент не используется для торгуемых через API инструментов. Может использоваться как фильтр для операций, совершавшихся некоторое время назад на ОТС площадке.
bool buy_available_flag = 27; //Признак доступности для покупки.
bool sell_available_flag = 28; //Признак доступности для продажи.
Quotation min_price_increment = 29; //Шаг цены.
@@ -531,78 +622,95 @@ message Future {
string basic_asset_position_uid = 34; //Уникальный идентификатор позиции основного инструмента.
bool for_iis_flag = 41; //Признак доступности для ИИС.
- bool for_qual_investor_flag = 42; //Флаг отображающий доступность торговли инструментом только для квалифицированных инвесторов.
- bool weekend_flag = 43; //Флаг отображающий доступность торговли инструментом по выходным.
+ bool for_qual_investor_flag = 42; //Флаг, отображающий доступность торговли инструментом только для квалифицированных инвесторов.
+ bool weekend_flag = 43; //Флаг, отображающий доступность торговли инструментом по выходным.
bool blocked_tca_flag = 44; //Флаг заблокированного ТКС.
google.protobuf.Timestamp first_1min_candle_date = 56; //Дата первой минутной свечи.
google.protobuf.Timestamp first_1day_candle_date = 57; //Дата первой дневной свечи.
+
+ MoneyValue initial_margin_on_buy = 61; //Гарантийное обеспечение при покупке.
+ MoneyValue initial_margin_on_sell = 62; //Гарантийное обеспечение при продаже.
+ Quotation min_price_increment_amount = 63; //Стоимость шага цены.
+ BrandData brand = 64; // Информация о бренде.
+
+ Quotation dlong_client = 90; //Ставка риска в лонг, с учетом текущего уровня риска портфеля клиента. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+ Quotation dshort_client = 91; //Ставка риска в шорт, с учетом текущего уровня риска портфеля клиента. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+
}
//Объект передачи информации об акции.
message Share {
- string figi = 1; //Figi-идентификатор инструмента.
+ string figi = 1; //FIGI-идентификатор инструмента.
string ticker = 2; //Тикер инструмента.
string class_code = 3; //Класс-код (секция торгов).
- string isin = 4; //Isin-идентификатор инструмента.
- int32 lot = 5; //Лотность инструмента. Возможно совершение операций только на количества ценной бумаги, кратные параметру *lot*. Подробнее: [лот](https://tinkoff.github.io/investAPI/glossary#lot)
+ string isin = 4; //ISIN-идентификатор инструмента.
+ int32 lot = 5; //Лотность инструмента. Возможно совершение операций только на количества ценной бумаги, кратные параметру `lot`. [Подробнее](https://russianinvestments.github.io/investAPI/glossary#lot)
string currency = 6; //Валюта расчётов.
- Quotation klong = 7; //Коэффициент ставки риска длинной позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР). 1 – клиент с повышенным уровнем риска (КПУР)
- Quotation kshort = 8; //Коэффициент ставки риска короткой позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР). 1 – клиент с повышенным уровнем риска (КПУР)
- Quotation dlong = 9; //Ставка риска начальной маржи для КСУР лонг.Подробнее: [ставка риска в лонг](https://help.tinkoff.ru/margin-trade/long/risk-rate/)
- Quotation dshort = 10; //Ставка риска начальной маржи для КСУР шорт. Подробнее: [ставка риска в шорт](https://help.tinkoff.ru/margin-trade/short/risk-rate/)
- Quotation dlong_min = 11; //Ставка риска начальной маржи для КПУР лонг. Подробнее: [ставка риска в лонг](https://help.tinkoff.ru/margin-trade/long/risk-rate/)
- Quotation dshort_min = 12; //Ставка риска начальной маржи для КПУР шорт. Подробнее: [ставка риска в шорт](https://help.tinkoff.ru/margin-trade/short/risk-rate/)
+ Quotation klong = 7; //Коэффициент ставки риска длинной позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР); 1 – клиент с повышенным уровнем риска (КПУР).
+ Quotation kshort = 8; //Коэффициент ставки риска короткой позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР); 1 – клиент с повышенным уровнем риска (КПУР).
+ Quotation dlong = 9 [deprecated = true]; //Ставка риска начальной маржи для КСУР лонг. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+ Quotation dshort = 10 [deprecated = true]; //Ставка риска начальной маржи для КСУР шорт. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+ Quotation dlong_min = 11 [deprecated = true]; //Ставка риска начальной маржи для КПУР лонг. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+ Quotation dshort_min = 12 [deprecated = true]; //Ставка риска начальной маржи для КПУР шорт. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
bool short_enabled_flag = 13; //Признак доступности для операций в шорт.
string name = 15; //Название инструмента.
string exchange = 16; //Tорговая площадка (секция биржи).
- google.protobuf.Timestamp ipo_date = 17; //Дата IPO акции в часовом поясе UTC.
+ google.protobuf.Timestamp ipo_date = 17; //Дата IPO акции по UTC.
int64 issue_size = 18; //Размер выпуска.
- string country_of_risk = 19; //Код страны риска, т.е. страны, в которой компания ведёт основной бизнес.
- string country_of_risk_name = 20; //Наименование страны риска, т.е. страны, в которой компания ведёт основной бизнес.
+ string country_of_risk = 19; //Код страны риска — то есть страны, в которой компания ведёт основной бизнес.
+ string country_of_risk_name = 20; //Наименование страны риска — то есть страны, в которой компания ведёт основной бизнес.
string sector = 21; //Сектор экономики.
int64 issue_size_plan = 22; //Плановый размер выпуска.
MoneyValue nominal = 23; //Номинал.
SecurityTradingStatus trading_status = 25; //Текущий режим торгов инструмента.
- bool otc_flag = 26; //Признак внебиржевой ценной бумаги.
+ bool otc_flag = 26; //Флаг, используемый ранее для определения внебиржевых инструментов. На данный момент не используется для торгуемых через API инструментов. Может использоваться как фильтр для операций, совершавшихся некоторое время назад на ОТС площадке.
bool buy_available_flag = 27; //Признак доступности для покупки.
bool sell_available_flag = 28; //Признак доступности для продажи.
bool div_yield_flag = 29; //Признак наличия дивидендной доходности.
- ShareType share_type = 30; //Тип акции. Возможные значения: [ShareType](https://tinkoff.github.io/investAPI/instruments#sharetype)
+ ShareType share_type = 30; //Тип акции. Возможные значения — `[ShareType](https://russianinvestments.github.io/investAPI/instruments#sharetype)`.
Quotation min_price_increment = 31; //Шаг цены.
- bool api_trade_available_flag = 32; //Параметр указывает на возможность торговать инструментом через API.
+ bool api_trade_available_flag = 32; //Возможность торговать инструментом через API.
string uid = 33; //Уникальный идентификатор инструмента.
RealExchange real_exchange = 34; //Реальная площадка исполнения расчётов (биржа).
string position_uid = 35; //Уникальный идентификатор позиции инструмента.
+ string asset_uid = 36; //Уникальный идентификатор актива.
+ InstrumentExchangeType instrument_exchange = 37; //Тип площадки торговли.
bool for_iis_flag = 46; //Признак доступности для ИИС.
- bool for_qual_investor_flag = 47; //Флаг отображающий доступность торговли инструментом только для квалифицированных инвесторов.
- bool weekend_flag = 48; //Флаг отображающий доступность торговли инструментом по выходным
- bool blocked_tca_flag = 49; //Флаг заблокированного ТКС
- bool liquidity_flag = 50; //Флаг достаточной ликвидности
+ bool for_qual_investor_flag = 47; //Флаг, отображающий доступность торговли инструментом только для квалифицированных инвесторов.
+ bool weekend_flag = 48; //Флаг, отображающий доступность торговли инструментом по выходным.
+ bool blocked_tca_flag = 49; //Флаг заблокированного ТКС.
+ bool liquidity_flag = 50; //Флаг достаточной ликвидности.
google.protobuf.Timestamp first_1min_candle_date = 56; //Дата первой минутной свечи.
google.protobuf.Timestamp first_1day_candle_date = 57; //Дата первой дневной свечи.
+ BrandData brand = 60; // Информация о бренде.
+
+ Quotation dlong_client = 90; //Ставка риска в лонг, с учетом текущего уровня риска портфеля клиента. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+ Quotation dshort_client = 91; //Ставка риска в шорт, с учетом текущего уровня риска портфеля клиента. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+
}
-//Запрос НКД по облигации
+//Запрос НКД по облигации.
message GetAccruedInterestsRequest {
- string figi = 1; //Figi-идентификатор инструмента.
- google.protobuf.Timestamp from = 2; //Начало запрашиваемого периода в часовом поясе UTC.
- google.protobuf.Timestamp to = 3; //Окончание запрашиваемого периода в часовом поясе UTC.
+ string figi = 1 [deprecated = true]; //FIGI-идентификатор инструмента.
+ google.protobuf.Timestamp from = 2 [(google.api.field_behavior) = REQUIRED]; //Начало запрашиваемого периода по UTC.
+ google.protobuf.Timestamp to = 3 [(google.api.field_behavior) = REQUIRED]; //Окончание запрашиваемого периода по UTC.
+ string instrument_id = 4 [(google.api.field_behavior) = REQUIRED]; //Идентификатор инструмента — `figi` или `instrument_uid`.
}
-//НКД облигации
+//НКД облигации.
message GetAccruedInterestsResponse {
repeated AccruedInterest accrued_interests = 1; //Массив операций начисления купонов.
}
//Операция начисления купонов.
message AccruedInterest {
- google.protobuf.Timestamp date = 1; //Дата и время выплаты в часовом поясе UTC.
+ google.protobuf.Timestamp date = 1; //Дата и время выплаты по UTC.
Quotation value = 2; //Величина выплаты.
Quotation value_percent = 3; //Величина выплаты в процентах от номинала.
Quotation nominal = 4; //Номинал облигации.
@@ -610,7 +718,8 @@ message AccruedInterest {
//Запрос информации о фьючерсе
message GetFuturesMarginRequest {
- string figi = 1; // Идентификатор инструмента.
+ string figi = 1 [deprecated = true]; // Идентификатор инструмента.
+ string instrument_id = 4 [(google.api.field_behavior) = REQUIRED]; //Идентификатор инструмента — `figi` или `instrument_uid`.
}
//Данные по фьючерсу
@@ -621,21 +730,15 @@ message GetFuturesMarginResponse {
Quotation min_price_increment_amount = 4; //Стоимость шага цены.
}
-//Тип идентификатора инструмента. Подробнее об идентификации инструментов: [Идентификация инструментов](https://tinkoff.github.io/investAPI/faq_identification/)
+//Тип идентификатора инструмента. [Подробнее об идентификации инструментов](https://russianinvestments.github.io/investAPI/faq_identification/).
enum InstrumentIdType {
INSTRUMENT_ID_UNSPECIFIED = 0; //Значение не определено.
- INSTRUMENT_ID_TYPE_FIGI = 1; //Figi.
+ INSTRUMENT_ID_TYPE_FIGI = 1; //FIGI.
INSTRUMENT_ID_TYPE_TICKER = 2; //Ticker.
INSTRUMENT_ID_TYPE_UID = 3; //Уникальный идентификатор.
INSTRUMENT_ID_TYPE_POSITION_UID = 4; //Идентификатор позиции.
}
-//Статус запрашиваемых инструментов.
-enum InstrumentStatus {
- INSTRUMENT_STATUS_UNSPECIFIED = 0; //Значение не определено.
- INSTRUMENT_STATUS_BASE = 1; //Базовый список инструментов (по умолчанию). Инструменты доступные для торговли через TINKOFF INVEST API. Cейчас списки бумаг, доступных из api и других интерфейсах совпадают (за исключением внебиржевых бумаг), но в будущем возможны ситуации, когда списки инструментов будут отличаться
- INSTRUMENT_STATUS_ALL = 2; //Список всех инструментов.
-}
//Данные по инструменту.
message InstrumentResponse {
@@ -644,29 +747,29 @@ message InstrumentResponse {
//Объект передачи основной информации об инструменте.
message Instrument {
- string figi = 1; //Figi-идентификатор инструмента.
+ string figi = 1; //FIGI-идентификатор инструмента.
string ticker = 2; //Тикер инструмента.
string class_code = 3; //Класс-код инструмента.
- string isin = 4; //Isin-идентификатор инструмента.
- int32 lot = 5; //Лотность инструмента. Возможно совершение операций только на количества ценной бумаги, кратные параметру *lot*. Подробнее: [лот](https://tinkoff.github.io/investAPI/glossary#lot)
+ string isin = 4; //ISIN-идентификатор инструмента.
+ int32 lot = 5; //Лотность инструмента. Возможно совершение операций только на количества ценной бумаги, кратные параметру `lot`. [Подробнее](https://russianinvestments.github.io/investAPI/glossary#lot).
string currency = 6; //Валюта расчётов.
- Quotation klong = 7; //Коэффициент ставки риска длинной позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР). 1 – клиент с повышенным уровнем риска (КПУР)
- Quotation kshort = 8; //Коэффициент ставки риска короткой позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР). 1 – клиент с повышенным уровнем риска (КПУР)
- Quotation dlong = 9; //ССтавка риска начальной маржи для КСУР лонг.Подробнее: [ставка риска в лонг](https://help.tinkoff.ru/margin-trade/long/risk-rate/)
- Quotation dshort = 10; //Ставка риска начальной маржи для КСУР шорт. Подробнее: [ставка риска в шорт](https://help.tinkoff.ru/margin-trade/short/risk-rate/)
- Quotation dlong_min = 11; //Ставка риска начальной маржи для КПУР лонг. Подробнее: [ставка риска в лонг](https://help.tinkoff.ru/margin-trade/long/risk-rate/)
- Quotation dshort_min = 12; //Ставка риска начальной маржи для КПУР шорт. Подробнее: [ставка риска в шорт](https://help.tinkoff.ru/margin-trade/short/risk-rate/)
+ Quotation klong = 7; //Коэффициент ставки риска длинной позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР); 1 – клиент с повышенным уровнем риска (КПУР).
+ Quotation kshort = 8; //Коэффициент ставки риска короткой позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР); 1 – клиент с повышенным уровнем риска (КПУР).
+ Quotation dlong = 9 [deprecated = true]; //Ставка риска начальной маржи для КСУР лонг. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+ Quotation dshort = 10 [deprecated = true]; //Ставка риска начальной маржи для КСУР шорт. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+ Quotation dlong_min = 11 [deprecated = true]; //Ставка риска начальной маржи для КПУР лонг. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+ Quotation dshort_min = 12 [deprecated = true]; //Ставка риска начальной маржи для КПУР шорт. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
bool short_enabled_flag = 13; //Признак доступности для операций в шорт.
string name = 14; //Название инструмента.
string exchange = 15; //Tорговая площадка (секция биржи).
- string country_of_risk = 16; //Код страны риска, т.е. страны, в которой компания ведёт основной бизнес.
- string country_of_risk_name = 17; //Наименование страны риска, т.е. страны, в которой компания ведёт основной бизнес.
+ string country_of_risk = 16; //Код страны риска — то есть страны, в которой компания ведёт основной бизнес.
+ string country_of_risk_name = 17; //Наименование страны риска — то есть страны, в которой компания ведёт основной бизнес.
string instrument_type = 18; //Тип инструмента.
SecurityTradingStatus trading_status = 19; //Текущий режим торгов инструмента.
- bool otc_flag = 20; //Признак внебиржевой ценной бумаги.
+ bool otc_flag = 20; //Флаг, используемый ранее для определения внебиржевых инструментов. На данный момент не используется для торгуемых через API инструментов. Может использоваться как фильтр для операций, совершавшихся некоторое время назад на ОТС площадке.
bool buy_available_flag = 21; //Признак доступности для покупки.
bool sell_available_flag = 22; //Признак доступности для продажи.
Quotation min_price_increment = 23; //Шаг цены.
@@ -675,21 +778,29 @@ message Instrument {
string uid = 25; //Уникальный идентификатор инструмента.
RealExchange real_exchange = 26; //Реальная площадка исполнения расчётов (биржа).
string position_uid = 27; //Уникальный идентификатор позиции инструмента.
+ string asset_uid = 28; //Уникальный идентификатор актива.
bool for_iis_flag = 36; //Признак доступности для ИИС.
- bool for_qual_investor_flag = 37; //Флаг отображающий доступность торговли инструментом только для квалифицированных инвесторов.
- bool weekend_flag = 38; //Флаг отображающий доступность торговли инструментом по выходным
- bool blocked_tca_flag = 39; //Флаг заблокированного ТКС
- InstrumentType instrument_kind = 40; //Тип инструмента.
+ bool for_qual_investor_flag = 37; //Флаг, отображающий доступность торговли инструментом только для квалифицированных инвесторов.
+ bool weekend_flag = 38; //Флаг, отображающий доступность торговли инструментом по выходным.
+ bool blocked_tca_flag = 39; //Флаг заблокированного ТКС.
+ InstrumentType instrument_kind = 40; //Тип инструмента.
google.protobuf.Timestamp first_1min_candle_date = 56; //Дата первой минутной свечи.
google.protobuf.Timestamp first_1day_candle_date = 57; //Дата первой дневной свечи.
+ BrandData brand = 60; // Информация о бренде.
+
+
+ Quotation dlong_client = 490; //Ставка риска в лонг, с учетом текущего уровня риска портфеля клиента. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+ Quotation dshort_client = 491; //Ставка риска в шорт, с учетом текущего уровня риска портфеля клиента. [Подробнее про ставки риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
+
}
//Запрос дивидендов.
message GetDividendsRequest {
- string figi = 1; //Figi-идентификатор инструмента.
- google.protobuf.Timestamp from = 2; //Начало запрашиваемого периода в часовом поясе UTC. Фильтрация происходит по параметру *record_date* (дата фиксации реестра).
- google.protobuf.Timestamp to = 3; //Окончание запрашиваемого периода в часовом поясе UTC. Фильтрация происходит по параметру *record_date* (дата фиксации реестра).
+ string figi = 1 [deprecated = true]; //FIGI-идентификатор инструмента.
+ optional google.protobuf.Timestamp from = 2; //Начало запрашиваемого периода по UTC. Фильтрация происходит по параметру `record_date` — дата фиксации реестра.
+ optional google.protobuf.Timestamp to = 3; //Окончание запрашиваемого периода по UTC. Фильтрация происходит по параметру `record_date` — дата фиксации реестра.
+ string instrument_id = 4 [(google.api.field_behavior) = REQUIRED]; //Идентификатор инструмента — `figi` или `instrument_uid`.
}
//Дивиденды.
@@ -700,33 +811,33 @@ message GetDividendsResponse {
//Информация о выплате.
message Dividend {
MoneyValue dividend_net = 1; //Величина дивиденда на 1 ценную бумагу (включая валюту).
- google.protobuf.Timestamp payment_date = 2; //Дата фактических выплат в часовом поясе UTC.
- google.protobuf.Timestamp declared_date = 3; //Дата объявления дивидендов в часовом поясе UTC.
- google.protobuf.Timestamp last_buy_date = 4; //Последний день (включительно) покупки для получения выплаты в часовом поясе UTC.
- string dividend_type = 5; //Тип выплаты. Возможные значения: Regular Cash – регулярные выплаты, Cancelled – выплата отменена, Daily Accrual – ежедневное начисление, Return of Capital – возврат капитала, прочие типы выплат.
- google.protobuf.Timestamp record_date = 6; //Дата фиксации реестра в часовом поясе UTC.
- string regularity = 7; //Регулярность выплаты. Возможные значения: Annual – ежегодная, Semi-Anl – каждые полгода, прочие типы выплат.
- MoneyValue close_price = 8; //Цена закрытия инструмента на момент ex_dividend_date.
+ google.protobuf.Timestamp payment_date = 2; //Дата фактических выплат по UTC.
+ google.protobuf.Timestamp declared_date = 3; //Дата объявления дивидендов по UTC.
+ google.protobuf.Timestamp last_buy_date = 4; //Последний день (включительно) покупки для получения выплаты по UTC.
+ string dividend_type = 5; //Тип выплаты. Возможные значения: `Regular Cash` – регулярные выплаты, `Cancelled` – выплата отменена, `Daily Accrual` – ежедневное начисление, `Return of Capital` – возврат капитала, прочие типы выплат.
+ google.protobuf.Timestamp record_date = 6; //Дата фиксации реестра по UTC.
+ string regularity = 7; //Регулярность выплаты. Возможные значения: `Annual` – ежегодная, `Semi-Anl` – каждые полгода, прочие типы выплат.
+ MoneyValue close_price = 8; //Цена закрытия инструмента на момент `ex_dividend_date`.
Quotation yield_value = 9; //Величина доходности.
- google.protobuf.Timestamp created_at = 10; //Дата и время создания записи в часовом поясе UTC.
+ google.protobuf.Timestamp created_at = 10; //Дата и время создания записи по UTC.
}
//Тип акций.
enum ShareType {
SHARE_TYPE_UNSPECIFIED = 0; //Значение не определено.
- SHARE_TYPE_COMMON = 1; //Обыкновенная
- SHARE_TYPE_PREFERRED = 2; //Привилегированная
- SHARE_TYPE_ADR = 3; //Американские депозитарные расписки
- SHARE_TYPE_GDR = 4; //Глобальные депозитарные расписки
- SHARE_TYPE_MLP = 5; //Товарищество с ограниченной ответственностью
- SHARE_TYPE_NY_REG_SHRS = 6; //Акции из реестра Нью-Йорка
- SHARE_TYPE_CLOSED_END_FUND = 7; //Закрытый инвестиционный фонд
- SHARE_TYPE_REIT = 8; //Траст недвижимости
+ SHARE_TYPE_COMMON = 1; //Обыкновенная.
+ SHARE_TYPE_PREFERRED = 2; //Привилегированная.
+ SHARE_TYPE_ADR = 3; //Американские депозитарные расписки.
+ SHARE_TYPE_GDR = 4; //Глобальные депозитарные расписки.
+ SHARE_TYPE_MLP = 5; //Товарищество с ограниченной ответственностью.
+ SHARE_TYPE_NY_REG_SHRS = 6; //Акции из реестра Нью-Йорка.
+ SHARE_TYPE_CLOSED_END_FUND = 7; //Закрытый инвестиционный фонд.
+ SHARE_TYPE_REIT = 8; //Траст недвижимости.
}
//Запрос актива по идентификатору.
message AssetRequest {
- string id = 1; //uid-идентификатор актива.
+ string id = 1 [(google.api.field_behavior) = REQUIRED]; //UID-идентификатор актива.
}
//Данные по активу.
@@ -736,7 +847,9 @@ message AssetResponse {
//Запрос списка активов.
message AssetsRequest {
- InstrumentType instrument_type = 1;
+ optional InstrumentType instrument_type = 1;
+ optional InstrumentStatus instrument_status = 2; //Статус запрашиваемых инструментов. [Возможные значения](#instrumentstatus).
+
}
//Список активов.
@@ -753,8 +866,8 @@ message AssetFull {
google.protobuf.Timestamp deleted_at = 6; //Дата и время удаления актива.
repeated string required_tests = 7; //Тестирование клиентов.
oneof ext {
- AssetCurrency currency = 8; //Валюта. Обязательно и заполняется только для type = "ASSET_TYPE_CURRENCY".
- AssetSecurity security = 9; //Ценная бумага. Обязательно и заполняется только для type = "ASSET_TYPE_SECURITY".
+ AssetCurrency currency = 8; //Валюта. Обязательно и заполняется только для `type = ASSET_TYPE_CURRENCY`.
+ AssetSecurity security = 9; //Ценная бумага. Обязательно и заполняется только для `type = ASSET_TYPE_SECURITY`.
}
string gos_reg_code = 10; //Номер государственной регистрации.
string cfi = 11; //Код CFI.
@@ -793,13 +906,13 @@ message AssetCurrency {
message AssetSecurity {
string isin = 1; //ISIN-идентификатор ценной бумаги.
string type = 2; //Тип ценной бумаги.
- InstrumentType instrument_kind = 10; //Тип инструмента.
+ InstrumentType instrument_kind = 10; //Тип инструмента.
oneof ext {
- AssetShare share = 3; //Акция. Заполняется только для акций (тип актива asset.type = "ASSET_TYPE_SECURITY" и security.type = share).
- AssetBond bond = 4; //Облигация. Заполняется только для облигаций (тип актива asset.type = "ASSET_TYPE_SECURITY" и security.type = bond).
- AssetStructuredProduct sp = 5; //Структурная нота. Заполняется только для структурных продуктов (тип актива asset.type = "ASSET_TYPE_SECURITY" и security.type = sp).
- AssetEtf etf = 6; // Фонд. Заполняется только для фондов (тип актива asset.type = "ASSET_TYPE_SECURITY" и security.type = etf).
- AssetClearingCertificate clearing_certificate = 7; // Клиринговый сертификат участия. Заполняется только для клиринговых сертификатов (тип актива asset.type = "ASSET_TYPE_SECURITY" и security.type = clearing_certificate).
+ AssetShare share = 3; //Акция. Заполняется только для акций — тип актива `asset.type = ASSET_TYPE_SECURITY` и `security.type = share`.
+ AssetBond bond = 4; //Облигация. Заполняется только для облигаций — тип актива `asset.type = ASSET_TYPE_SECURITY` и `security.type = bond`.
+ AssetStructuredProduct sp = 5; //Структурная нота. Заполняется только для структурных продуктов — тип актива `asset.type = ASSET_TYPE_SECURITY` и `security.type = sp`.
+ AssetEtf etf = 6; // Фонд. Заполняется только для фондов — тип актива `asset.type = ASSET_TYPE_SECURITY` и `security.type = etf`.
+ AssetClearingCertificate clearing_certificate = 7; // Клиринговый сертификат участия. Заполняется только для клиринговых сертификатов — тип актива `asset.type = ASSET_TYPE_SECURITY` и security.type = `clearing_certificate`.
}
}
@@ -818,7 +931,7 @@ message AssetShare {
string issue_kind = 11; //Форма выпуска ФИ.
google.protobuf.Timestamp placement_date = 12; //Дата размещения акции.
string repres_isin = 13; //ISIN базового актива.
- Quotation issue_size_plan = 14; //Объявленное количество шт.
+ Quotation issue_size_plan = 14; //Объявленное количество, шт.
Quotation total_float = 15; //Количество акций в свободном обращении.
}
@@ -835,7 +948,7 @@ message AssetBond {
bool indexed_nominal_flag = 9; //Признак облигации с индексируемым номиналом.
bool subordinated_flag = 10; //Признак субординированной облигации.
bool collateral_flag = 11; //Признак обеспеченной облигации.
- bool tax_free_flag = 12; //Признак показывает, что купоны облигации не облагаются налогом (для mass market).
+ bool tax_free_flag = 12; //Признак показывает, что купоны облигации не облагаются налогом — для mass market.
bool amortization_flag = 13; //Признак облигации с амортизацией долга.
bool floating_coupon_flag = 14; //Признак облигации с плавающим купоном.
bool perpetual_flag = 15; //Признак бессрочной облигации.
@@ -844,22 +957,22 @@ message AssetBond {
google.protobuf.Timestamp state_reg_date = 18; //Дата выпуска облигации.
google.protobuf.Timestamp placement_date = 19; //Дата размещения облигации.
Quotation placement_price = 20; //Цена размещения облигации.
- Quotation issue_size_plan = 21; //Объявленное количество шт.
+ Quotation issue_size_plan = 21; //Объявленное количество, шт.
}
//Структурная нота.
message AssetStructuredProduct {
- string borrow_name = 1; //Наименование заемщика.
+ string borrow_name = 1; //Наименование заёмщика.
Quotation nominal = 2; //Номинал.
string nominal_currency = 3; //Валюта номинала.
StructuredProductType type = 4; //Тип структурной ноты.
string logic_portfolio = 5; //Стратегия портфеля.
AssetType asset_type = 6; //Тип базового актива.
string basic_asset = 7; //Вид базового актива в зависимости от типа базового актива.
- Quotation safety_barrier = 8; //Барьер сохранности (в процентах).
+ Quotation safety_barrier = 8; //Барьер сохранности в процентах.
google.protobuf.Timestamp maturity_date = 9; //Дата погашения.
- Quotation issue_size_plan = 10; //Объявленное количество шт.
- Quotation issue_size = 11; //Объем размещения.
+ Quotation issue_size_plan = 10; //Объявленное количество, шт.
+ Quotation issue_size = 11; //Объём размещения.
google.protobuf.Timestamp placement_date = 12; //Дата размещения ноты.
string issue_kind = 13; //Форма выпуска.
}
@@ -873,14 +986,14 @@ enum StructuredProductType {
//Фонд.
message AssetEtf {
- Quotation total_expense = 1; //Суммарные расходы фонда (в %).
- Quotation hurdle_rate = 2; //Барьерная ставка доходности после которой фонд имеет право на perfomance fee (в процентах).
- Quotation performance_fee = 3; //Комиссия за успешные результаты фонда (в процентах).
- Quotation fixed_commission = 4; //Фиксированная комиссия за управление (в процентах).
+ Quotation total_expense = 1; //Суммарные расходы фонда в процентах.
+ Quotation hurdle_rate = 2; //Барьерная ставка доходности, после которой фонд имеет право на perfomance fee — в процентах.
+ Quotation performance_fee = 3; //Комиссия за успешные результаты фонда в процентах.
+ Quotation fixed_commission = 4; //Фиксированная комиссия за управление в процентах.
string payment_type = 5; //Тип распределения доходов от выплат по бумагам.
bool watermark_flag = 6; //Признак необходимости выхода фонда в плюс для получения комиссии.
- Quotation buy_premium = 7; //Премия (надбавка к цене) при покупке доли в фонде (в процентах).
- Quotation sell_discount = 8; //Ставка дисконта (вычет из цены) при продаже доли в фонде (в процентах).
+ Quotation buy_premium = 7; //Премия (надбавка к цене) при покупке доли в фонде — в процентах.
+ Quotation sell_discount = 8; //Ставка дисконта (вычет из цены) при продаже доли в фонде — в процентах.
bool rebalancing_flag = 9; //Признак ребалансируемости портфеля фонда.
string rebalancing_freq = 10; //Периодичность ребалансировки.
string management_type = 11; //Тип управления.
@@ -893,11 +1006,11 @@ message AssetEtf {
string description = 18; //Описание фонда.
string primary_index_description = 19; //Описание индекса, за которым следует фонд.
string primary_index_company = 20; //Основные компании, в которые вкладывается фонд.
- Quotation index_recovery_period = 21; //Срок восстановления индекса (после просадки).
+ Quotation index_recovery_period = 21; //Срок восстановления индекса после просадки.
string inav_code = 22; //IVAV-код.
bool div_yield_flag = 23; //Признак наличия дивидендной доходности.
- Quotation expense_commission = 24; //Комиссия на покрытие расходов фонда (в процентах).
- Quotation primary_index_tracking_error = 25; //Ошибка следования за индексом (в процентах).
+ Quotation expense_commission = 24; //Комиссия на покрытие расходов фонда в процентах.
+ Quotation primary_index_tracking_error = 25; //Ошибка следования за индексом в процентах.
string rebalancing_plan = 26; //Плановая ребалансировка портфеля.
string tax_rate = 27; //Ставки налогообложения дивидендов и купонов.
repeated google.protobuf.Timestamp rebalancing_dates = 28; //Даты ребалансировок.
@@ -914,7 +1027,7 @@ message AssetClearingCertificate {
//Бренд.
message Brand {
- string uid = 1; //uid идентификатор бренда.
+ string uid = 1; //UID-идентификатор бренда.
string name = 2; //Наименование бренда.
string description = 3; //Описание.
string info = 4; //Информация о бренде.
@@ -926,20 +1039,20 @@ message Brand {
//Идентификаторы инструмента.
message AssetInstrument {
- string uid = 1; //uid идентификатор инструмента.
- string figi = 2; //figi идентификатор инструмента.
+ string uid = 1; //UID-идентификатор инструмента.
+ string figi = 2; //FIGI-идентификатор инструмента.
string instrument_type = 3; //Тип инструмента.
string ticker = 4; //Тикер инструмента.
string class_code = 5; //Класс-код (секция торгов).
repeated InstrumentLink links = 6; //Массив связанных инструментов.
- InstrumentType instrument_kind = 10; //Тип инструмента.
- string position_uid = 11; //id позиции.
+ InstrumentType instrument_kind = 10; //Тип инструмента.
+ string position_uid = 11; //ID позиции.
}
//Связь с другим инструментом.
message InstrumentLink {
string type = 1; //Тип связи.
- string instrument_uid = 2; //uid идентификатор связанного инструмента.
+ string instrument_uid = 2; //UID-идентификатор связанного инструмента.
}
//Запрос списка избранных инструментов, входные параметры не требуются.
@@ -948,30 +1061,33 @@ message GetFavoritesRequest {
//В ответ передаётся список избранных инструментов в качестве массива.
message GetFavoritesResponse {
- repeated FavoriteInstrument favorite_instruments = 1; //Массив инструментов
+ repeated FavoriteInstrument favorite_instruments = 1; //Массив инструментов.
}
//Массив избранных инструментов.
message FavoriteInstrument {
- string figi = 1; //Figi-идентификатор инструмента.
+ string figi = 1; //FIGI-идентификатор инструмента.
string ticker = 2; //Тикер инструмента.
string class_code = 3; //Класс-код инструмента.
- string isin = 4; //Isin-идентификатор инструмента.
+ string isin = 4; //ISIN-идентификатор инструмента.
string instrument_type = 11; //Тип инструмента.
- bool otc_flag = 16; //Признак внебиржевой ценной бумаги.
- bool api_trade_available_flag = 17; //Параметр указывает на возможность торговать инструментом через API.
- InstrumentType instrument_kind = 18; //Тип инструмента.
+ string name = 12; //Название инструмента.
+ string uid = 13; //Уникальный идентификатор инструмента.
+ bool otc_flag = 16; //Флаг, используемый ранее для определения внебиржевых инструментов. На данный момент не используется для торгуемых через API инструментов. Может использоваться как фильтр для операций, совершавшихся некоторое время назад на ОТС площадке.
+ bool api_trade_available_flag = 17; //Возможность торговать инструментом через API.
+ InstrumentType instrument_kind = 18; //Тип инструмента.
}
//Запрос редактирования списка избранных инструментов.
message EditFavoritesRequest {
- repeated EditFavoritesRequestInstrument instruments = 1; //Массив инструментов.
- EditFavoritesActionType action_type = 6; //Тип действия со списком.
+ repeated EditFavoritesRequestInstrument instruments = 1 [(google.api.field_behavior) = REQUIRED]; //Массив инструментов.
+ EditFavoritesActionType action_type = 6 [(google.api.field_behavior) = REQUIRED]; //Тип действия со списком.
}
//Массив инструментов для редактирования списка избранных инструментов.
message EditFavoritesRequestInstrument {
- string figi = 1; //Figi-идентификатор инструмента.
+ optional string figi = 1 [deprecated = true]; //FIGI-идентификатор инструмента.
+ string instrument_id = 2 [(google.api.field_behavior) = REQUIRED]; //Идентификатор инструмента — `figi` или `instrument_uid`.
}
//Тип действия со списком избранных инструментов.
@@ -983,7 +1099,7 @@ enum EditFavoritesActionType {
//Результат редактирования списка избранных инструментов.
message EditFavoritesResponse {
- repeated FavoriteInstrument favorite_instruments = 1; //Массив инструментов
+ repeated FavoriteInstrument favorite_instruments = 1; //Массив инструментов.
}
//Реальная площадка исполнения расчётов.
@@ -992,6 +1108,7 @@ enum RealExchange {
REAL_EXCHANGE_MOEX = 1; //Московская биржа.
REAL_EXCHANGE_RTS = 2; //Санкт-Петербургская биржа.
REAL_EXCHANGE_OTC = 3; //Внебиржевой инструмент.
+ REAL_EXCHANGE_DEALER = 4; //Инструмент, торгуемый на площадке брокера.
}
//Запрос справочника стран.
@@ -1002,6 +1119,28 @@ message GetCountriesResponse {
repeated CountryResponse countries = 1; //Массив стран.
}
+//Запрос справочника индексов и товаров
+message IndicativesRequest {}
+
+//Справочник индексов и товаров
+message IndicativesResponse {
+ repeated IndicativeResponse instruments = 1; // Массив инструментов.
+};
+
+//Индикатив
+message IndicativeResponse {
+ string figi = 1; // FIGI-идентификатор инструмента.
+ string ticker = 2; // Тикер инструмента.
+ string class_code = 3; // Класс-код инструмента.
+ string currency = 4; // Валюта расчётов.
+ InstrumentType instrument_kind = 10; //Тип инструмента.
+ string name = 12; // Название инструмента.
+ string exchange = 13; // Tорговая площадка (секция биржи).
+ string uid = 14; // Уникальный идентификатор инструмента.
+ bool buy_available_flag = 404; // Признак доступности для покупки.
+ bool sell_available_flag = 405; // Признак доступности для продажи.
+}
+
//Данные о стране.
message CountryResponse {
string alfa_two = 1; //Двухбуквенный код страны.
@@ -1012,9 +1151,9 @@ message CountryResponse {
//Запрос на поиск инструментов.
message FindInstrumentRequest {
- string query = 1; //Строка поиска.
- InstrumentType instrument_kind = 2; //Фильтр по типу инструмента.
- bool api_trade_available_flag = 3; //Фильтр для отображения только торговых инструментов.
+ string query = 1 [(google.api.field_behavior) = REQUIRED]; //Строка поиска.
+ optional InstrumentType instrument_kind = 2; //Фильтр по типу инструмента.
+ optional bool api_trade_available_flag = 3; //Фильтр для отображения только торговых инструментов.
}
//Результат поиска инструментов.
@@ -1024,40 +1163,241 @@ message FindInstrumentResponse {
//Краткая информация об инструменте.
message InstrumentShort {
- string isin = 1; //Isin инструмента.
- string figi = 2; //Figi инструмента.
+ string isin = 1; //ISIN инструмента.
+ string figi = 2; //FIGI инструмента.
string ticker = 3; //Ticker инструмента.
string class_code = 4; //ClassCode инструмента.
string instrument_type = 5; //Тип инструмента.
string name = 6; //Название инструмента.
string uid = 7; //Уникальный идентификатор инструмента.
string position_uid = 8; //Уникальный идентификатор позиции инструмента.
- InstrumentType instrument_kind = 10; //Тип инструмента.
- bool api_trade_available_flag = 11; //Параметр указывает на возможность торговать инструментом через API.
+ InstrumentType instrument_kind = 10; //Тип инструмента.
+ bool api_trade_available_flag = 11; //Возможность торговать инструментом через API.
bool for_iis_flag = 12; //Признак доступности для ИИС.
google.protobuf.Timestamp first_1min_candle_date = 26; //Дата первой минутной свечи.
google.protobuf.Timestamp first_1day_candle_date = 27; //Дата первой дневной свечи.
- bool for_qual_investor_flag = 28; //Флаг отображающий доступность торговли инструментом только для квалифицированных инвесторов.
- bool weekend_flag = 29; //Флаг отображающий доступность торговли инструментом по выходным
- bool blocked_tca_flag = 30; //Флаг заблокированного ТКС
+ bool for_qual_investor_flag = 28; //Флаг, отображающий доступность торговли инструментом только для квалифицированных инвесторов.
+ bool weekend_flag = 29; //Флаг, отображающий доступность торговли инструментом по выходным.
+ bool blocked_tca_flag = 30; //Флаг заблокированного ТКС.
+ int32 lot = 31; //Количество бумаг в лоте.
}
//Запрос списка брендов.
-message GetBrandsRequest {}
+message GetBrandsRequest {
+ Page paging = 1; //Настройки пагинации.
+}
//Запрос бренда.
message GetBrandRequest {
- string id = 1; //Uid-идентификатор бренда.
+ string id = 1 [(google.api.field_behavior) = REQUIRED]; //UID-идентификатор бренда.
}
//Список брендов.
message GetBrandsResponse {
repeated Brand brands = 1; //Массив брендов.
+ PageResponse paging = 2; //Данные по пагинации.
+}
+
+//Запрос фундаментальных показателей
+message GetAssetFundamentalsRequest {
+ repeated string assets = 1 [(google.api.field_behavior) = REQUIRED]; //Массив идентификаторов активов, не более 100 шт.
+}
+
+//Фундаментальные показатели
+message GetAssetFundamentalsResponse {
+ repeated StatisticResponse fundamentals = 1;
+
+ //Фундаментальные показатели по активу
+ message StatisticResponse {
+ string asset_uid = 1; //Идентификатор актива.
+ string currency = 2; //Валюта.
+ double market_capitalization = 3; //Рыночная капитализация.
+ double high_price_last_52_weeks = 4; //Максимум за год.
+ double low_price_last_52_weeks = 5; //Минимум за год.
+ double average_daily_volume_last_10_days = 6; //Средний объём торгов за 10 дней.
+ double average_daily_volume_last_4_weeks = 7; //Средний объём торгов за месяц.
+ double beta = 8;
+ double free_float = 9; //Доля акций в свободном обращении.
+ double forward_annual_dividend_yield = 10; //Процент форвардной дивидендной доходности по отношению к цене акций.
+ double shares_outstanding = 11; //Количество акций в обращении.
+ double revenue_ttm = 12; //Выручка.
+ double ebitda_ttm = 13; //EBITDA — прибыль до вычета процентов, налогов, износа и амортизации.
+ double net_income_ttm = 14; //Чистая прибыль.
+ double eps_ttm = 15; //EPS — величина чистой прибыли компании, которая приходится на каждую обыкновенную акцию.
+ double diluted_eps_ttm = 16; //EPS компании с допущением, что все конвертируемые ценные бумаги компании были сконвертированы в обыкновенные акции.
+ double free_cash_flow_ttm = 17; //Свободный денежный поток.
+ double five_year_annual_revenue_growth_rate = 18; //Среднегодовой рocт выручки за 5 лет.
+ double three_year_annual_revenue_growth_rate = 19; //Среднегодовой рocт выручки за 3 года.
+ double pe_ratio_ttm = 20; //Соотношение рыночной капитализации компании к её чистой прибыли.
+ double price_to_sales_ttm = 21; //Соотношение рыночной капитализации компании к её выручке.
+ double price_to_book_ttm = 22; //Соотношение рыночной капитализации компании к её балансовой стоимости.
+ double price_to_free_cash_flow_ttm = 23; //Соотношение рыночной капитализации компании к её свободному денежному потоку.
+ double total_enterprise_value_mrq = 24; //Рыночная стоимость компании.
+ double ev_to_ebitda_mrq = 25; //Соотношение EV и EBITDA.
+ double net_margin_mrq = 26; //Маржа чистой прибыли.
+ double net_interest_margin_mrq = 27; //Рентабельность чистой прибыли.
+ double roe = 28; //Рентабельность собственного капитала.
+ double roa = 29; //Рентабельность активов.
+ double roic = 30; //Рентабельность активов.
+ double total_debt_mrq = 31; //Сумма краткосрочных и долгосрочных обязательств компании.
+ double total_debt_to_equity_mrq = 32; //Соотношение долга к собственному капиталу.
+ double total_debt_to_ebitda_mrq = 33; //Total Debt/EBITDA.
+ double free_cash_flow_to_price = 34; //Отношение свободногоо кэша к стоимости.
+ double net_debt_to_ebitda = 35; //Отношение чистого долга к EBITDA.
+ double current_ratio_mrq = 36; //Коэффициент текущей ликвидности.
+ double fixed_charge_coverage_ratio_fy = 37; //Коэффициент покрытия фиксированных платежей — FCCR.
+ double dividend_yield_daily_ttm = 38; //Дивидендная доходность за 12 месяцев.
+ double dividend_rate_ttm = 39; //Выплаченные дивиденды за 12 месяцев.
+ double dividends_per_share = 40; //Значение дивидендов на акцию.
+ double five_years_average_dividend_yield = 41; //Средняя дивидендная доходность за 5 лет.
+ double five_year_annual_dividend_growth_rate = 42; //Среднегодовой рост дивидендов за 5 лет.
+ double dividend_payout_ratio_fy = 43; //Процент чистой прибыли, уходящий на выплату дивидендов.
+ double buy_back_ttm = 44; //Деньги, потраченные на обратный выкуп акций.
+ double one_year_annual_revenue_growth_rate = 45; //Рост выручки за 1 год.
+ string domicile_indicator_code = 46; //Код страны.
+ double adr_to_common_share_ratio = 47; //Соотношение депозитарной расписки к акциям.
+ double number_of_employees = 48; //Количество сотрудников.
+ google.protobuf.Timestamp ex_dividend_date = 49;
+ google.protobuf.Timestamp fiscal_period_start_date = 50; //Начало фискального периода.
+ google.protobuf.Timestamp fiscal_period_end_date = 51; //Окончание фискального периода.
+ double revenue_change_five_years = 53; //Изменение общего дохода за 5 лет.
+ double eps_change_five_years = 54; //Изменение EPS за 5 лет.
+ double ebitda_change_five_years = 55; //Изменение EBIDTA за 5 лет.
+ double total_debt_change_five_years = 56; //Изменение общей задолжности за 5 лет.
+ double ev_to_sales = 57; //Отношение EV к выручке.
+ }
+
+}
+
+//Запрос отчетов эмитентов
+message GetAssetReportsRequest {
+ string instrument_id = 1 [(google.api.field_behavior) = REQUIRED]; //Идентификатор инструмента в формате UID.
+ optional google.protobuf.Timestamp from = 2; //Начало запрашиваемого периода по UTC.
+ optional google.protobuf.Timestamp to = 3; //Окончание запрашиваемого периода по UTC.
+}
+
+//Отчеты эмитентов
+message GetAssetReportsResponse {
+ repeated GetAssetReportsEvent events = 1; // Массив событий по облигации.
+
+ //Отчет
+ message GetAssetReportsEvent {
+ string instrument_id = 1; // Идентификатор инструмента.
+ google.protobuf.Timestamp report_date = 2; // Дата публикации отчёта.
+ int32 period_year = 3; // Год периода отчета.
+ int32 period_num = 4; // Номер периода.
+ AssetReportPeriodType period_type = 5; // Тип отчёта.
+ google.protobuf.Timestamp created_at = 6; // Дата создания записи.
+ }
+
+ enum AssetReportPeriodType {
+ PERIOD_TYPE_UNSPECIFIED = 0; // Не указан.
+ PERIOD_TYPE_QUARTER = 1; // Квартальный.
+ PERIOD_TYPE_SEMIANNUAL = 2; // Полугодовой.
+ PERIOD_TYPE_ANNUAL = 3; // Годовой.
+ }
+}
+
+//Запрос консенсус-прогнозов
+message GetConsensusForecastsRequest {
+ optional Page paging = 1; //Настройки пагинации.
+}
+
+//Консенсус-прогнозы
+message GetConsensusForecastsResponse {
+ repeated ConsensusForecastsItem items = 1; // Массив прогнозов.
+ PageResponse page = 2; //Данные по пагинации.
+
+ //Прогноз
+ message ConsensusForecastsItem {
+ string uid = 1; // UID-идентификатор.
+ string asset_uid = 2; // UID-идентификатор актива.
+ google.protobuf.Timestamp created_at = 3; // Дата и время создания записи.
+ Quotation best_target_price = 4; // Целевая цена на 12 месяцев.
+ Quotation best_target_low = 5; // Минимальная прогнозная цена.
+ Quotation best_target_high = 6; // Максимальная прогнозная цена.
+ int32 total_buy_recommend = 7; // Количество аналитиков рекомендующих покупать.
+ int32 total_hold_recommend = 8; // Количество аналитиков рекомендующих держать.
+ int32 total_sell_recommend = 9; // Количество аналитиков рекомендующих продавать.
+ string currency = 10; // Валюта прогнозов инструмента.
+ Recommendation consensus = 11; // Консенсус-прогноз.
+ google.protobuf.Timestamp prognosis_date = 12; // Дата прогноза.
+ }
+
+}
+
+enum Recommendation {
+ RECOMMENDATION_UNSPECIFIED = 0; // Не определено.
+ RECOMMENDATION_BUY = 1; // Покупать.
+ RECOMMENDATION_HOLD = 2; // Держать.
+ RECOMMENDATION_SELL = 3; // Продавать.
+}
+
+//Запрос прогнозов инвестдомов.
+message GetForecastRequest {
+ string instrument_id = 1; // Идентификатор инструмента.
+}
+
+//Прогнозы инвестдомов по инструменту.
+message GetForecastResponse {
+ repeated TargetItem targets = 1; //Массив прогнозов.
+ ConsensusItem consensus = 2; // Согласованный прогноз.
+
+ //Прогноз
+ message TargetItem {
+ string uid = 1; // Уникальный идентификатор инструмента.
+ string ticker = 2; // Тикер инструмента.
+ string company = 3; // Название компании, давшей прогноз.
+ Recommendation recommendation = 4; // Прогноз.
+ google.protobuf.Timestamp recommendation_date = 5; //Дата прогноза.
+ string currency = 6; // Валюта.
+ Quotation current_price = 7; // Текущая цена.
+ Quotation target_price = 8; // Прогнозируемая цена.
+ Quotation price_change = 9; // Изменение цены.
+ Quotation price_change_rel = 10; // Относительное изменение цены.
+ string show_name = 11; // Наименование инструмента.
+ }
+
+ //Консенсус-прогноз.
+ message ConsensusItem {
+ string uid = 1; // Уникальный идентификатор инструмента.
+ string ticker = 2; // Тикер инструмента.
+ Recommendation recommendation = 3; // Прогноз.
+ string currency = 4; // Валюта.
+ Quotation current_price = 5; // Текущая цена.
+ Quotation consensus = 6; // Прогнозируемая цена.
+ Quotation min_target = 7; // Минимальная цена прогноза.
+ Quotation max_target = 8; // Максимальная цена прогноза.
+ Quotation price_change = 9; // Изменение цены.
+ Quotation price_change_rel = 10; // Относительное изменение цены.
+ }
+}
+
+message TradingInterval {
+ string type = 1; //Название интервала.
+ TimeInterval interval = 2; //Интервал.
+
+ message TimeInterval {
+ google.protobuf.Timestamp start_ts = 1; // Время начала интервала.
+ google.protobuf.Timestamp end_ts = 2; // Время окончания интервала.
+ }
}
//Уровень риска облигации.
enum RiskLevel {
- RISK_LEVEL_HIGH = 0; //Высокий уровень риска
- RISK_LEVEL_MODERATE = 1; //Средний уровень риска
- RISK_LEVEL_LOW = 2; //Низкий уровень риска
+ RISK_LEVEL_UNSPECIFIED = 0; //Не указан.
+ RISK_LEVEL_LOW = 1; //Низкий уровень риска.
+ RISK_LEVEL_MODERATE = 2; //Средний уровень риска.
+ RISK_LEVEL_HIGH = 3; //Высокий уровень риска.
+}
+
+enum BondType {
+ BOND_TYPE_UNSPECIFIED = 0; // Тип облигации не определён.
+ BOND_TYPE_REPLACED = 1; // Замещающая облигация.
+}
+
+// Площадка торговли.
+enum InstrumentExchangeType {
+ INSTRUMENT_EXCHANGE_UNSPECIFIED = 0; // Площадка торговли не определена.
+ INSTRUMENT_EXCHANGE_DEALER = 1; // Бумага, торгуемая у дилера.
}
diff --git a/investAPI-main/src/docs/contracts/marketdata.proto b/investAPI-main/src/docs/contracts/marketdata.proto
index 9e98b4b..8300f0c 100644
--- a/investAPI-main/src/docs/contracts/marketdata.proto
+++ b/investAPI-main/src/docs/contracts/marketdata.proto
@@ -11,33 +11,37 @@ option php_namespace = "Tinkoff\\Invest\\V1";
import "google/protobuf/timestamp.proto";
import "common.proto";
+import "google/api/field_behavior.proto";
-service MarketDataService { //Сервис получения биржевой информации: **1**. свечи; **2**. стаканы; **3**. торговые статусы; **4**. лента сделок.
+service MarketDataService {//Сервис для получения биржевой информации: 1. Свечи. 2. Стаканы. 3. Торговые статусы. 4. Лента сделок.
- //Метод запроса исторических свечей по инструменту.
+ //Запросить исторические свечи по инструменту.
rpc GetCandles(GetCandlesRequest) returns (GetCandlesResponse);
- //Метод запроса цен последних сделок по инструментам.
+ //Запросить цены последних сделок по инструментам.
rpc GetLastPrices(GetLastPricesRequest) returns (GetLastPricesResponse);
- //Метод получения стакана по инструменту.
+ //Получить стакан по инструменту.
rpc GetOrderBook(GetOrderBookRequest) returns (GetOrderBookResponse);
- //Метод запроса статуса торгов по инструментам.
+ //Запросить статус торгов по инструментам.
rpc GetTradingStatus(GetTradingStatusRequest) returns (GetTradingStatusResponse);
- //Метод запроса статуса торгов по инструментам.
+ //Запросить статус торгов по инструментам.
rpc GetTradingStatuses(GetTradingStatusesRequest) returns (GetTradingStatusesResponse);
- //Метод запроса обезличенных сделок за последний час.
+ //Запросить обезличенные сделки за последний час.
rpc GetLastTrades(GetLastTradesRequest) returns (GetLastTradesResponse);
- //Метод запроса цен закрытия торговой сессии по инструментам.
+ //Запросить цены закрытия торговой сессии по инструментам.
rpc GetClosePrices(GetClosePricesRequest) returns (GetClosePricesResponse);
+
+ //Получить технические индикаторы по инструменту.
+ rpc GetTechAnalysis(GetTechAnalysisRequest) returns (GetTechAnalysisResponse);
}
service MarketDataStreamService {
- //Bi-directional стрим предоставления биржевой информации.
+ //Bidirectional-стрим предоставления биржевой информации.
rpc MarketDataStream(stream MarketDataRequest) returns (stream MarketDataResponse);
//Server-side стрим предоставления биржевой информации.
@@ -53,6 +57,8 @@ message MarketDataRequest {
SubscribeInfoRequest subscribe_info_request = 4; //Запрос подписки на торговые статусы инструментов.
SubscribeLastPriceRequest subscribe_last_price_request = 5; //Запрос подписки на цены последних сделок.
GetMySubscriptions get_my_subscriptions = 6; //Запрос своих подписок.
+ PingRequest ping = 7; //Запрос проверки активности соединения.
+ PingDelaySettings ping_settings = 15; //Запрос настройки пинга.
}
}
@@ -62,6 +68,7 @@ message MarketDataServerSideStreamRequest {
SubscribeTradesRequest subscribe_trades_request = 3; //Запрос подписки на ленту обезличенных сделок.
SubscribeInfoRequest subscribe_info_request = 4; //Запрос подписки на торговые статусы инструментов.
SubscribeLastPriceRequest subscribe_last_price_request = 5; //Запрос подписки на цены последних сделок.
+ PingDelaySettings ping_settings = 15; //Запрос настройки пинга.
}
//Пакет биржевой информации по подписке.
@@ -85,7 +92,8 @@ message MarketDataResponse {
message SubscribeCandlesRequest {
SubscriptionAction subscription_action = 1; //Изменение статуса подписки.
repeated CandleInstrument instruments = 2; //Массив инструментов для подписки на свечи.
- bool waiting_close = 3; //Флаг ожидания закрытия временного интервала для отправки свечи, применяется только для минутных свечей.
+ bool waiting_close = 3; //Флаг ожидания закрытия временного интервала для отправки свечи.
+ optional GetCandlesRequest.CandleSource candle_source_type = 9; //Источник свечей.
}
//Тип операции со списком подписок.
@@ -100,27 +108,42 @@ enum SubscriptionInterval {
SUBSCRIPTION_INTERVAL_UNSPECIFIED = 0; //Интервал свечи не определён.
SUBSCRIPTION_INTERVAL_ONE_MINUTE = 1; //Минутные свечи.
SUBSCRIPTION_INTERVAL_FIVE_MINUTES = 2; //Пятиминутные свечи.
+ SUBSCRIPTION_INTERVAL_FIFTEEN_MINUTES = 3; //Пятнадцатиминутные свечи.
+ SUBSCRIPTION_INTERVAL_ONE_HOUR = 4; //Часовые свечи.
+ SUBSCRIPTION_INTERVAL_ONE_DAY = 5; //Дневные свечи.
+ SUBSCRIPTION_INTERVAL_2_MIN = 6; //Двухминутные свечи.
+ SUBSCRIPTION_INTERVAL_3_MIN = 7; //Трёхминутные свечи.
+ SUBSCRIPTION_INTERVAL_10_MIN = 8; //Десятиминутные свечи.
+ SUBSCRIPTION_INTERVAL_30_MIN = 9; //Тридцатиминутные свечи.
+ SUBSCRIPTION_INTERVAL_2_HOUR = 10; //Двухчасовые свечи.
+ SUBSCRIPTION_INTERVAL_4_HOUR = 11; //Четырёхчасовые свечи.
+ SUBSCRIPTION_INTERVAL_WEEK = 12; //Недельные свечи.
+ SUBSCRIPTION_INTERVAL_MONTH = 13; //Месячные свечи.
}
//Запрос изменения статус подписки на свечи.
message CandleInstrument {
- string figi = 1 [ deprecated = true ]; // Deprecated Figi-идентификатор инструмента. Необходимо использовать instrument_id.
- SubscriptionInterval interval = 2; //Интервал свечей.
- string instrument_id = 3; //Идентификатор инструмента, принимает значение figi или instrument_uid
+ string figi = 1 [deprecated = true]; // Deprecated FIGI-идентификатор инструмента. Используйте `instrument_id`.
+ SubscriptionInterval interval = 2; //Интервал свечей. Двухчасовые и четырёхчасовые свечи в стриме отсчитываются с 0:00 по UTC.
+ string instrument_id = 3; //Идентификатор инструмента. Принимает значение `figi` или `instrument_uid`.
}
//Результат изменения статус подписки на свечи.
message SubscribeCandlesResponse {
- string tracking_id = 1; //Уникальный идентификатор запроса, подробнее: [tracking_id](https://tinkoff.github.io/investAPI/grpc#tracking-id).
+ string tracking_id = 1; //Уникальный идентификатор запроса. [Подробнее](https://russianinvestments.github.io/investAPI/grpc#tracking-id).
repeated CandleSubscription candles_subscriptions = 2; //Массив статусов подписки на свечи.
}
//Статус подписки на свечи.
message CandleSubscription {
- string figi = 1; //Figi-идентификатор инструмента.
+ string figi = 1; //FIGI-идентификатор инструмента.
SubscriptionInterval interval = 2; //Интервал свечей.
SubscriptionStatus subscription_status = 3; //Статус подписки.
- string instrument_uid = 4; //Uid инструмента
+ string instrument_uid = 4; //UID инструмента.
+ bool waiting_close = 5; //Флаг ожидания закрытия временного интервала для отправки свечи.
+ string stream_id = 6; //Идентификатор открытого соединения.
+ string subscription_id = 7; //Идентификатор подписки в формате `UUID`.
+ optional GetCandlesRequest.CandleSource candle_source_type = 9; //Источник свечей.
}
//Результат подписки.
@@ -128,13 +151,14 @@ enum SubscriptionStatus {
SUBSCRIPTION_STATUS_UNSPECIFIED = 0; //Статус подписки не определён.
SUBSCRIPTION_STATUS_SUCCESS = 1; //Успешно.
SUBSCRIPTION_STATUS_INSTRUMENT_NOT_FOUND = 2; //Инструмент не найден.
- SUBSCRIPTION_STATUS_SUBSCRIPTION_ACTION_IS_INVALID = 3; //Некорректный статус подписки, список возможных значений: [SubscriptionAction](https://tinkoff.github.io/investAPI/marketdata#subscriptionaction).
- SUBSCRIPTION_STATUS_DEPTH_IS_INVALID = 4; //Некорректная глубина стакана, доступные значения: 1, 10, 20, 30, 40, 50.
- SUBSCRIPTION_STATUS_INTERVAL_IS_INVALID = 5; //Некорректный интервал свечей, список возможных значений: [SubscriptionInterval](https://tinkoff.github.io/investAPI/marketdata#subscriptioninterval).
- SUBSCRIPTION_STATUS_LIMIT_IS_EXCEEDED = 6; //Превышен лимит на общее количество подписок в рамках стрима, подробнее: [Лимитная политика](https://tinkoff.github.io/investAPI/limits/).
+ SUBSCRIPTION_STATUS_SUBSCRIPTION_ACTION_IS_INVALID = 3; //Некорректный статус подписки. [Список возможных значений](https://russianinvestments.github.io/investAPI/marketdata#subscriptionaction).
+ SUBSCRIPTION_STATUS_DEPTH_IS_INVALID = 4; //Некорректная глубина стакана. Доступные значения — 1, 10, 20, 30, 40, 50.
+ SUBSCRIPTION_STATUS_INTERVAL_IS_INVALID = 5; //Некорректный интервал свечей. [Список возможных значений](https://russianinvestments.github.io/investAPI/marketdata#subscriptioninterval).
+ SUBSCRIPTION_STATUS_LIMIT_IS_EXCEEDED = 6; //Превышен лимит на общее количество подписок в рамках стрима. [Лимитная политика](https://russianinvestments.github.io/investAPI/limits/).
SUBSCRIPTION_STATUS_INTERNAL_ERROR = 7; //Внутренняя ошибка сервиса.
- SUBSCRIPTION_STATUS_TOO_MANY_REQUESTS = 8; //Превышен лимит на количество запросов на подписки в течение установленного отрезка времени
- SUBSCRIPTION_STATUS_SUBSCRIPTION_NOT_FOUND = 9; // Активная подписка не найдена. Ошибка может возникнуть только при отписке от не существующей отписки
+ SUBSCRIPTION_STATUS_TOO_MANY_REQUESTS = 8; //Превышен лимит на количество запросов на подписки в течение установленного отрезка времени.
+ SUBSCRIPTION_STATUS_SUBSCRIPTION_NOT_FOUND = 9; // Активная подписка не найдена. Ошибка может возникнуть только при отписке от несуществующей подписки.
+ SUBSCRIPTION_STATUS_SOURCE_IS_INVALID = 10; //Указан некорректный источник
}
//Запрос на изменение статуса подписки на стаканы.
@@ -145,48 +169,64 @@ message SubscribeOrderBookRequest {
//Запрос подписки на стаканы.
message OrderBookInstrument {
- string figi = 1 [ deprecated = true ]; //Deprecated Figi-идентификатор инструмента. Необходимо использовать instrument_id.
+ string figi = 1 [deprecated = true]; //Deprecated FIGI-идентификатор инструмента. Используйте `instrument_id`.
int32 depth = 2; //Глубина стакана.
- string instrument_id = 3; //Идентификатор инструмента, принимает значение figi или instrument_uid
+ string instrument_id = 3; //Идентификатор инструмента. Принимает значение `figi` или `instrument_uid`.
+ OrderBookType order_book_type = 4; //Тип стакана. По умолчанию ORDERBOOK_TYPE_ALL - стакан биржевой и дилера.
}
//Результат изменения статуса подписки на стаканы.
message SubscribeOrderBookResponse {
- string tracking_id = 1; //Уникальный идентификатор запроса, подробнее: [tracking_id](https://tinkoff.github.io/investAPI/grpc#tracking-id).
+ string tracking_id = 1; //Уникальный идентификатор запроса. [Подробнее](https://russianinvestments.github.io/investAPI/grpc#tracking-id).
repeated OrderBookSubscription order_book_subscriptions = 2; //Массив статусов подписки на стаканы.
}
//Статус подписки.
message OrderBookSubscription {
- string figi = 1; //Figi-идентификатор инструмента.
+ string figi = 1; //FIGI-идентификатор инструмента.
int32 depth = 2; //Глубина стакана.
SubscriptionStatus subscription_status = 3; //Статус подписки.
- string instrument_uid = 4; //Uid инструмента
+ string instrument_uid = 4; //UID инструмента.
+ string stream_id = 5; //Идентификатор открытого соединения.
+ string subscription_id = 6; //Идентификатор подписки в формате `UUID`.
+ OrderBookType order_book_type = 7; //Тип стакана.
+}
+
+//Типы источников сделок.
+enum TradeSourceType {
+ TRADE_SOURCE_UNSPECIFIED = 0; //Тип источника сделки не определён.
+ TRADE_SOURCE_EXCHANGE = 1; // Биржевые сделки.
+ TRADE_SOURCE_DEALER = 2; // Сделки дилера.
+ TRADE_SOURCE_ALL = 3; // Все сделки.
}
//Изменение статуса подписки на поток обезличенных сделок.
message SubscribeTradesRequest {
SubscriptionAction subscription_action = 1; //Изменение статуса подписки.
repeated TradeInstrument instruments = 2; //Массив инструментов для подписки на поток обезличенных сделок.
+ TradeSourceType trade_source = 3; //Тип источника сделок. По умолчанию TRADE_SOURCE_ALL - все сделки.
}
//Запрос подписки на поток обезличенных сделок.
message TradeInstrument {
- string figi = 1 [ deprecated = true ]; //Deprecated Figi-идентификатор инструмента. Необходимо использовать instrument_id.
- string instrument_id = 2; //Идентификатор инструмента, принимает значение figi или instrument_uid
+ string figi = 1 [deprecated = true]; //Deprecated FIGI-идентификатор инструмента. Используйте instrument_id`.
+ string instrument_id = 2; //Идентификатор инструмента. Принимает значение `figi` или `instrument_uid`.
}
//Результат изменения статуса подписки на поток обезличенных сделок.
message SubscribeTradesResponse {
- string tracking_id = 1; //Уникальный идентификатор запроса, подробнее: [tracking_id](https://tinkoff.github.io/investAPI/grpc#tracking-id).
+ string tracking_id = 1; //Уникальный идентификатор запроса. [Подробнее](https://russianinvestments.github.io/investAPI/grpc#tracking-id).
repeated TradeSubscription trade_subscriptions = 2; //Массив статусов подписки на поток сделок.
+ TradeSourceType trade_source = 3; //Тип источника сделок.
}
//Статус подписки.
message TradeSubscription {
- string figi = 1; //Figi-идентификатор инструмента.
+ string figi = 1; //FIGI-идентификатор инструмента.
SubscriptionStatus subscription_status = 2; //Статус подписки.
- string instrument_uid = 3; //Uid инструмента
+ string instrument_uid = 3; //UID инструмента.
+ string stream_id = 4; //Идентификатор открытого соединения.
+ string subscription_id = 5; //Идентификатор подписки в формате UUID.
}
//Изменение статуса подписки на торговый статус инструмента.
@@ -197,21 +237,23 @@ message SubscribeInfoRequest {
//Запрос подписки на торговый статус.
message InfoInstrument {
- string figi = 1 [ deprecated = true ]; //Deprecated Figi-идентификатор инструмента. Необходимо использовать instrument_id.
- string instrument_id = 2; //Идентификатор инструмента, принимает значение figi или instrument_uid
+ string figi = 1 [deprecated = true]; //Deprecated FIGI-идентификатор инструмента. Используйте instrument_id`.
+ string instrument_id = 2; //Идентификатор инструмента. Принимает значение `figi` или `instrument_uid`.
}
//Результат изменения статуса подписки на торговый статус.
message SubscribeInfoResponse {
- string tracking_id = 1; //Уникальный идентификатор запроса, подробнее: [tracking_id](https://tinkoff.github.io/investAPI/grpc#tracking-id).
+ string tracking_id = 1; //Уникальный идентификатор запроса. [Подробнее](https://russianinvestments.github.io/investAPI/grpc#tracking-id).
repeated InfoSubscription info_subscriptions = 2; //Массив статусов подписки на торговый статус.
}
//Статус подписки.
message InfoSubscription {
- string figi = 1; //Figi-идентификатор инструмента.
+ string figi = 1; //FIGI-идентификатор инструмента.
SubscriptionStatus subscription_status = 2; //Статус подписки.
- string instrument_uid = 3; //Uid инструмента
+ string instrument_uid = 3; //UID инструмента.
+ string stream_id = 4; //Идентификатор открытого соединения.
+ string subscription_id = 5; //Идентификатор подписки в формате UUID.
}
//Изменение статуса подписки на цену последней сделки по инструменту.
@@ -222,64 +264,69 @@ message SubscribeLastPriceRequest {
//Запрос подписки на последнюю цену.
message LastPriceInstrument {
- string figi = 1 [ deprecated = true ]; //Deprecated Figi-идентификатор инструмента. Необходимо использовать instrument_id.
- string instrument_id = 2; //Идентификатор инструмента, принимает значение figi или instrument_uid
+ string figi = 1 [deprecated = true]; //Deprecated FIGI-идентификатор инструмента. Используйте instrument_id`.
+ string instrument_id = 2; //Идентификатор инструмента. Принимает значение `figi` или `instrument_uid`.
}
//Результат изменения статуса подписки на цену последней сделки.
message SubscribeLastPriceResponse {
- string tracking_id = 1; //Уникальный идентификатор запроса, подробнее: [tracking_id](https://tinkoff.github.io/investAPI/grpc#tracking-id).
+ string tracking_id = 1; //Уникальный идентификатор запроса. [Подробнее](https://russianinvestments.github.io/investAPI/grpc#tracking-id).
repeated LastPriceSubscription last_price_subscriptions = 2; //Массив статусов подписки на цену последней сделки.
}
//Статус подписки на цену последней сделки.
message LastPriceSubscription {
- string figi = 1; //Figi-идентификатор инструмента.
+ string figi = 1; //FIGI-идентификатор инструмента.
SubscriptionStatus subscription_status = 2; //Статус подписки.
- string instrument_uid = 3; //Uid инструмента
+ string instrument_uid = 3; //UID инструмента.
+ string stream_id = 4; //Идентификатор открытого соединения.
+ string subscription_id = 5; //Идентификатор подписки в формате `UUID`.
}
//Пакет свечей в рамках стрима.
message Candle {
- string figi = 1; //Figi-идентификатор инструмента.
+ string figi = 1; //FIGI-идентификатор инструмента.
SubscriptionInterval interval = 2; //Интервал свечи.
- Quotation open = 3; //Цена открытия за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
- Quotation high = 4; //Максимальная цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
- Quotation low = 5; //Минимальная цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
- Quotation close = 6; //Цена закрытия за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
+ Quotation open = 3; //Цена открытия за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15).
+ Quotation high = 4; //Максимальная цена за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15).
+ Quotation low = 5; //Минимальная цена за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15).
+ Quotation close = 6; //Цена закрытия за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15).
int64 volume = 7; //Объём сделок в лотах.
- google.protobuf.Timestamp time = 8; //Время начала интервала свечи в часовом поясе UTC.
- google.protobuf.Timestamp last_trade_ts = 9; //Время последней сделки, вошедшей в свечу в часовом поясе UTC.
- string instrument_uid = 10; //Uid инструмента
+ google.protobuf.Timestamp time = 8; //Время начала интервала свечи по UTC.
+ google.protobuf.Timestamp last_trade_ts = 9; //Время последней сделки, вошедшей в свечу по UTC.
+ string instrument_uid = 10; //UID инструмента.
+ CandleSource candle_source_type = 19; //Источник свечей
}
//Пакет стаканов в рамках стрима.
message OrderBook {
- string figi = 1; //Figi-идентификатор инструмента.
+ string figi = 1; //FIGI-идентификатор инструмента.
int32 depth = 2; //Глубина стакана.
- bool is_consistent = 3; //Флаг консистентности стакана. **false** значит не все заявки попали в стакан по причинам сетевых задержек или нарушения порядка доставки.
+ bool is_consistent = 3; //Флаг консистентности стакана. **false** — не все заявки попали в стакан из-за сетевых задержек или нарушения порядка доставки.
repeated Order bids = 4; //Массив предложений.
repeated Order asks = 5; //Массив спроса.
google.protobuf.Timestamp time = 6; //Время формирования стакана в часовом поясе UTC по времени биржи.
- Quotation limit_up = 7; //Верхний лимит цены за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
- Quotation limit_down = 8; //Нижний лимит цены за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
- string instrument_uid = 9; //Uid инструмента
+ Quotation limit_up = 7; //Верхний лимит цены за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15).
+ Quotation limit_down = 8; //Нижний лимит цены за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15).
+ string instrument_uid = 9; //UID инструмента.
+ OrderBookType order_book_type = 10; //Тип стакана.
}
//Массив предложений/спроса.
message Order {
- Quotation price = 1; //Цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
+ Quotation price = 1; //Цена за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15).
int64 quantity = 2; //Количество в лотах.
}
//Информация о сделке.
message Trade {
- string figi = 1; //Figi-идентификатор инструмента.
+ string figi = 1; //FIGI-идентификатор инструмента.
TradeDirection direction = 2; //Направление сделки.
- Quotation price = 3; //Цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
+ Quotation price = 3; //Цена за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15).
int64 quantity = 4; //Количество лотов.
google.protobuf.Timestamp time = 5; //Время сделки в часовом поясе UTC по времени биржи.
- string instrument_uid = 6; //Uid инструмента
+ string instrument_uid = 6; //UID инструмента.
+ TradeSourceType trade_source = 7; //Тип источника сделки.
}
//Направление сделки.
@@ -291,39 +338,53 @@ enum TradeDirection {
//Пакет изменения торгового статуса.
message TradingStatus {
- string figi = 1; //Figi-идентификатор инструмента.
+ string figi = 1; //FIGI-идентификатор инструмента.
SecurityTradingStatus trading_status = 2; //Статус торговли инструментом.
- google.protobuf.Timestamp time = 3; //Время изменения торгового статуса в часовом поясе UTC.
+ google.protobuf.Timestamp time = 3; //Время изменения торгового статуса по UTC.
bool limit_order_available_flag = 4; //Признак доступности выставления лимитной заявки по инструменту.
bool market_order_available_flag = 5; //Признак доступности выставления рыночной заявки по инструменту.
- string instrument_uid = 6; //Uid инструмента
+ string instrument_uid = 6; //UID инструмента.
}
//Запрос исторических свечей.
message GetCandlesRequest {
- string figi = 1 [ deprecated = true ]; //Deprecated Figi-идентификатор инструмента. Необходимо использовать instrument_id.
- google.protobuf.Timestamp from = 2; //Начало запрашиваемого периода в часовом поясе UTC.
- google.protobuf.Timestamp to = 3; //Окончание запрашиваемого периода в часовом поясе UTC.
- CandleInterval interval = 4; //Интервал запрошенных свечей.
- string instrument_id = 5; //Идентификатор инструмента, принимает значение figi или instrument_uid.
+ optional string figi = 1 [deprecated = true]; //Deprecated FIGI-идентификатор инструмента. Используйте `instrument_id`.
+ google.protobuf.Timestamp from = 2 [(google.api.field_behavior) = REQUIRED]; //Начало запрашиваемого периода по UTC.
+ google.protobuf.Timestamp to = 3 [(google.api.field_behavior) = REQUIRED]; //Окончание запрашиваемого периода по UTC.
+ CandleInterval interval = 4 [(google.api.field_behavior) = REQUIRED]; //Интервал запрошенных свечей.
+ optional string instrument_id = 5; //Идентификатор инструмента. Принимает значение `figi` или `instrument_uid`.
+ optional CandleSource candle_source_type = 7; //Тип источника свечи.
+ optional int32 limit = 10; //Максимальное количество свечей в ответе.
+
+ enum CandleSource {
+ CANDLE_SOURCE_UNSPECIFIED = 0; //Все свечи.
+ CANDLE_SOURCE_EXCHANGE = 1; //Биржевые свечи.
+ CANDLE_SOURCE_INCLUDE_WEEKEND = 3; //Все свечи с учетом торговли по выходным.
+ }
}
-//Интервал свечей.
+//Интервал свечей. Максимальное значение интервала приведено ориентировочно, может отличаться в большую сторону в зависимости от параметров запроса.
enum CandleInterval {
CANDLE_INTERVAL_UNSPECIFIED = 0; //Интервал не определён.
- CANDLE_INTERVAL_1_MIN = 1; //от 1 минуты до 1 дня.
- CANDLE_INTERVAL_5_MIN = 2; //от 5 минут до 1 дня.
- CANDLE_INTERVAL_15_MIN = 3; //от 15 минут до 1 дня.
- CANDLE_INTERVAL_HOUR = 4; //от 1 часа до 1 недели.
- CANDLE_INTERVAL_DAY = 5; //от 1 дня до 1 года.
- CANDLE_INTERVAL_2_MIN = 6; //от 2 минут до 1 дня.
- CANDLE_INTERVAL_3_MIN = 7; //от 3 минут до 1 дня.
- CANDLE_INTERVAL_10_MIN = 8; //от 10 минут до 1 дня.
- CANDLE_INTERVAL_30_MIN = 9; //от 30 минут до 2 дней.
- CANDLE_INTERVAL_2_HOUR = 10; //от 2 часов до 1 месяца.
- CANDLE_INTERVAL_4_HOUR = 11; //от 4 часов до 1 месяца.
- CANDLE_INTERVAL_WEEK = 12; //от 1 недели до 2 лет.
- CANDLE_INTERVAL_MONTH = 13; //от 1 месяца до 10 лет.
+ CANDLE_INTERVAL_1_MIN = 1; //От 1 минуты до 1 дня (лимит 2400).
+ CANDLE_INTERVAL_5_MIN = 2; //От 5 минут до недели (лимит 2400).
+ CANDLE_INTERVAL_15_MIN = 3; //От 15 минут до 3 недель (лимит 2400).
+ CANDLE_INTERVAL_HOUR = 4; //От 1 часа до 3 месяцев (лимит 2400).
+ CANDLE_INTERVAL_DAY = 5; //От 1 дня до 6 лет (лимит 2400).
+ CANDLE_INTERVAL_2_MIN = 6; //От 2 минут до 1 дня (лимит 1200).
+ CANDLE_INTERVAL_3_MIN = 7; //От 3 минут до 1 дня (лимит 750).
+ CANDLE_INTERVAL_10_MIN = 8; //От 10 минут до недели (лимит 1200).
+ CANDLE_INTERVAL_30_MIN = 9; //От 30 минут до 3 недель (лимит 1200).
+ CANDLE_INTERVAL_2_HOUR = 10; //От 2 часов до 3 месяцев (лимит 2400).
+ CANDLE_INTERVAL_4_HOUR = 11; //От 4 часов до 3 месяцев (лимит 700).
+ CANDLE_INTERVAL_WEEK = 12; //От 1 недели до 5 лет (лимит 300).
+ CANDLE_INTERVAL_MONTH = 13; //От 1 месяца до 10 лет (лимит 120).
+}
+
+enum CandleSource {
+ CANDLE_SOURCE_UNSPECIFIED = 0; //Источник свечей не определён.
+ CANDLE_SOURCE_EXCHANGE = 1; //Биржевые свечи.
+ CANDLE_SOURCE_DEALER_WEEKEND = 2; //Свечи дилера в результате торговли по выходным.
}
//Список свечей.
@@ -333,19 +394,22 @@ message GetCandlesResponse {
//Информация о свече.
message HistoricCandle {
- Quotation open = 1; //Цена открытия за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
- Quotation high = 2; //Максимальная цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
- Quotation low = 3; //Минимальная цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
- Quotation close = 4; //Цена закрытия за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
+ Quotation open = 1; //Цена открытия за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15).
+ Quotation high = 2; //Максимальная цена за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15).
+ Quotation low = 3; //Минимальная цена за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15).
+ Quotation close = 4; //Цена закрытия за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15).
int64 volume = 5; //Объём торгов в лотах.
google.protobuf.Timestamp time = 6; //Время свечи в часовом поясе UTC.
- bool is_complete = 7; //Признак завершённости свечи. **false** значит, свеча за текущие интервал ещё сформирована не полностью.
+ bool is_complete = 7; //Признак завершённости свечи. **false** — свеча за текущие интервал ещё сформирована не полностью.
+ CandleSource candle_source_type = 9; //Тип источника свечи
}
//Запрос получения цен последних сделок.
message GetLastPricesRequest {
- repeated string figi = 1 [ deprecated = true ]; //Deprecated Figi-идентификатор инструмента. Необходимо использовать instrument_id.
- repeated string instrument_id = 2; //Массив идентификаторов инструмента, принимает значения figi или instrument_uid.
+ repeated string figi = 1 [deprecated = true]; //Deprecated FIGI-идентификатор инструмента. Используйте `instrument_id`.
+ repeated string instrument_id = 2; //Массив идентификаторов инструмента. Принимает значения `figi` или `instrument_uid`.
+ LastPriceType last_price_type = 3; //Тип запрашиваемой последней цены.
+ optional InstrumentStatus instrument_status = 9; //Статус запрашиваемых инструментов. [Возможные значения](#instrumentstatus).
}
//Список цен последних сделок.
@@ -355,67 +419,72 @@ message GetLastPricesResponse {
//Информация о цене последней сделки.
message LastPrice {
- string figi = 1; //Figi инструмента.
- Quotation price = 2; //Цена последней сделки за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
+ string figi = 1; //FIGI инструмента.
+ Quotation price = 2; //Цена последней сделки за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15).
google.protobuf.Timestamp time = 3; //Время получения последней цены в часовом поясе UTC по времени биржи.
- string instrument_uid = 11; //Uid инструмента
+ string instrument_uid = 11; //UID инструмента.
+ LastPriceType last_price_type = 12; //Тип последней цены.
}
//Запрос стакана.
message GetOrderBookRequest {
- string figi = 1 [ deprecated = true ]; //Deprecated Figi-идентификатор инструмента. Необходимо использовать instrument_id.
- int32 depth = 2; //Глубина стакана.
- string instrument_id = 3; //Идентификатор инструмента, принимает значение figi или instrument_uid.
+ optional string figi = 1 [deprecated = true]; //Deprecated FIGI-идентификатор инструмента. Используйте `instrument_id`.
+ int32 depth = 2 [(google.api.field_behavior) = REQUIRED]; //Глубина стакана.
+ optional string instrument_id = 3; //Идентификатор инструмента. Принимает значение `figi` или `instrument_uid`.
}
//Информация о стакане.
message GetOrderBookResponse {
- string figi = 1; //Figi-идентификатор инструмента.
+ string figi = 1; //FIGI-идентификатор инструмента.
int32 depth = 2; //Глубина стакана.
repeated Order bids = 3; //Множество пар значений на покупку.
repeated Order asks = 4; //Множество пар значений на продажу.
- Quotation last_price = 5; //Цена последней сделки за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
- Quotation close_price = 6; //Цена закрытия за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
- Quotation limit_up = 7; //Верхний лимит цены за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
- Quotation limit_down = 8; //Нижний лимит цены за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
+ Quotation last_price = 5; //Цена последней сделки за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15).
+ Quotation close_price = 6; //Цена закрытия за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15).
+ Quotation limit_up = 7; //Верхний лимит цены за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15).
+ Quotation limit_down = 8; //Нижний лимит цены за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](https://russianinvestments.github.io/investAPI/faq_marketdata/#_15).
google.protobuf.Timestamp last_price_ts = 21; //Время получения цены последней сделки.
google.protobuf.Timestamp close_price_ts = 22; //Время получения цены закрытия.
google.protobuf.Timestamp orderbook_ts = 23; //Время формирования стакана на бирже.
- string instrument_uid = 9; //Uid инструмента.
+ string instrument_uid = 9; //UID инструмента.
}
//Запрос получения торгового статуса.
message GetTradingStatusRequest {
- string figi = 1 [ deprecated = true ]; //Deprecated Figi-идентификатор инструмента. Необходимо использовать instrument_id.
- string instrument_id = 2; //Идентификатор инструмента, принимает значение figi или instrument_uid.
+ optional string figi = 1 [deprecated = true]; //Deprecated FIGI-идентификатор инструмента. Используйте `instrument_id`.
+ optional string instrument_id = 2; //Идентификатор инструмента. Принимает значение `figi` или `instrument_uid`.
}
//Запрос получения торгового статуса.
message GetTradingStatusesRequest {
- repeated string instrument_id = 1; //Идентификатор инструмента, принимает значение figi или instrument_uid
+ repeated string instrument_id = 1; //Идентификатор инструмента. Принимает значение `figi` или `instrument_uid`.
}
//Информация о торговом статусе.
message GetTradingStatusesResponse {
- repeated GetTradingStatusResponse trading_statuses = 1; //Массив информации о торговых статусах
+ repeated GetTradingStatusResponse trading_statuses = 1; //Массив информации о торговых статусах.
}
//Информация о торговом статусе.
message GetTradingStatusResponse {
- string figi = 1; //Figi-идентификатор инструмента.
+ string figi = 1; //FIGI-идентификатор инструмента.
SecurityTradingStatus trading_status = 2; //Статус торговли инструментом.
bool limit_order_available_flag = 3; //Признак доступности выставления лимитной заявки по инструменту.
bool market_order_available_flag = 4; //Признак доступности выставления рыночной заявки по инструменту.
bool api_trade_available_flag = 5; //Признак доступности торгов через API.
- string instrument_uid = 6; //Uid инструмента.
+ string instrument_uid = 6; //UID инструмента.
+
+ bool bestprice_order_available_flag = 8; //Признак доступности завяки по лучшей цене.
+ bool only_best_price = 9; //Признак доступности только заявки по лучшей цене.
}
//Запрос обезличенных сделок за последний час.
message GetLastTradesRequest {
- string figi = 1 [ deprecated = true ]; //Deprecated Figi-идентификатор инструмента. Необходимо использовать instrument_id.
- google.protobuf.Timestamp from = 2; //Начало запрашиваемого периода в часовом поясе UTC.
- google.protobuf.Timestamp to = 3; //Окончание запрашиваемого периода в часовом поясе UTC.
- string instrument_id = 4; //Идентификатор инструмента, принимает значение figi или instrument_uid.
+ optional string figi = 1 [deprecated = true]; //Deprecated FIGI-идентификатор инструмента. Используйте `instrument_id`.
+ google.protobuf.Timestamp from = 2 [(google.api.field_behavior) = REQUIRED]; //Начало запрашиваемого периода по UTC.
+ google.protobuf.Timestamp to = 3 [(google.api.field_behavior) = REQUIRED]; //Окончание запрашиваемого периода по UTC.
+ optional string instrument_id = 4; //Идентификатор инструмента. Принимает значение `figi` или `instrument_uid`.
+ TradeSourceType trade_source = 5; //Тип источника сделок. По умолчанию TRADE_SOURCE_ALL - все сделки.
}
//Обезличенных сделок за последний час.
@@ -423,17 +492,18 @@ message GetLastTradesResponse {
repeated Trade trades = 1; //Массив сделок.
}
-//Запрос активных подписок.
-message GetMySubscriptions { }
+//Запрос активных подписок. Возвращает по одному сообщению на каждый тип активных подписок — `SubscribeLastPriceResponse`, `SubscribeInfoResponse`, `SubscribeTradesResponse`, `SubscribeOrderBookResponse`, `SubscribeCandlesResponse`.
+message GetMySubscriptions {}
//Запрос цен закрытия торговой сессии по инструментам.
message GetClosePricesRequest {
- repeated InstrumentClosePriceRequest instruments = 1; //Массив по инструментам.
+ repeated InstrumentClosePriceRequest instruments = 1 [(google.api.field_behavior) = REQUIRED]; //Массив по инструментам.
+ optional InstrumentStatus instrument_status = 9; //Статус запрашиваемых инструментов. [Возможные значения](#instrumentstatus).
}
//Запрос цен закрытия торговой сессии по инструменту.
message InstrumentClosePriceRequest {
- string instrument_id = 1; //Идентификатор инструмента, принимает значение figi или instrument_uid.
+ string instrument_id = 1; //Идентификатор инструмента. Принимает значение `figi` или `instrument_uid`.
}
//Цены закрытия торговой сессии по инструментам.
@@ -443,8 +513,94 @@ message GetClosePricesResponse {
//Цена закрытия торговой сессии по инструменту.
message InstrumentClosePriceResponse {
- string figi = 1; //Figi инструмента.
- string instrument_uid = 2; //Uid инструмента.
+ string figi = 1; //FIGI инструмента.
+ string instrument_uid = 2; //UID инструмента.
Quotation price = 11; //Цена закрытия торговой сессии.
+ Quotation evening_session_price = 12; //Цена последней сделки с вечерней сессии. Цена публикуется биржей по торговым дням и в нерабочие дни не обновляется.
google.protobuf.Timestamp time = 21; //Дата совершения торгов.
}
+
+message GetTechAnalysisRequest {
+ IndicatorType indicator_type = 1 [(google.api.field_behavior) = REQUIRED]; //Тип технического индикатора.
+ string instrument_uid = 2 [(google.api.field_behavior) = REQUIRED]; //UID инструмента.
+ google.protobuf.Timestamp from = 3 [(google.api.field_behavior) = REQUIRED]; //Начало запрашиваемого периода по UTC.
+ google.protobuf.Timestamp to = 4 [(google.api.field_behavior) = REQUIRED]; //Окончание запрашиваемого периода по UTC.
+ IndicatorInterval interval = 5 [(google.api.field_behavior) = REQUIRED]; //Интервал, за который рассчитывается индикатор.
+ TypeOfPrice type_of_price = 6 [(google.api.field_behavior) = REQUIRED]; //Тип цены, который используется при расчёте индикатора.
+ int32 length = 7; //Торговый период, за который рассчитывается индикатор.
+ Deviation deviation = 8; //Параметры отклонения.
+ Smoothing smoothing = 9; //Параметры сглаживания.
+
+ message Smoothing {
+ int32 fast_length = 1; //Короткий период сглаживания для первой экспоненциальной скользящей средней (EMA).
+ int32 slow_length = 2; //Длинный период сглаживания для второй экспоненциальной скользящей средней (EMA).
+ int32 signal_smoothing = 3; //Период сглаживания для третьей экспоненциальной скользящей средней (EMA)
+ }
+
+ message Deviation {
+ Quotation deviation_multiplier = 1; //Количество стандартных отклонений, на которые отступают верхняя и нижняя границы.
+ }
+
+ //Интервал свечи.
+ enum IndicatorInterval {
+ INDICATOR_INTERVAL_UNSPECIFIED = 0; //Интервал не определён.
+ INDICATOR_INTERVAL_ONE_MINUTE = 1; //1 минута.
+ INDICATOR_INTERVAL_FIVE_MINUTES = 2; //5 минут.
+ INDICATOR_INTERVAL_FIFTEEN_MINUTES = 3; //15 минут.
+ INDICATOR_INTERVAL_ONE_HOUR = 4; //1 час.
+ INDICATOR_INTERVAL_ONE_DAY = 5; //1 день.
+ INDICATOR_INTERVAL_2_MIN = 6; //2 минуты.
+ INDICATOR_INTERVAL_3_MIN = 7; //3 минуты.
+ INDICATOR_INTERVAL_10_MIN = 8; //10 минут.
+ INDICATOR_INTERVAL_30_MIN = 9; //30 минут.
+ INDICATOR_INTERVAL_2_HOUR = 10; //2 часа.
+ INDICATOR_INTERVAL_4_HOUR = 11; //4 часа.
+ INDICATOR_INTERVAL_WEEK = 12; //Неделя.
+ INDICATOR_INTERVAL_MONTH = 13; //Месяц.
+ }
+
+ enum TypeOfPrice {
+ TYPE_OF_PRICE_UNSPECIFIED = 0; //Не указано.
+ TYPE_OF_PRICE_CLOSE = 1; //Цена закрытия.
+ TYPE_OF_PRICE_OPEN = 2; //Цена открытия.
+ TYPE_OF_PRICE_HIGH = 3; //Максимальное значение за выбранный интервал.
+ TYPE_OF_PRICE_LOW = 4; //Минимальное значение за выбранный интервал.
+ TYPE_OF_PRICE_AVG = 5; //Среднее значение по показателям [ (close + open + high + low) / 4 ].
+ }
+
+ enum IndicatorType {
+ INDICATOR_TYPE_UNSPECIFIED = 0; //Не определён.
+ INDICATOR_TYPE_BB = 1; //Bollinger Bands — линия Боллинжера.
+ INDICATOR_TYPE_EMA = 2; //Exponential Moving Average — EMA, экспоненциальная скользящая средняя.
+ INDICATOR_TYPE_RSI = 3; //Relative Strength Index — индекс относительной силы.
+ INDICATOR_TYPE_MACD = 4; //Moving Average Convergence/Divergence — схождение/расхождение скользящих средних.
+ INDICATOR_TYPE_SMA = 5; //Simple Moving Average — простое скользящее среднее.
+ }
+}
+
+message GetTechAnalysisResponse {
+ repeated TechAnalysisItem technical_indicators = 1; //Массив значений результатов технического анализа.
+
+ message TechAnalysisItem {
+ google.protobuf.Timestamp timestamp = 1; //Временная метка по UTC, для которой были рассчитаны значения индикатора.
+ optional Quotation middle_band = 2; //Значение простого скользящего среднего (средней линии).
+ optional Quotation upper_band = 3; //Значение верхней линии Боллинджера.
+ optional Quotation lower_band = 4; //Значение нижней линии Боллинджера.
+ optional Quotation signal = 5; //Значение сигнальной линии.
+ optional Quotation macd = 6; //Значение линии MACD.
+ }
+}
+
+enum OrderBookType {
+ ORDERBOOK_TYPE_UNSPECIFIED = 0; //Не определён.
+ ORDERBOOK_TYPE_EXCHANGE = 1; //Биржевой стакан.
+ ORDERBOOK_TYPE_DEALER = 2; //Стакан дилера.
+ ORDERBOOK_TYPE_ALL = 3; //Стакан биржевой и дилера.
+}
+
+//Тип последней цены
+enum LastPriceType {
+ LAST_PRICE_UNSPECIFIED = 0; //Не определен.
+ LAST_PRICE_EXCHANGE = 1; // Цена биржи.
+ LAST_PRICE_DEALER = 2; // Цена дилера
+}
diff --git a/investAPI-main/src/docs/contracts/operations.proto b/investAPI-main/src/docs/contracts/operations.proto
index 469d5ba..c1c0c96 100644
--- a/investAPI-main/src/docs/contracts/operations.proto
+++ b/investAPI-main/src/docs/contracts/operations.proto
@@ -11,49 +11,50 @@ option php_namespace = "Tinkoff\\Invest\\V1";
import "google/protobuf/timestamp.proto";
import "common.proto";
+import "google/api/field_behavior.proto";
-service OperationsService {/*Сервис предназначен для получения: **1**. списка операций по счёту; **2**.
- портфеля по счёту; **3**. позиций ценных бумаг на счёте; **4**.
- доступного остатка для вывода средств; **5**. получения различных отчётов.*/
- //Метод получения списка операций по счёту.При работе с данным методом необходимо учитывать
- // [особенности взаимодействия](/investAPI/operations_problems) с данным методом.
+service OperationsService {/*С помощью методов сервиса можно получить: **1**. Список операций по счёту. **2**.
+ Портфель по счёту. **3**. Позиции ценных бумаг на счёте. **4**.
+ Доступный остаток для вывода средств. **5**. Различные отчёты.*/
+ //Получить список операций по счёту. При работе с методом учитывайте
+ // [особенности взаимодействия](/investAPI/operations_problems).
rpc GetOperations(OperationsRequest) returns (OperationsResponse);
- //Метод получения портфеля по счёту.
+ //Получить портфель по счёту.
rpc GetPortfolio(PortfolioRequest) returns (PortfolioResponse);
- //Метод получения списка позиций по счёту.
+ //Получить список позиций по счёту.
rpc GetPositions(PositionsRequest) returns (PositionsResponse);
- //Метод получения доступного остатка для вывода средств.
+ //Получить доступный остаток для вывода средств.
rpc GetWithdrawLimits(WithdrawLimitsRequest) returns (WithdrawLimitsResponse);
- //Метод получения брокерского отчёта.
+ //Получить брокерский отчёт.
rpc GetBrokerReport(BrokerReportRequest) returns (BrokerReportResponse);
- //Метод получения отчёта "Справка о доходах за пределами РФ".
+ //Получить отчёт «Справка о доходах за пределами РФ».
rpc GetDividendsForeignIssuer(GetDividendsForeignIssuerRequest) returns (GetDividendsForeignIssuerResponse);
- //Метод получения списка операций по счёту с пагинацией. При работе с данным методом необходимо учитывать
- // [особенности взаимодействия](/investAPI/operations_problems) с данным методом.
+ //Получить список операций по счёту с пагинацией. При работе с методом учитывайте
+ // [особенности взаимодействия](/investAPI/operations_problems).
rpc GetOperationsByCursor(GetOperationsByCursorRequest) returns (GetOperationsByCursorResponse);
}
service OperationsStreamService {
- //Server-side stream обновлений портфеля
+ //Server-side stream обновлений портфеля.
rpc PortfolioStream(PortfolioStreamRequest) returns (stream PortfolioStreamResponse);
- //Server-side stream обновлений информации по изменению позиций портфеля
+ //Server-side stream обновлений информации по изменению позиций портфеля.
rpc PositionsStream(PositionsStreamRequest) returns (stream PositionsStreamResponse);
}
//Запрос получения списка операций по счёту.
message OperationsRequest {
- string account_id = 1; //Идентификатор счёта клиента.
- google.protobuf.Timestamp from = 2; //Начало периода (по UTC).
- google.protobuf.Timestamp to = 3; //Окончание периода (по UTC).
- OperationState state = 4; //Статус запрашиваемых операций.
- string figi = 5; //Figi-идентификатор инструмента для фильтрации.
+ string account_id = 1 [(google.api.field_behavior) = REQUIRED]; //Идентификатор счёта клиента.
+ optional google.protobuf.Timestamp from = 2; //Начало периода по UTC.
+ optional google.protobuf.Timestamp to = 3; //Окончание периода по UTC.
+ optional OperationState state = 4; //Статус запрашиваемых операций.
+ optional string figi = 5; //FIGI-идентификатор инструмента для фильтрации.
}
//Список операций.
@@ -67,33 +68,34 @@ message Operation {
string parent_operation_id = 2; //Идентификатор родительской операции.
string currency = 3; //Валюта операции.
MoneyValue payment = 4; //Сумма операции.
- MoneyValue price = 5; //Цена операции за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента.
+ MoneyValue price = 5; //Цена операции за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента.
OperationState state = 6; //Статус операции.
int64 quantity = 7; //Количество единиц инструмента.
int64 quantity_rest = 8; //Неисполненный остаток по сделке.
- string figi = 9; //Figi-идентификатор инструмента, связанного с операцией.
- string instrument_type = 10; //Тип инструмента. Возможные значения: **bond** — облигация; **share** — акция; **currency** — валюта; **etf** — фонд; **futures** — фьючерс.
+ string figi = 9; //FIGI-идентификатор инструмента, связанного с операцией.
+ string instrument_type = 10; //Тип инструмента. Возможные значения: `bond` — облигация; `share` — акция; `currency` — валюта; `etf` — фонд; `futures` — фьючерс.
google.protobuf.Timestamp date = 11; //Дата и время операции в формате часовом поясе UTC.
string type = 12; //Текстовое описание типа операции.
OperationType operation_type = 13; //Тип операции.
repeated OperationTrade trades = 14; //Массив сделок.
string asset_uid = 16; //Идентификатор актива
- string position_uid = 17; //position_uid-идентификатора инструмента.
+ string position_uid = 17; //Уникальный идентификатор позиции.
string instrument_uid = 18; //Уникальный идентификатор инструмента.
+ repeated ChildOperationItem child_operations = 19; //Массив дочерних операций.
}
//Сделка по операции.
message OperationTrade {
string trade_id = 1; //Идентификатор сделки.
- google.protobuf.Timestamp date_time = 2; //Дата и время сделки в часовом поясе UTC.
+ google.protobuf.Timestamp date_time = 2; //Дата и время сделки по UTC.
int64 quantity = 3; //Количество инструментов.
- MoneyValue price = 4; //Цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента.
+ MoneyValue price = 4; //Цена за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента.
}
//Запрос получения текущего портфеля по счёту.
message PortfolioRequest {
- string account_id = 1; //Идентификатор счёта пользователя.
- CurrencyRequest currency = 2; //Валюта, в которой требуется рассчитать портфель
+ string account_id = 1 [(google.api.field_behavior) = REQUIRED]; //Идентификатор счёта пользователя.
+ optional CurrencyRequest currency = 2; //Валюта, в которой нужно рассчитать портфель.
enum CurrencyRequest {
RUB = 0; //Рубли
USD = 1; //Доллары
@@ -108,7 +110,7 @@ message PortfolioResponse {
MoneyValue total_amount_etf = 3; //Общая стоимость фондов в портфеле.
MoneyValue total_amount_currencies = 4; //Общая стоимость валют в портфеле.
MoneyValue total_amount_futures = 5; //Общая стоимость фьючерсов в портфеле.
- Quotation expected_yield = 6; //Текущая относительная доходность портфеля, в %.
+ Quotation expected_yield = 6; //Текущая относительная доходность портфеля в %.
repeated PortfolioPosition positions = 7; //Список позиций портфеля.
string account_id = 8; //Идентификатор счёта пользователя.
@@ -116,11 +118,13 @@ message PortfolioResponse {
MoneyValue total_amount_sp = 10; //Общая стоимость структурных нот в портфеле.
MoneyValue total_amount_portfolio = 11; //Общая стоимость портфеля.
repeated VirtualPortfolioPosition virtual_positions = 12; //Массив виртуальных позиций портфеля.
+ MoneyValue daily_yield = 15; // Рассчитанная доходность портфеля за день в рублях
+ Quotation daily_yield_relative = 16; //Относительная доходность в день в %
}
//Запрос позиций портфеля по счёту.
message PositionsRequest {
- string account_id = 1; //Идентификатор счёта пользователя.
+ string account_id = 1 [(google.api.field_behavior) = REQUIRED]; //Идентификатор счёта пользователя.
}
//Список позиций по счёту.
@@ -128,17 +132,18 @@ message PositionsResponse {
repeated MoneyValue money = 1; //Массив валютных позиций портфеля.
repeated MoneyValue blocked = 2; //Массив заблокированных валютных позиций портфеля.
repeated PositionsSecurities securities = 3; //Список ценно-бумажных позиций портфеля.
- bool limits_loading_in_progress = 4; //Признак идущей в данный момент выгрузки лимитов.
+ bool limits_loading_in_progress = 4; //Признак идущей выгрузки лимитов в данный момент.
repeated PositionsFutures futures = 5; //Список фьючерсов портфеля.
repeated PositionsOptions options = 6; //Список опционов портфеля.
+ string account_id = 15; //Идентификатор счёта пользователя.
}
-//Запрос доступного для вывода остатка.
+//Запрос доступного остатка для вывода.
message WithdrawLimitsRequest {
- string account_id = 1; //Идентификатор счёта пользователя.
+ string account_id = 1 [(google.api.field_behavior) = REQUIRED]; //Идентификатор счёта пользователя.
}
-//Доступный для вывода остаток.
+//Доступный остаток для вывода.
message WithdrawLimitsResponse {
repeated MoneyValue money = 1; //Массив валютных позиций портфеля.
repeated MoneyValue blocked = 2; //Массив заблокированных валютных позиций портфеля.
@@ -147,53 +152,55 @@ message WithdrawLimitsResponse {
//Позиции портфеля.
message PortfolioPosition {
- string figi = 1; //Figi-идентификатора инструмента.
+ string figi = 1; //FIGI-идентификатор инструмента.
string instrument_type = 2; //Тип инструмента.
Quotation quantity = 3; //Количество инструмента в портфеле в штуках.
- MoneyValue average_position_price = 4; //Средневзвешенная цена позиции. **Возможна задержка до секунды для пересчёта**.
+ MoneyValue average_position_price = 4; //Средневзвешенная цена позиции. Для пересчёта возможна задержка до одной секунды.
Quotation expected_yield = 5; //Текущая рассчитанная доходность позиции.
MoneyValue current_nkd = 6; // Текущий НКД.
- Quotation average_position_price_pt = 7 [ deprecated = true ]; // Deprecated Средняя цена позиции в пунктах (для фьючерсов). **Возможна задержка до секунды для пересчёта**.
- MoneyValue current_price = 8; //Текущая цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента.
- MoneyValue average_position_price_fifo = 9; //Средняя цена позиции по методу FIFO. **Возможна задержка до секунды для пересчёта**.
+ Quotation average_position_price_pt = 7 [ deprecated = true ]; // Deprecated Средняя цена позиции в пунктах (для фьючерсов). Для пересчёта возможна задержка до одной секунды.
+ MoneyValue current_price = 8; //Текущая цена за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента.
+ MoneyValue average_position_price_fifo = 9; //Средняя цена позиции по методу FIFO. Для пересчёта возможна задержка до одной секунды.
Quotation quantity_lots = 10 [ deprecated = true ]; //Deprecated Количество лотов в портфеле.
bool blocked = 21; //Заблокировано на бирже.
Quotation blocked_lots = 22; //Количество бумаг, заблокированных выставленными заявками.
- string position_uid = 24; //position_uid-идентификатора инструмента
- string instrument_uid = 25; //instrument_uid-идентификатора инструмента
- MoneyValue var_margin = 26; //Вариационная маржа
+ string position_uid = 24; //Уникальный идентификатор позиции.
+ string instrument_uid = 25; //Уникальный идентификатор инструмента.
+ MoneyValue var_margin = 26; //Вариационная маржа.
Quotation expected_yield_fifo = 27; //Текущая рассчитанная доходность позиции.
+ MoneyValue daily_yield = 31; // Рассчитанная доходность портфеля за день
}
message VirtualPortfolioPosition {
- string position_uid = 1; //position_uid-идентификатора инструмента
- string instrument_uid = 2; //instrument_uid-идентификатора инструмента
- string figi = 3; //Figi-идентификатора инструмента.
+ string position_uid = 1; //Уникальный идентификатор позиции.
+ string instrument_uid = 2; //Уникальный идентификатор инструмента.
+ string figi = 3; //FIGI-идентификатор инструмента.
string instrument_type = 4; //Тип инструмента.
Quotation quantity = 5; //Количество инструмента в портфеле в штуках.
- MoneyValue average_position_price = 6; //Средневзвешенная цена позиции. **Возможна задержка до секунды для пересчёта**.
+ MoneyValue average_position_price = 6; //Средневзвешенная цена позиции. Для пересчёта возможна задержка до одной секунды.
Quotation expected_yield = 7; //Текущая рассчитанная доходность позиции.
Quotation expected_yield_fifo = 8; //Текущая рассчитанная доходность позиции.
- google.protobuf.Timestamp expire_date = 9; //Дата до которой нужно продать виртуальные бумаги, после этой даты виртуальная позиция "сгорит"
- MoneyValue current_price = 10; //Текущая цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента.
- MoneyValue average_position_price_fifo = 11; //Средняя цена позиции по методу FIFO. **Возможна задержка до секунды для пересчёта**.
+ google.protobuf.Timestamp expire_date = 9; //Дата, до которой нужно продать виртуальные бумаги. После этой даты виртуальная позиция «сгораетт».
+ MoneyValue current_price = 10; //Текущая цена за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента.
+ MoneyValue average_position_price_fifo = 11; //Средняя цена позиции по методу FIFO. Для пересчёта возможна задержка до одной секунды.
+ MoneyValue daily_yield = 31; // Рассчитанная доходность портфеля за день
}
//Баланс позиции ценной бумаги.
message PositionsSecurities {
- string figi = 1; //Figi-идентификатор бумаги.
- int64 blocked = 2; //Количество бумаг заблокированных выставленными заявками.
+ string figi = 1; //FIGI-идентификатор бумаги.
+ int64 blocked = 2; //Количество бумаг, заблокированных выставленными заявками.
int64 balance = 3; //Текущий незаблокированный баланс.
string position_uid = 4; //Уникальный идентификатор позиции.
- string instrument_uid = 5; //Уникальный идентификатор инструмента.
+ string instrument_uid = 5; //Уникальный идентификатор инструмента.
bool exchange_blocked = 11; //Заблокировано на бирже.
string instrument_type = 16; //Тип инструмента.
}
//Баланс фьючерса.
message PositionsFutures {
- string figi = 1; //Figi-идентификатор фьючерса.
- int64 blocked = 2; //Количество бумаг заблокированных выставленными заявками.
+ string figi = 1; //FIGI-идентификатор фьючерса.
+ int64 blocked = 2; //Количество бумаг, заблокированных выставленными заявками.
int64 balance = 3; //Текущий незаблокированный баланс.
string position_uid = 4; //Уникальный идентификатор позиции.
string instrument_uid = 5; //Уникальный идентификатор инструмента.
@@ -203,7 +210,7 @@ message PositionsFutures {
message PositionsOptions {
string position_uid = 1; //Уникальный идентификатор позиции опциона.
string instrument_uid = 2; //Уникальный идентификатор инструмента.
- int64 blocked = 11; //Количество бумаг заблокированных выставленными заявками.
+ int64 blocked = 11; //Количество бумаг, заблокированных выставленными заявками.
int64 balance = 21; //Текущий незаблокированный баланс.
}
@@ -222,9 +229,9 @@ message BrokerReportResponse {
}
message GenerateBrokerReportRequest {
- string account_id = 1; //Идентификатор счёта клиента.
- google.protobuf.Timestamp from = 2; //Начало периода в часовом поясе UTC.
- google.protobuf.Timestamp to = 3; //Окончание периода в часовом поясе UTC.
+ string account_id = 1 [(google.api.field_behavior) = REQUIRED]; //Идентификатор счёта клиента.
+ google.protobuf.Timestamp from = 2 [(google.api.field_behavior) = REQUIRED]; //Начало периода по UTC.
+ google.protobuf.Timestamp to = 3 [(google.api.field_behavior) = REQUIRED]; //Окончание периода по UTC.
}
message GenerateBrokerReportResponse {
@@ -232,23 +239,23 @@ message GenerateBrokerReportResponse {
}
message GetBrokerReportRequest {
- string task_id = 1; //Идентификатор задачи формирования брокерского отчёта.
- int32 page = 2; //Номер страницы отчета (начинается с 1), значение по умолчанию: 0.
+ string task_id = 1 [(google.api.field_behavior) = REQUIRED]; //Идентификатор задачи формирования брокерского отчёта.
+ optional int32 page = 2; //Номер страницы отчёта, начинается с 1. Значение по умолчанию — 0.
}
message GetBrokerReportResponse {
repeated BrokerReport broker_report = 1;
- int32 itemsCount = 2; //Количество записей в отчете.
- int32 pagesCount = 3; //Количество страниц с данными отчета (начинается с 0).
- int32 page = 4; //Текущая страница (начинается с 0).
+ int32 itemsCount = 2; //Количество записей в отчёте.
+ int32 pagesCount = 3; //Количество страниц с данными отчёта, начинается с 0.
+ int32 page = 4; //Текущая страница, начинается с 0.
}
message BrokerReport {
string trade_id = 1;//Номер сделки.
string order_id = 2; //Номер поручения.
- string figi = 3; //Figi-идентификатор инструмента.
+ string figi = 3; //FIGI-идентификаторинструмента.
string execute_sign = 4; //Признак исполнения.
- google.protobuf.Timestamp trade_datetime = 5; //Дата и время заключения в часовом поясе UTC.
+ google.protobuf.Timestamp trade_datetime = 5; //Дата и время заключения по UTC.
string exchange = 6; //Торговая площадка.
string class_code = 7; //Режим торгов.
string direction = 8; //Вид сделки.
@@ -256,27 +263,27 @@ message BrokerReport {
string ticker = 10; //Код актива.
MoneyValue price = 11; //Цена за единицу.
int64 quantity = 12; //Количество.
- MoneyValue order_amount = 13; //Сумма (без НКД).
+ MoneyValue order_amount = 13; //Сумма без НКД.
Quotation aci_value = 14; //НКД.
MoneyValue total_order_amount = 15; //Сумма сделки.
MoneyValue broker_commission = 16; //Комиссия брокера.
MoneyValue exchange_commission = 17; //Комиссия биржи.
- MoneyValue exchange_clearing_commission = 18; //Комиссия клир. центра.
- Quotation repo_rate = 19; //Ставка РЕПО (%).
- string party = 20; //Контрагент/Брокер.
- google.protobuf.Timestamp clear_value_date = 21; //Дата расчётов в часовом поясе UTC.
- google.protobuf.Timestamp sec_value_date = 22; //Дата поставки в часовом поясе UTC.
+ MoneyValue exchange_clearing_commission = 18; //Комиссия клирингового центра.
+ Quotation repo_rate = 19; //Ставка РЕПО, %.
+ string party = 20; //Контрагент или брокерарокер.
+ google.protobuf.Timestamp clear_value_date = 21; //Дата расчётов по UTC.
+ google.protobuf.Timestamp sec_value_date = 22; //Дата поставки по UTC.
string broker_status = 23; //Статус брокера.
- string separate_agreement_type = 24; //Тип дог.
- string separate_agreement_number = 25; //Номер дог.
- string separate_agreement_date = 26; //Дата дог.
+ string separate_agreement_type = 24; //Тип договора.
+ string separate_agreement_number = 25; //Номер договора.
+ string separate_agreement_date = 26; //Дата договора.
string delivery_type = 27; //Тип расчёта по сделке.
}
//Статус запрашиваемых операций.
enum OperationState {
- OPERATION_STATE_UNSPECIFIED = 0; //Статус операции не определён
- OPERATION_STATE_EXECUTED = 1; //Исполнена.
+ OPERATION_STATE_UNSPECIFIED = 0; //Статус операции не определён.
+ OPERATION_STATE_EXECUTED = 1; //Исполнена частично или полностью.
OPERATION_STATE_CANCELED = 2; //Отменена.
OPERATION_STATE_PROGRESS = 3; //Исполняется.
}
@@ -329,22 +336,23 @@ enum OperationType {
OPERATION_TYPE_DIV_EXT = 43; //Выплата дивидендов на карту.
OPERATION_TYPE_TAX_CORRECTION_COUPON = 44; //Корректировка налога по купонам.
OPERATION_TYPE_CASH_FEE = 45; //Комиссия за валютный остаток.
- OPERATION_TYPE_OUT_FEE = 46; //Комиссия за вывод валюты с брокерского счета.
+ OPERATION_TYPE_OUT_FEE = 46; //Комиссия за вывод валюты с брокерского счёта.
OPERATION_TYPE_OUT_STAMP_DUTY = 47; //Гербовый сбор.
- OPERATION_TYPE_OUTPUT_SWIFT = 50; // SWIFT-перевод
- OPERATION_TYPE_INPUT_SWIFT = 51; // SWIFT-перевод
- OPERATION_TYPE_OUTPUT_ACQUIRING = 53; // Перевод на карту
- OPERATION_TYPE_INPUT_ACQUIRING = 54; // Перевод с карты
- OPERATION_TYPE_OUTPUT_PENALTY = 55; // Комиссия за вывод средств
- OPERATION_TYPE_ADVICE_FEE = 56; // Списание оплаты за сервис Советов
- OPERATION_TYPE_TRANS_IIS_BS = 57; // Перевод ценных бумаг с ИИС на Брокерский счет
- OPERATION_TYPE_TRANS_BS_BS = 58; // Перевод ценных бумаг с одного брокерского счета на другой
- OPERATION_TYPE_OUT_MULTI = 59; // Вывод денежных средств со счета
- OPERATION_TYPE_INP_MULTI = 60; // Пополнение денежных средств со счета
- OPERATION_TYPE_OVER_PLACEMENT = 61; // Размещение биржевого овернайта
- OPERATION_TYPE_OVER_COM = 62; // Списание комиссии
- OPERATION_TYPE_OVER_INCOME = 63; // Доход от оверанайта
- OPERATION_TYPE_OPTION_EXPIRATION = 64; // Экспирация
+ OPERATION_TYPE_OUTPUT_SWIFT = 50; // SWIFT-перевод.
+ OPERATION_TYPE_INPUT_SWIFT = 51; // SWIFT-перевод.
+ OPERATION_TYPE_OUTPUT_ACQUIRING = 53; // Перевод на карту.
+ OPERATION_TYPE_INPUT_ACQUIRING = 54; // Перевод с карты.
+ OPERATION_TYPE_OUTPUT_PENALTY = 55; // Комиссия за вывод средств.
+ OPERATION_TYPE_ADVICE_FEE = 56; // Списание оплаты за сервис Советов.
+ OPERATION_TYPE_TRANS_IIS_BS = 57; // Перевод ценных бумаг с ИИС на брокерский счёт.
+ OPERATION_TYPE_TRANS_BS_BS = 58; // Перевод ценных бумаг с одного брокерского счёта на другой.
+ OPERATION_TYPE_OUT_MULTI = 59; // Вывод денежных средств со счёта.
+ OPERATION_TYPE_INP_MULTI = 60; // Пополнение денежных средств со счёта.
+ OPERATION_TYPE_OVER_PLACEMENT = 61; // Размещение биржевого овернайта.
+ OPERATION_TYPE_OVER_COM = 62; // Списание комиссии.
+ OPERATION_TYPE_OVER_INCOME = 63; // Доход от оверанайта.
+ OPERATION_TYPE_OPTION_EXPIRATION = 64; // Экспирация опциона.
+ OPERATION_TYPE_FUTURE_EXPIRATION = 65; // Экспирация фьючерса.
}
message GetDividendsForeignIssuerRequest {
@@ -357,36 +365,36 @@ message GetDividendsForeignIssuerRequest {
message GetDividendsForeignIssuerResponse {
oneof payload {
GenerateDividendsForeignIssuerReportResponse generate_div_foreign_issuer_report_response = 1; //Объект результата задачи запуска формирования отчёта.
- GetDividendsForeignIssuerReportResponse div_foreign_issuer_report = 2; //Отчёт "Справка о доходах за пределами РФ".
+ GetDividendsForeignIssuerReportResponse div_foreign_issuer_report = 2; //Отчёт «Справка о доходах за пределами РФ».
}
}
-//Объект запроса формирования отчёта "Справка о доходах за пределами РФ".
+//Объект запроса формирования отчёта «Справка о доходах за пределами РФ».
message GenerateDividendsForeignIssuerReportRequest {
- string account_id = 1; //Идентификатор счёта клиента.
- google.protobuf.Timestamp from = 2; //Начало периода (по UTC).
- google.protobuf.Timestamp to = 3; //Окончание периода (по UTC).
+ string account_id = 1 [(google.api.field_behavior) = REQUIRED]; //Идентификатор счёта клиента.
+ google.protobuf.Timestamp from = 2 [(google.api.field_behavior) = REQUIRED]; //Начало периода по UTC.
+ google.protobuf.Timestamp to = 3 [(google.api.field_behavior) = REQUIRED]; //Окончание периода по UTC. Как правило, можно сформировать отчёт по дату на несколько дней меньше текущей. Начало и окончание периода должны быть в рамках одного календарного года.
}
-// Объект запроса сформированного отчёта "Справка о доходах за пределами РФ".
+// Объект запроса сформированного отчёта «Справка о доходах за пределами РФ».
message GetDividendsForeignIssuerReportRequest {
- string task_id = 1; //Идентификатор задачи формирования отчёта.
- int32 page = 2; //Номер страницы отчета (начинается с 0), значение по умолчанию: 0.
+ string task_id = 1 [(google.api.field_behavior) = REQUIRED]; //Идентификатор задачи формирования отчёта.
+ optional int32 page = 2; //Номер страницы отчета (начинается с 0), значение по умолчанию: 0.
}
-// Объект результата задачи запуска формирования отчёта "Справка о доходах за пределами РФ".
+// Объект результата задачи запуска формирования отчёта «Справка о доходах за пределами РФ».
message GenerateDividendsForeignIssuerReportResponse {
string task_id = 1; //Идентификатор задачи формирования отчёта.
}
message GetDividendsForeignIssuerReportResponse {
repeated DividendsForeignIssuerReport dividends_foreign_issuer_report = 1;
- int32 itemsCount = 2; //Количество записей в отчете.
- int32 pagesCount = 3; //Количество страниц с данными отчета (начинается с 0).
- int32 page = 4; //Текущая страница (начинается с 0).
+ int32 itemsCount = 2; //Количество записей в отчёте.
+ int32 pagesCount = 3; //Количество страниц с данными отчёта, начинается с 0.
+ int32 page = 4; //Текущая страница, начинается с 0.
}
-// Отчёт "Справка о доходах за пределами РФ".
+// Отчёт «Справка о доходах за пределами РФ».
message DividendsForeignIssuerReport {
google.protobuf.Timestamp record_date = 1; //Дата фиксации реестра.
google.protobuf.Timestamp payment_date = 2; //Дата выплаты.
@@ -404,7 +412,8 @@ message DividendsForeignIssuerReport {
//Запрос установки stream-соединения.
message PortfolioStreamRequest {
- repeated string accounts = 1; //Массив идентификаторов счётов пользователя
+ repeated string accounts = 1; //Массив идентификаторов счётов пользователя.
+ PingDelaySettings ping_settings = 15; //Запрос настройки пинга.
}
//Информация по позициям и доходностям портфелей.
@@ -419,11 +428,13 @@ message PortfolioStreamResponse {
//Объект результата подписки.
message PortfolioSubscriptionResult {
repeated AccountSubscriptionStatus accounts = 1; //Массив счетов клиента.
+ string tracking_id = 7; //Уникальный идентификатор запроса, подробнее: [tracking_id](https://russianinvestments.github.io/investAPI/grpc#tracking-id).
+ string stream_id = 8; //Идентификатор открытого соединения
}
-//Счет клиента.
+//Счёт клиента.
message AccountSubscriptionStatus {
- string account_id = 1; //Идентификатор счёта
+ string account_id = 1; //Идентификатор счёта.
PortfolioSubscriptionStatus subscription_status = 6; //Результат подписки.
}
@@ -437,17 +448,17 @@ enum PortfolioSubscriptionStatus {
//Запрос списка операций по счёту с пагинацией.
message GetOperationsByCursorRequest {
- string account_id = 1; //Идентификатор счёта клиента. Обязательный параметр для данного метода, остальные параметры опциональны.
- string instrument_id = 2; //Идентификатор инструмента (Figi инструмента или uid инструмента)
- google.protobuf.Timestamp from = 6; //Начало периода (по UTC).
- google.protobuf.Timestamp to = 7; //Окончание периода (по UTC).
- string cursor = 11; //Идентификатор элемента, с которого начать формировать ответ.
- int32 limit = 12; //Лимит количества операций. По умолчанию устанавливается значение **100**, максимальное значение 1000.
- repeated OperationType operation_types = 13; //Тип операции. Принимает значение из списка OperationType.
- OperationState state = 14; //Статус запрашиваемых операций, возможные значения указаны в OperationState.
- bool without_commissions = 15; //Флаг возвращать ли комиссии, по умолчанию false
- bool without_trades = 16; //Флаг получения ответа без массива сделок.
- bool without_overnights = 17; //Флаг не показывать overnight операций.
+ string account_id = 1 [(google.api.field_behavior) = REQUIRED]; //Идентификатор счёта клиента, обязательный параметр. Остальные параметры опциональны.
+ optional string instrument_id = 2; //Идентификатор инструмента — FIGI или UID инструмента.
+ optional google.protobuf.Timestamp from = 6; //Начало периода по UTC.
+ optional google.protobuf.Timestamp to = 7; //Окончание периода по UTC.
+ optional string cursor = 11; //Идентификатор элемента, с которого начать формировать ответ.
+ optional int32 limit = 12; //Лимит количества операций. По умолчанию — `100`, максимальное значение — `1000`.
+ repeated OperationType operation_types = 13; //Тип операции. Принимает значение из списка `OperationType`.
+ optional OperationState state = 14; //Статус запрашиваемых операций. Возможные значения указаны в `OperationState`.
+ optional bool without_commissions = 15; //Флаг возврата комиссии. По умолчанию — `false`.
+ optional bool without_trades = 16; //Флаг получения ответа без массива сделок.
+ optional bool without_overnights = 17; //Флаг показа overnight операций.
}
//Список операций по счёту с пагинацией.
@@ -460,19 +471,19 @@ message GetOperationsByCursorResponse {
//Данные об операции.
message OperationItem {
string cursor = 1; //Курсор.
- string broker_account_id = 6; //Номер счета клиента.
+ string broker_account_id = 6; //Номер счёта клиента.
string id = 16; //Идентификатор операции, может меняться с течением времени.
- string parent_operation_id = 17; //Идентификатор родительской операции, может измениться, если изменился id родительской операции.
+ string parent_operation_id = 17; //Идентификатор родительской операции. Может измениться, если изменился ID родительской операции.
string name = 18; //Название операции.
- google.protobuf.Timestamp date = 21; //Дата поручения.
+ google.protobuf.Timestamp date = 21; //Дата поручения.
OperationType type = 22; //Тип операции.
string description = 23; //Описание операции.
OperationState state = 24; //Статус поручения.
string instrument_uid = 31; //Уникальный идентификатор инструмента.
- string figi = 32; //Figi.
+ string figi = 32; //FIGI.
string instrument_type = 33; //Тип инструмента.
InstrumentType instrument_kind = 34; //Тип инструмента.
- string position_uid = 35; //position_uid-идентификатора инструмента.
+ string position_uid = 35; //Уникальный идентификатор позиции.
MoneyValue payment = 41; //Сумма операции.
MoneyValue price = 42; //Цена операции за 1 инструмент.
MoneyValue commission = 43; //Комиссия.
@@ -485,7 +496,8 @@ message OperationItem {
google.protobuf.Timestamp cancel_date_time = 56; //Дата и время снятия заявки.
string cancel_reason = 57; //Причина отмены операции.
OperationItemTrades trades_info = 61; //Массив сделок.
- string asset_uid = 64; //Идентификатор актива
+ string asset_uid = 64; //Идентификатор актива.
+ repeated ChildOperationItem child_operations = 65; //Массив дочерних операций.
}
//Массив с информацией о сделках.
@@ -495,8 +507,8 @@ message OperationItemTrades {
//Сделка по операции.
message OperationItemTrade {
- string num = 1; //Номер сделки
- google.protobuf.Timestamp date = 6; //Дата сделки
+ string num = 1; //Номер сделки.
+ google.protobuf.Timestamp date = 6; //Дата сделки.
int64 quantity = 11; //Количество в единицах.
MoneyValue price = 16; //Цена.
MoneyValue yield = 21; //Доходность.
@@ -505,7 +517,9 @@ message OperationItemTrade {
//Запрос установки stream-соединения позиций.
message PositionsStreamRequest {
- repeated string accounts = 1; //Массив идентификаторов счётов пользователя
+ repeated string accounts = 1; //Массив идентификаторов счётов пользователя.
+ bool with_initial_positions = 3; //Получение состояния позиций на момент подключения.
+ PingDelaySettings ping_settings = 15; //Запрос настройки пинга.
}
//Информация по изменению позиций портфеля.
@@ -514,17 +528,20 @@ message PositionsStreamResponse {
PositionsSubscriptionResult subscriptions = 1; //Объект результата подписки.
PositionData position = 2; //Объект стриминга позиций.
Ping ping = 3; //Проверка активности стрима.
+ PositionsResponse initial_positions = 5; //Текущие позиции.
}
}
//Объект результата подписки.
message PositionsSubscriptionResult {
repeated PositionsSubscriptionStatus accounts = 1; //Массив счетов клиента.
+ string tracking_id = 7; //Уникальный идентификатор запроса, подробнее: [tracking_id](https://russianinvestments.github.io/investAPI/grpc#tracking-id).
+ string stream_id = 8; //Идентификатор открытого соединения
}
-//Счет клиента.
+//Счёт клиента.
message PositionsSubscriptionStatus {
- string account_id = 1; //Идентификатор счёта
+ string account_id = 1; //Идентификатор счёта.
PositionsAccountSubscriptionStatus subscription_status = 6; //Результат подписки.
}
@@ -549,5 +566,10 @@ message PositionData {
//Валютная позиция портфеля.
message PositionsMoney {
MoneyValue available_value = 1; //Доступное количество валютный позиций.
- MoneyValue blocked_value = 2; //Заблокированное количество валютный позиций.
+ MoneyValue blocked_value = 2; //Заблокированное количество валютных позиций.
}
+
+message ChildOperationItem {
+ string instrument_uid = 1; //Уникальный идентификатор инструмента.
+ MoneyValue payment = 2; //Сумма операции.
+}
\ No newline at end of file
diff --git a/investAPI-main/src/docs/contracts/orders.proto b/investAPI-main/src/docs/contracts/orders.proto
index 56078a2..26a22aa 100644
--- a/investAPI-main/src/docs/contracts/orders.proto
+++ b/investAPI-main/src/docs/contracts/orders.proto
@@ -11,10 +11,13 @@ option php_namespace = "Tinkoff\\Invest\\V1";
import "common.proto";
import "google/protobuf/timestamp.proto";
+import "google/api/field_behavior.proto";
service OrdersStreamService {
//Stream сделок пользователя
rpc TradesStream(TradesStreamRequest) returns (stream TradesStreamResponse);
+ //Stream поручений пользователя. Перед работой прочитайте [статью](https://russianinvestments.github.io/investAPI/orders_state_stream/).
+ rpc OrderStateStream(OrderStateStreamRequest) returns (stream OrderStateStreamResponse);
}
service OrdersService {/* Сервис предназначен для работы с торговыми поручениями: **1**.
@@ -23,6 +26,9 @@ service OrdersService {/* Сервис предназначен для рабо
//Метод выставления заявки.
rpc PostOrder(PostOrderRequest) returns (PostOrderResponse);
+ //Асинхронный метод выставления заявки.
+ rpc PostOrderAsync(PostOrderAsyncRequest) returns (PostOrderAsyncResponse);
+
//Метод отмены биржевой заявки.
rpc CancelOrder(CancelOrderRequest) returns (CancelOrderResponse);
@@ -34,11 +40,18 @@ service OrdersService {/* Сервис предназначен для рабо
//Метод изменения выставленной заявки.
rpc ReplaceOrder(ReplaceOrderRequest) returns (PostOrderResponse);
+
+ //расчет количества доступных для покупки/продажи лотов
+ rpc GetMaxLots(GetMaxLotsRequest) returns (GetMaxLotsResponse);
+
+ //Метод получения предварительной стоимости для лимитной заявки
+ rpc GetOrderPrice(GetOrderPriceRequest) returns (GetOrderPriceResponse);
}
//Запрос установки соединения.
message TradesStreamRequest {
repeated string accounts = 1; //Идентификаторы счетов.
+ optional int32 ping_delay_ms = 15; //Задержка пинг сообщений milliseconds 5000-180000, default 120000
}
//Информация о торговых поручениях.
@@ -46,6 +59,7 @@ message TradesStreamResponse {
oneof payload {
OrderTrades order_trades = 1; //Информация об исполнении торгового поручения.
Ping ping = 2; //Проверка активности стрима.
+ SubscriptionResponse subscription = 3; //Ответ на запрос на подписку.
}
}
@@ -70,17 +84,19 @@ message OrderTrade {
//Запрос выставления торгового поручения.
message PostOrderRequest {
- string figi = 1 [ deprecated = true ]; //Deprecated Figi-идентификатор инструмента. Необходимо использовать instrument_id.
- int64 quantity = 2; //Количество лотов.
- Quotation price = 3; //Цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Игнорируется для рыночных поручений.
- OrderDirection direction = 4; //Направление операции.
- string account_id = 5; //Номер счёта.
- OrderType order_type = 6; //Тип заявки.
- string order_id = 7; //Идентификатор запроса выставления поручения для целей идемпотентности в формате UID. Максимальная длина 36 символов.
+ optional string figi = 1 [deprecated = true]; //Deprecated Figi-идентификатор инструмента. Необходимо использовать instrument_id.
+ int64 quantity = 2 [(google.api.field_behavior) = REQUIRED]; //Количество лотов.
+ optional Quotation price = 3; //Цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Игнорируется для рыночных поручений.
+ OrderDirection direction = 4 [(google.api.field_behavior) = REQUIRED]; //Направление операции.
+ string account_id = 5 [(google.api.field_behavior) = REQUIRED]; //Номер счёта.
+ OrderType order_type = 6 [(google.api.field_behavior) = REQUIRED]; //Тип заявки.
+ string order_id = 7 [(google.api.field_behavior) = REQUIRED]; //Идентификатор запроса выставления поручения для целей идемпотентности в формате UID. Максимальная длина 36 символов.
string instrument_id = 8; //Идентификатор инструмента, принимает значения Figi или Instrument_uid.
+ TimeInForceType time_in_force = 9; //Алгоритм исполнения поручения, применяется только к лимитной заявке.
+ PriceType price_type = 10; //Тип цены.
}
-//Прочитайте про ключ идемпотентности [здесь](https://tinkoff.github.io/investAPI/head-orders/)
+//Прочитайте про ключ идемпотентности [здесь](https://russianinvestments.github.io/investAPI/head-orders/)
//Информация о выставлении поручения.
message PostOrderResponse {
@@ -94,7 +110,7 @@ message PostOrderResponse {
MoneyValue total_order_amount = 7; //Итоговая стоимость заявки, включающая все комиссии.
MoneyValue initial_commission = 8; //Начальная комиссия. Комиссия рассчитанная при выставлении заявки.
MoneyValue executed_commission = 9; //Фактическая комиссия по итогам исполнения заявки.
- MoneyValue aci_value = 10; //Значение НКД (накопленного купонного дохода) на дату. Подробнее: [НКД при выставлении торговых поручений](https://tinkoff.github.io/investAPI/head-orders#coupon)
+ MoneyValue aci_value = 10; //Значение НКД (накопленного купонного дохода) на дату. Подробнее: [НКД при выставлении торговых поручений](https://russianinvestments.github.io/investAPI/head-orders#coupon)
string figi = 11; // Figi-идентификатор инструмента.
OrderDirection direction = 12; //Направление сделки.
@@ -103,28 +119,54 @@ message PostOrderResponse {
string message = 15; //Дополнительные данные об исполнении заявки.
Quotation initial_order_price_pt = 16; //Начальная цена заявки в пунктах (для фьючерсов).
string instrument_uid = 17; //UID идентификатор инструмента.
+ string order_request_id = 20; //Идентификатор ключа идемпотентности, переданный клиентом, в формате UID. Максимальная длина 36 символов.
+ ResponseMetadata response_metadata = 254; //Метадата
+}
+
+//Запрос выставления асинхронного торгового поручения.
+message PostOrderAsyncRequest {
+ string instrument_id = 1 [(google.api.field_behavior) = REQUIRED]; //Идентификатор инструмента, принимает значения Figi или Instrument_uid.
+ int64 quantity = 2 [(google.api.field_behavior) = REQUIRED]; //Количество лотов.
+ optional Quotation price = 3; //Цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Игнорируется для рыночных поручений.
+ OrderDirection direction = 4 [(google.api.field_behavior) = REQUIRED]; //Направление операции.
+ string account_id = 5 [(google.api.field_behavior) = REQUIRED]; //Номер счёта.
+ OrderType order_type = 6 [(google.api.field_behavior) = REQUIRED]; //Тип заявки.
+ string order_id = 7 [(google.api.field_behavior) = REQUIRED]; //Идентификатор запроса выставления поручения для целей идемпотентности в формате UID. Максимальная длина 36 символов.
+ optional TimeInForceType time_in_force = 8; //Алгоритм исполнения поручения, применяется только к лимитной заявке.
+ optional PriceType price_type = 9; //Тип цены.
+}
+
+//Результат выставления асинхронного торгового поручения.
+message PostOrderAsyncResponse {
+ string order_request_id = 1 [(google.api.field_behavior) = REQUIRED]; //Идентификатор ключа идемпотентности, переданный клиентом, в формате UID. Максимальная длина 36 символов.
+ OrderExecutionReportStatus execution_report_status = 2 [(google.api.field_behavior) = REQUIRED]; //Текущий статус заявки.
+ optional string trade_intent_id = 3; //Идентификатор торгового поручения.
}
//Запрос отмены торгового поручения.
message CancelOrderRequest {
- string account_id = 1; //Номер счёта.
- string order_id = 2; //Идентификатор заявки.
+ string account_id = 1 [(google.api.field_behavior) = REQUIRED]; //Номер счёта.
+ string order_id = 2 [(google.api.field_behavior) = REQUIRED]; //Идентификатор заявки.
+ optional OrderIdType order_id_type = 3; //Тип идентификатора заявки.
}
//Результат отмены торгового поручения.
message CancelOrderResponse {
google.protobuf.Timestamp time = 1; //Дата и время отмены заявки в часовом поясе UTC.
+ ResponseMetadata response_metadata = 254; //Метадата
}
//Запрос получения статуса торгового поручения.
message GetOrderStateRequest {
- string account_id = 1; //Номер счёта.
- string order_id = 2; //Идентификатор заявки.
+ string account_id = 1 [(google.api.field_behavior) = REQUIRED]; //Номер счёта.
+ string order_id = 2 [(google.api.field_behavior) = REQUIRED]; //Идентификатор заявки.
+ PriceType price_type = 3; //Тип цены.
+ optional OrderIdType order_id_type = 4; //Тип идентификатора заявки.
}
//Запрос получения списка активных торговых поручений.
message GetOrdersRequest {
- string account_id = 1; //Номер счёта.
+ string account_id = 1 [(google.api.field_behavior) = REQUIRED]; //Номер счёта.
}
//Список активных торговых поручений.
@@ -161,16 +203,159 @@ message OrderStage {
MoneyValue price = 1; //Цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента.
int64 quantity = 2; //Количество лотов.
string trade_id = 3; //Идентификатор сделки.
+ google.protobuf.Timestamp execution_time = 5; //Время исполнения сделки
}
//Запрос изменения выставленной заявки.
message ReplaceOrderRequest {
- string account_id = 1; //Номер счета.
- string order_id = 6; //Идентификатор заявки на бирже.
- string idempotency_key = 7; //Новый идентификатор запроса выставления поручения для целей идемпотентности. Максимальная длина 36 символов. Перезатирает старый ключ.
- int64 quantity = 11; //Количество лотов.
- Quotation price = 12; //Цена за 1 инструмент.
- PriceType price_type = 13; //Тип цены.
+ string account_id = 1 [(google.api.field_behavior) = REQUIRED]; //Номер счета.
+ string order_id = 6 [(google.api.field_behavior) = REQUIRED]; //Идентификатор заявки на бирже.
+ string idempotency_key = 7 [(google.api.field_behavior) = REQUIRED]; //Новый идентификатор запроса выставления поручения для целей идемпотентности. Максимальная длина 36 символов. Перезатирает старый ключ.
+ int64 quantity = 11 [(google.api.field_behavior) = REQUIRED]; //Количество лотов.
+ optional Quotation price = 12; //Цена за 1 инструмент.
+ optional PriceType price_type = 13; //Тип цены.
+}
+
+//Запрос на расчет количества доступных для покупки/продажи лотов. Если не указывать цену инструмента, то расчет произведется по текущум ценам в стакане: по лучшему предложению для покупки и по лучшему спросу для продажи.
+message GetMaxLotsRequest {
+ string account_id = 1 [(google.api.field_behavior) = REQUIRED]; //Номер счета
+ string instrument_id = 2 [(google.api.field_behavior) = REQUIRED]; //Идентификатор инструмента, принимает значения Figi или instrument_uid
+ optional Quotation price = 3; //Цена инструмента
+}
+
+//Результат количество доступных для покупки/продажи лотов
+message GetMaxLotsResponse {
+ string currency = 1; //Валюта инструмента
+ BuyLimitsView buy_limits = 2; //Лимиты для покупок на собственные деньги
+ BuyLimitsView buy_margin_limits = 3; //Лимиты для покупок с учетом маржинального кредитования
+ SellLimitsView sell_limits = 4; //Лимиты для продаж по собственной позиции
+ SellLimitsView sell_margin_limits = 5; //Лимиты для продаж с учетом маржинального кредитования
+
+ message BuyLimitsView {
+ Quotation buy_money_amount = 1; //Количество доступной валюты для покупки
+ int64 buy_max_lots = 2; //Максимальное доступное количество лотов для покупки
+ int64 buy_max_market_lots = 3; //Максимальное доступное количество лотов для покупки для заявки по рыночной цене на текущий момент
+ }
+
+ message SellLimitsView {
+ int64 sell_max_lots = 1; //Максимальное доступное количество лотов для продажи
+ }
+}
+
+//Запрос получения предварительной стоимости заявки
+message GetOrderPriceRequest {
+ string account_id = 1; //Номер счета
+ string instrument_id = 2; //Идентификатор инструмента, принимает значения Figi или instrument_uid
+ Quotation price = 3; //Цена инструмента
+ OrderDirection direction = 12; //Направление заявки
+ int64 quantity = 13; //Количество лотов
+}
+
+//Предварительная стоимость заявки
+message GetOrderPriceResponse {
+ MoneyValue total_order_amount = 1; //Итоговая стоимость заявки
+ MoneyValue initial_order_amount = 5; //Стоимость заявки без комиссий, НКД, ГО (для фьючерсов — стоимость контрактов)
+ int64 lots_requested = 3; //Запрошено лотов
+ MoneyValue executed_commission = 7; //Общая комиссия
+ MoneyValue executed_commission_rub = 8; //Общая комиссия в рублях
+ MoneyValue service_commission = 9; //Сервисная комиссия
+ MoneyValue deal_commission = 10; //Комиссия за проведение сделки
+
+ oneof instrument_extra {
+ ExtraBond extra_bond = 12; //Дополнительная информация по облигациям
+ ExtraFuture extra_future = 13; //Дополнительная информация по фьючерсам
+ }
+
+ message ExtraBond {
+ MoneyValue aci_value = 2; //Значение НКД (накопленного купонного дохода) на дату
+ Quotation nominal_conversion_rate = 3; //Курс конвертации для замещающих облигаций
+ }
+
+ message ExtraFuture {
+ MoneyValue initial_margin = 2; //Гарантийное обеспечение для фьючерса
+ }
+}
+
+//Запрос установки стрим-соединения торговых поручений
+message OrderStateStreamRequest {
+ repeated string accounts = 1; //Идентификаторы счетов.
+ optional int32 ping_delay_ms = 15; //Задержка пинг сообщений milliseconds 5000-180000, default 120000
+}
+
+//Информация по подпискам
+message SubscriptionResponse {
+ string tracking_id = 1; //Уникальный идентификатор запроса, подробнее: [tracking_id](https://russianinvestments.github.io/investAPI/grpc#tracking-id).
+ ResultSubscriptionStatus status = 2; //Статус подписки.
+ string stream_id = 4; //Идентификатор открытого соединения
+ repeated string accounts = 5; //Идентификаторы счетов.
+ optional ErrorDetail error = 7;
+}
+
+//Информация по заявкам
+message OrderStateStreamResponse {
+ oneof payload {
+ OrderState order_state = 1; //Информация об исполнении торгового поручения.
+ Ping ping = 2; //Проверка активности стрима.
+ SubscriptionResponse subscription = 3; //Ответ на запрос на подписку.
+ }
+
+ //Заявка
+ message OrderState {
+ string order_id = 1; //Биржевой идентификатор заявки
+ optional string order_request_id = 2; //Идентификатор ключа идемпотентности, переданный клиентом, в формате UID. Максимальная длина 36 символов.
+ string client_code = 3; //Код клиента на бирже
+ google.protobuf.Timestamp created_at = 4; //Дата создания заявки
+ OrderExecutionReportStatus execution_report_status = 5; //Статус заявки
+ optional StatusCauseInfo status_info = 6; //Дополнительная информация по статусу
+ string ticker = 7; //Тикер инструмента
+ string class_code = 8; //Класс-код (секция торгов)
+ int32 lot_size = 9; //Лотность инструмента заявки
+ OrderDirection direction = 10; //Направление заявки
+ TimeInForceType time_in_force = 11; //Алгоритм исполнения поручения
+ OrderType order_type = 12; //Тип заявки
+ string account_id = 13; //Номер счета
+ MoneyValue initial_order_price = 22; //Начальная цена заявки
+ MoneyValue order_price = 23; //Цена выставления заявки
+ optional MoneyValue amount = 24; //Предрассчитанная стоимость полной заявки
+ MoneyValue executed_order_price = 25; //Исполненная средняя цена одного инструмента в заявке
+ string currency = 26; //Валюта исполнения
+ int64 lots_requested = 27; //Запрошено лотов
+ int64 lots_executed = 28; //Исполнено лотов
+ int64 lots_left = 29; //Число неисполненных лотов по заявке
+ int64 lots_cancelled = 30; //Отмененные лоты
+ optional MarkerType marker = 31; //Спецсимвол
+ repeated OrderTrade trades = 33; // Список сделок
+ google.protobuf.Timestamp completion_time = 35; //Время исполнения заявки
+ string exchange = 36; //Код биржи
+ string instrument_uid = 41; //UID идентификатор инструмента
+ }
+
+ //Маркер
+ enum MarkerType {
+ MARKER_UNKNOWN = 0; //не определено
+ MARKER_BROKER = 1; //сделки брокера
+ MARKER_CHAT = 2; //исполнение поручение, полученного от клиента через каналы связи
+ MARKER_PAPER = 3; //исполнение поручение, полученного от клиента в бумажной форме
+ MARKER_MARGIN = 4; //принудительное закрытие позиций
+ MARKER_TKBNM = 5; //сделки по управлению ликвидностью
+ MARKER_SHORT = 6; //сделки РЕПО по привлечению у клиентов бумаг
+ MARKER_SPECMM = 7; //перенос временно непокрытых позиций
+ MARKER_PO = 8;
+ }
+
+ //Дополнительная информация по статусу заявки
+ enum StatusCauseInfo {
+ CAUSE_UNSPECIFIED = 0; //Не определено
+ CAUSE_CANCELLED_BY_CLIENT = 15; //Отменено клиентом
+ CAUSE_CANCELLED_BY_EXCHANGE = 1; //Отменено биржей
+ CAUSE_CANCELLED_NOT_ENOUGH_POSITION = 2; //Заявка не выставлена из-за нехватки средств
+ CAUSE_CANCELLED_BY_CLIENT_BLOCK = 3; //Отменено из-за блокировки клиента
+ CAUSE_REJECTED_BY_BROKER = 4; //Отклонено брокером
+ CAUSE_REJECTED_BY_EXCHANGE = 5; //Отклонено биржей
+ CAUSE_CANCELLED_BY_BROKER = 6; //Отменено брокером
+ }
+
+
}
//Направление операции.
@@ -198,9 +383,17 @@ enum OrderExecutionReportStatus {
EXECUTION_REPORT_STATUS_PARTIALLYFILL = 5; //Частично исполнена
}
-//Тип цены.
-enum PriceType {
- PRICE_TYPE_UNSPECIFIED = 0; //Значение не определено.
- PRICE_TYPE_POINT = 1; //Цена в пунктах (только для фьючерсов и облигаций).
- PRICE_TYPE_CURRENCY = 2; //Цена в валюте расчётов по инструменту.
+//Алгоритм исполнения заявки
+enum TimeInForceType {
+ TIME_IN_FORCE_UNSPECIFIED = 0; //Значение не определено см. TIME_IN_FORCE_DAY
+ TIME_IN_FORCE_DAY = 1; //Заявка действует до конца торгового дня. Значение по умолчанию
+ TIME_IN_FORCE_FILL_AND_KILL = 2; //Если в момент выставления возможно исполнение заявки(в т.ч. частичное), заявка будет исполнена или отменена сразу после выставления
+ TIME_IN_FORCE_FILL_OR_KILL = 3; //Если в момент выставления возможно полное исполнение заявки, заявка будет исполнена или отменена сразу после выставления, недоступно для срочного рынка и торговли по выходным
+}
+
+//Тип идентификатора заявки
+enum OrderIdType {
+ ORDER_ID_TYPE_UNSPECIFIED = 0; //Тип идентификатора не указан.
+ ORDER_ID_TYPE_EXCHANGE = 1; //Биржевой идентификатор
+ ORDER_ID_TYPE_REQUEST = 2; //Ключ идемпотентности, переданный клиентом
}
diff --git a/investAPI-main/src/docs/contracts/sandbox.proto b/investAPI-main/src/docs/contracts/sandbox.proto
index 9c0859c..0df13e4 100644
--- a/investAPI-main/src/docs/contracts/sandbox.proto
+++ b/investAPI-main/src/docs/contracts/sandbox.proto
@@ -13,55 +13,59 @@ import "common.proto";
import "orders.proto";
import "operations.proto";
import "users.proto";
+import "google/api/field_behavior.proto";
-service SandboxService { //Сервис для работы с песочницей TINKOFF INVEST API
+service SandboxService { // Методы для работы с песочницей T-Invest API
- //Метод регистрации счёта в песочнице.
+ //Зарегистрировать счёт.
rpc OpenSandboxAccount(OpenSandboxAccountRequest) returns (OpenSandboxAccountResponse);
- //Метод получения счетов в песочнице.
+ //Получить счета.
rpc GetSandboxAccounts(GetAccountsRequest) returns (GetAccountsResponse);
- //Метод закрытия счёта в песочнице.
+ //Закрыть счёт.
rpc CloseSandboxAccount(CloseSandboxAccountRequest) returns (CloseSandboxAccountResponse);
- //Метод выставления торгового поручения в песочнице.
+ //Выставить торговое поручение.
rpc PostSandboxOrder(PostOrderRequest) returns (PostOrderResponse);
- //Метод изменения выставленной заявки.
+ //Изменить выставленную заявку.
rpc ReplaceSandboxOrder(ReplaceOrderRequest) returns (PostOrderResponse);
- //Метод получения списка активных заявок по счёту в песочнице.
+ //Получить список активных заявок по счёту.
rpc GetSandboxOrders(GetOrdersRequest) returns (GetOrdersResponse);
- //Метод отмены торгового поручения в песочнице.
+ //Отменить торговое поручение.
rpc CancelSandboxOrder(CancelOrderRequest) returns (CancelOrderResponse);
- //Метод получения статуса заявки в песочнице. Заявки хранятся в таблице 7 дней.
+ //Поулчить статус заявки в песочнице. Заявки хранятся в таблице 7 дней.
rpc GetSandboxOrderState(GetOrderStateRequest) returns (OrderState);
- //Метод получения позиций по виртуальному счёту песочницы.
+ //Получить позиции по виртуальному счёту.
rpc GetSandboxPositions(PositionsRequest) returns (PositionsResponse);
- //Метод получения операций в песочнице по номеру счёта.
+ //Получить операции по номеру счёта.
rpc GetSandboxOperations(OperationsRequest) returns (OperationsResponse);
- //Метод получения операций в песочнице по номеру счета с пагинацией.
+ //Получить операции по номеру счёта с пагинацией.
rpc GetSandboxOperationsByCursor(GetOperationsByCursorRequest) returns (GetOperationsByCursorResponse);
- //Метод получения портфолио в песочнице.
+ //Получить портфель.
rpc GetSandboxPortfolio(PortfolioRequest) returns (PortfolioResponse);
- //Метод пополнения счёта в песочнице.
+ //Пополнить счёт.
rpc SandboxPayIn(SandboxPayInRequest) returns (SandboxPayInResponse);
- //Метод получения доступного остатка для вывода средств в песочнице.
+ //Получить доступный остаток для вывода средств.
rpc GetSandboxWithdrawLimits(WithdrawLimitsRequest) returns (WithdrawLimitsResponse);
+
+ //Расчёт количества доступных для покупки/продажи лотов в песочнице.
+ rpc GetSandboxMaxLots(GetMaxLotsRequest) returns (GetMaxLotsResponse);
}
//Запрос открытия счёта в песочнице.
message OpenSandboxAccountRequest {
- //пустой запрос
+ optional string name = 1; // Название счёта
}
//Номер открытого счёта в песочнице.
@@ -71,7 +75,7 @@ message OpenSandboxAccountResponse {
//Запрос закрытия счёта в песочнице.
message CloseSandboxAccountRequest {
- string account_id = 1; //Номер счёта
+ string account_id = 1 [(google.api.field_behavior) = REQUIRED]; //Номер счёта
}
//Результат закрытия счёта в песочнице.
@@ -81,8 +85,8 @@ message CloseSandboxAccountResponse {
//Запрос пополнения счёта в песочнице.
message SandboxPayInRequest {
- string account_id = 1; //Номер счёта
- MoneyValue amount = 2; //Сумма пополнения счёта в рублях
+ string account_id = 1 [(google.api.field_behavior) = REQUIRED]; //Номер счёта
+ MoneyValue amount = 2 [(google.api.field_behavior) = REQUIRED]; //Сумма пополнения счёта в рублях
}
//Результат пополнения счёта, текущий баланс.
diff --git a/investAPI-main/src/docs/contracts/signals.proto b/investAPI-main/src/docs/contracts/signals.proto
new file mode 100644
index 0000000..f702090
--- /dev/null
+++ b/investAPI-main/src/docs/contracts/signals.proto
@@ -0,0 +1,109 @@
+syntax = "proto3";
+
+package tinkoff.public.invest.api.contract.v1;
+
+option go_package = "./;investapi";
+option java_package = "ru.tinkoff.piapi.contract.v1";
+option java_multiple_files = true;
+option csharp_namespace = "Tinkoff.InvestApi.V1";
+option objc_class_prefix = "TIAPI";
+option php_namespace = "Tinkoff\\Invest\\V1";
+
+import "google/protobuf/timestamp.proto";
+import "google/api/field_behavior.proto";
+import "common.proto";
+
+service SignalService {//Сервис для получения технических сигналов и мнений аналитиков по инструментам
+
+ //Запросить стратегии.
+ rpc GetStrategies(GetStrategiesRequest) returns (GetStrategiesResponse);
+
+ //Запросить сигналы.
+ rpc GetSignals(GetSignalsRequest) returns (GetSignalsResponse);
+}
+
+//Запрос стратегий.
+message GetStrategiesRequest {
+ optional string strategy_id = 1; //Идентификатор стратегии
+}
+
+//Стратегии
+message GetStrategiesResponse {
+ repeated Strategy strategies = 1;
+}
+
+//Стратегия
+message Strategy {
+ string strategy_id = 1 [(google.api.field_behavior) = REQUIRED]; //Идентификатор стратегии.
+ string strategy_name = 2 [(google.api.field_behavior) = REQUIRED]; //Название стратегии.
+ optional string strategy_description = 3; //Описание стратегии.
+ optional string strategy_url = 4; //Ссылка на страницу с описанием стратегии.
+ StrategyType strategy_type = 5 [(google.api.field_behavior) = REQUIRED]; //Тип стратегии.
+ int32 active_signals = 6 [(google.api.field_behavior) = REQUIRED]; //Количество активных сигналов.
+ int32 total_signals = 7 [(google.api.field_behavior) = REQUIRED]; //Общее количество сигналов.
+ int64 time_in_position = 8 [(google.api.field_behavior) = REQUIRED]; //Среднее время нахождения сигнала в позиции.
+ Quotation average_signal_yield = 9 [(google.api.field_behavior) = REQUIRED]; //Средняя доходность сигнала в стратегии.
+ Quotation average_signal_yield_year = 10 [(google.api.field_behavior) = REQUIRED]; //Средняя доходность сигналов в стратегии за последний год.
+ Quotation yield = 11 [(google.api.field_behavior) = REQUIRED]; //Доходность стратегии.
+ Quotation yield_year = 12 [(google.api.field_behavior) = REQUIRED]; //Доходность стратегии за последний год.
+}
+
+//Запрос сигналов.
+message GetSignalsRequest {
+ optional string signal_id = 1; //Идентификатор сигнала.
+ optional string strategy_id = 2; //Идентификатор стратегии.
+ optional StrategyType strategy_type = 3; //Тип стратегии.
+ optional string instrument_uid = 4; // Идентификатор бумаги
+ optional google.protobuf.Timestamp from = 5; // Дата начала запрашиваемого интервала в часовом поясе UTC.
+ optional google.protobuf.Timestamp to = 6; // Дата конца запрашиваемого интервала в часовом поясе UTC.
+ optional SignalDirection direction = 7; // Направление сигнала.
+ optional SignalState active = 8; //Состояние сигнала.
+ optional Page paging = 9; //Настройки пагинации.
+}
+
+//Сигналы.
+message GetSignalsResponse {
+ repeated Signal signals = 1; //Массив сигналов.
+ PageResponse paging = 2; //Данные по пагинации.
+}
+
+//Сигнал.
+message Signal {
+ string signal_id = 1 [(google.api.field_behavior) = REQUIRED]; //Идентификатор сигнала.
+ string strategy_id = 2 [(google.api.field_behavior) = REQUIRED]; //Идентификатор стратегии.
+ string strategy_name = 3 [(google.api.field_behavior) = REQUIRED]; //Название стратегии.
+ string instrument_uid = 4 [(google.api.field_behavior) = REQUIRED]; //Идентификатор бумаги.
+ google.protobuf.Timestamp create_dt = 5 [(google.api.field_behavior) = REQUIRED]; //Дата и время создания сигнала в часовом поясе UTC.
+ SignalDirection direction = 6 [(google.api.field_behavior) = REQUIRED]; //Направление сигнала
+ Quotation initial_price = 7 [(google.api.field_behavior) = REQUIRED]; //Цена бумаги на момент формирования сигнала
+ optional string info = 8; //Дополнительная информация о сигнале.
+ string name = 9 [(google.api.field_behavior) = REQUIRED]; //Название сигнала.
+ Quotation target_price = 10 [(google.api.field_behavior) = REQUIRED]; //Целевая цена.
+ google.protobuf.Timestamp end_dt = 11 [(google.api.field_behavior) = REQUIRED]; //Дата и время дедлайна сигнала в часовом поясе UTC.
+ optional int32 probability = 12; //Вероятность сигнала.
+ optional Quotation stoploss = 13; //Порог закрытия сигнала по стоплосс.
+ optional Quotation close_price = 14; //Цена закрытия сигнала.
+ optional google.protobuf.Timestamp close_dt = 15; //Дата и время закрытия сигнала в часовом поясе UTC.
+}
+
+//Тип стратегии.
+enum StrategyType {
+ STRATEGY_TYPE_UNSPECIFIED = 0; //Не определен.
+ STRATEGY_TYPE_TECHNICAL = 1; //Техническая стратегия.
+ STRATEGY_TYPE_FUNDAMENTAL = 2; //Фундаментальная стратегия.
+}
+
+//Направление сигнала.
+enum SignalDirection {
+ SIGNAL_DIRECTION_UNSPECIFIED = 0; //Не определен.
+ SIGNAL_DIRECTION_BUY = 1; //Покупка.
+ SIGNAL_DIRECTION_SELL = 2; //Продажа.
+}
+
+//Статус сигнала.
+enum SignalState {
+ SIGNAL_STATE_UNSPECIFIED = 0; //Не определен.
+ SIGNAL_STATE_ACTIVE = 1; //Активный сигнал.
+ SIGNAL_STATE_CLOSED = 2; //Закрытый сигнал.
+ SIGNAL_STATE_ALL = 3; //Все состояния.
+}
diff --git a/investAPI-main/src/docs/contracts/stoporders.proto b/investAPI-main/src/docs/contracts/stoporders.proto
index bfc8475..b11be45 100644
--- a/investAPI-main/src/docs/contracts/stoporders.proto
+++ b/investAPI-main/src/docs/contracts/stoporders.proto
@@ -10,43 +10,59 @@ option objc_class_prefix = "TIAPI";
option php_namespace = "Tinkoff\\Invest\\V1";
import "google/protobuf/timestamp.proto";
+import "google/api/field_behavior.proto";
import "common.proto";
-service StopOrdersService { /* Сервис предназначен для работы со стоп-заявками: **1**.
- выставление; **2**. отмена; **3**. получение списка стоп-заявок.*/
+service StopOrdersService { /* Сервис для работы со стоп-заявками: выставление, отмена, получение списка стоп-заявок.*/
- //Метод выставления стоп-заявки.
+ //Выставить стоп-заявку.
rpc PostStopOrder(PostStopOrderRequest) returns (PostStopOrderResponse);
- //Метод получения списка активных стоп заявок по счёту.
+ //Получить список активных стоп-заявок по счёту.
rpc GetStopOrders(GetStopOrdersRequest) returns (GetStopOrdersResponse);
- //Метод отмены стоп-заявки.
+ //Отменить стоп-заявку.
rpc CancelStopOrder(CancelStopOrderRequest) returns (CancelStopOrderResponse);
}
//Запрос выставления стоп-заявки.
message PostStopOrderRequest {
- string figi = 1 [ deprecated = true ]; //Deprecated Figi-идентификатор инструмента. Необходимо использовать instrument_id.
- int64 quantity = 2; //Количество лотов.
- Quotation price = 3; //Цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента.
- Quotation stop_price = 4; //Стоп-цена заявки за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента.
- StopOrderDirection direction = 5; //Направление операции.
- string account_id = 6; //Номер счёта.
- StopOrderExpirationType expiration_type = 7; //Тип экспирации заявки.
- StopOrderType stop_order_type = 8; //Тип заявки.
- google.protobuf.Timestamp expire_date = 9; //Дата и время окончания действия стоп-заявки в часовом поясе UTC. **Для ExpirationType = GoodTillDate заполнение обязательно**.
- string instrument_id = 10; //Идентификатор инструмента, принимает значения Figi или instrument_uid.
+ optional string figi = 1 [ deprecated = true ]; //Deprecated FIGI-идентификатор инструмента. Используйте `instrument_id`.
+ int64 quantity = 2 [(google.api.field_behavior) = REQUIRED]; //Количество лотов.
+ optional Quotation price = 3; //Цена за 1 инструмент биржевой заявки, которая будет выставлена при срабатывании по достижению `stop_price`. Чтобы получить стоимость лота, нужно умножить на лотность инструмента.
+ optional Quotation stop_price = 4; //Стоп-цена заявки за 1 инструмент. При достижении стоп-цены происходит активация стоп-заявки, в результате чего выставляется биржевая заявка. Чтобы получить стоимость лота, нужно умножить на лотность инструмента.
+ StopOrderDirection direction = 5 [(google.api.field_behavior) = REQUIRED]; //Направление операции.
+ string account_id = 6 [(google.api.field_behavior) = REQUIRED]; //Номер счёта.
+ StopOrderExpirationType expiration_type = 7 [(google.api.field_behavior) = REQUIRED]; //Тип экспирации заявки.
+ StopOrderType stop_order_type = 8 [(google.api.field_behavior) = REQUIRED]; //Тип заявки.
+ optional google.protobuf.Timestamp expire_date = 9; //Дата и время окончания действия стоп-заявки по UTC. Для `ExpirationType = GoodTillDate` заполнение обязательно, для `GoodTillCancel` игнорируется.
+ string instrument_id = 10 [(google.api.field_behavior) = REQUIRED]; //Идентификатор инструмента. Принимает значение `figi` или `instrument_uid`.
+ ExchangeOrderType exchange_order_type = 11; //Тип дочерней биржевой заявки для тейкпрофита.
+ TakeProfitType take_profit_type = 12; //Подтип стоп-заявки — `TakeProfit`.
+ TrailingData trailing_data = 13; //Массив с параметрами трейлинг-стопа.
+ PriceType price_type = 14; //Тип цены.
+ string order_id = 15 [(google.api.field_behavior) = REQUIRED]; //Идентификатор запроса выставления поручения для целей идемпотентности в формате `UID`. Максимальная длина — 36 символов.
+ message TrailingData {
+ Quotation indent = 1; //Отступ.
+ TrailingValueType indent_type = 2; //Тип величины отступа.
+ Quotation spread = 3; //Размер защитного спреда.
+ TrailingValueType spread_type = 4; //Тип величины защитного спреда.
+ }
}
//Результат выставления стоп-заявки.
message PostStopOrderResponse {
string stop_order_id = 1; //Уникальный идентификатор стоп-заявки.
+ string order_request_id = 2; //Идентификатор ключа идемпотентности, переданный клиентом, в формате `UID`. Максимальная длина 36 — символов.
+ ResponseMetadata response_metadata = 254; //Метадата.
}
//Запрос получения списка активных стоп-заявок.
message GetStopOrdersRequest {
- string account_id = 1; //Идентификатор счёта клиента.
+ string account_id = 1 [(google.api.field_behavior) = REQUIRED]; //Идентификатор счёта клиента.
+ StopOrderStatusOption status = 2; //Статус заявок.
+ google.protobuf.Timestamp from = 3; //Левая граница.
+ google.protobuf.Timestamp to = 4; //Правая граница.
}
//Список активных стоп-заявок.
@@ -56,29 +72,43 @@ message GetStopOrdersResponse {
//Запрос отмены выставленной стоп-заявки.
message CancelStopOrderRequest {
- string account_id = 1; //Идентификатор счёта клиента.
- string stop_order_id = 2; //Уникальный идентификатор стоп-заявки.
+ string account_id = 1 [(google.api.field_behavior) = REQUIRED]; //Идентификатор счёта клиента.
+ string stop_order_id = 2 [(google.api.field_behavior) = REQUIRED]; //Уникальный идентификатор стоп-заявки.
}
//Результат отмены выставленной стоп-заявки.
message CancelStopOrderResponse {
- google.protobuf.Timestamp time = 1; //Время отмены заявки в часовом поясе UTC.
+ google.protobuf.Timestamp time = 1; //Время отмены заявки по UTC.
}
//Информация о стоп-заявке.
message StopOrder {
- string stop_order_id = 1; //Идентификатор-идентификатор стоп-заявки.
+ string stop_order_id = 1; //Уникальный идентификатор стоп-заявки.
int64 lots_requested = 2; //Запрошено лотов.
- string figi = 3; //Figi-идентификатор инструмента.
+ string figi = 3; //FIGI-идентификатор инструмента.
StopOrderDirection direction = 4; //Направление операции.
string currency = 5; //Валюта стоп-заявки.
StopOrderType order_type = 6; //Тип стоп-заявки.
- google.protobuf.Timestamp create_date = 7; //Дата и время выставления заявки в часовом поясе UTC.
- google.protobuf.Timestamp activation_date_time = 8; //Дата и время конвертации стоп-заявки в биржевую в часовом поясе UTC.
- google.protobuf.Timestamp expiration_time = 9; //Дата и время снятия заявки в часовом поясе UTC.
- MoneyValue price = 10; //Цена заявки за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента.
- MoneyValue stop_price = 11; //Цена активации стоп-заявки за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента.
- string instrument_uid = 12; //instrument_uid идентификатор инструмента.
+ google.protobuf.Timestamp create_date = 7; //Дата и время выставления заявки по UTC.
+ google.protobuf.Timestamp activation_date_time = 8; //Дата и время конвертации стоп-заявки в биржевую по UTC.
+ google.protobuf.Timestamp expiration_time = 9; //Дата и время снятия заявки по UTC.
+ MoneyValue price = 10; //Цена заявки за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента.
+ MoneyValue stop_price = 11; //Цена активации стоп-заявки за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента.
+ string instrument_uid = 12; //`instrument_uid`-идентификатор инструмента.
+ TakeProfitType take_profit_type = 13; //Подтип стоп-заявки — `TakeProfit`.
+ TrailingData trailing_data = 14; //Параметры трейлинг-стопа.
+ StopOrderStatusOption status = 15; //Статус заявки.
+ ExchangeOrderType exchange_order_type = 16; //Тип дочерней биржевой заявки для тейкпрофита.
+ optional string exchange_order_id = 17; //Идентификатор биржевой заявки.
+ message TrailingData {
+ Quotation indent = 1; //Отступ.
+ TrailingValueType indent_type = 2; //Тип величины отступа.
+ Quotation spread = 3; //Размер защитного спреда.
+ TrailingValueType spread_type = 4; //Тип величины защитного спреда.
+ TrailingStopStatus status = 5; //Статус трейлинг-стопа.
+ Quotation price = 7; //Цена исполнения.
+ Quotation extr = 8; //Локальный экстремум.
+ }
}
//Направление сделки стоп-заявки.
@@ -98,7 +128,45 @@ enum StopOrderExpirationType {
//Тип стоп-заявки.
enum StopOrderType {
STOP_ORDER_TYPE_UNSPECIFIED = 0; //Значение не указано.
- STOP_ORDER_TYPE_TAKE_PROFIT = 1; //Take-profit заявка.
- STOP_ORDER_TYPE_STOP_LOSS = 2; //Stop-loss заявка.
- STOP_ORDER_TYPE_STOP_LIMIT = 3; //Stop-limit заявка.
+ STOP_ORDER_TYPE_TAKE_PROFIT = 1; //`Take-profit`-заявка.
+ STOP_ORDER_TYPE_STOP_LOSS = 2; //`Stop-loss`-заявка.
+ STOP_ORDER_TYPE_STOP_LIMIT = 3; //`Stop-limit`-заявка.
+}
+
+//Статус стоп-заяки.
+enum StopOrderStatusOption {
+ STOP_ORDER_STATUS_UNSPECIFIED = 0; //Значение не указано.
+ STOP_ORDER_STATUS_ALL = 1; //Все заявки.
+ STOP_ORDER_STATUS_ACTIVE = 2; //Активные заявки.
+ STOP_ORDER_STATUS_EXECUTED = 3; //Исполненные заявки.
+ STOP_ORDER_STATUS_CANCELED = 4; //Отменённые заявки.
+ STOP_ORDER_STATUS_EXPIRED = 5; //Истёкшие заявки.
+}
+
+//Тип выставляемой заявки.
+enum ExchangeOrderType {
+ EXCHANGE_ORDER_TYPE_UNSPECIFIED = 0; //Значение не указано.
+ EXCHANGE_ORDER_TYPE_MARKET = 1; //Заявка по рыночной цене.
+ EXCHANGE_ORDER_TYPE_LIMIT = 2; //Лимитная заявка.
+}
+
+//Тип TakeProfit-заявки.
+enum TakeProfitType {
+ TAKE_PROFIT_TYPE_UNSPECIFIED = 0; //Значение не указано.
+ TAKE_PROFIT_TYPE_REGULAR = 1; //Обычная заявка, значение по умолчанию.
+ TAKE_PROFIT_TYPE_TRAILING = 2; //Трейлинг-стоп.
+}
+
+//Тип параметров значений трейлинг-стопа.
+enum TrailingValueType {
+ TRAILING_VALUE_UNSPECIFIED = 0; //Значение не указано.
+ TRAILING_VALUE_ABSOLUTE = 1; //Абсолютное значение в единицах цены.
+ TRAILING_VALUE_RELATIVE = 2; //Относительное значение в процентах.
+}
+
+//Статус трейлинг-стопа.
+enum TrailingStopStatus {
+ TRAILING_STOP_UNSPECIFIED = 0; //Значение не указано.
+ TRAILING_STOP_ACTIVE = 1; //Активный.
+ TRAILING_STOP_ACTIVATED = 2; //Активированный.
}
diff --git a/investAPI-main/src/docs/contracts/users.proto b/investAPI-main/src/docs/contracts/users.proto
index e6e5b4f..0a72ce8 100644
--- a/investAPI-main/src/docs/contracts/users.proto
+++ b/investAPI-main/src/docs/contracts/users.proto
@@ -10,26 +10,29 @@ option objc_class_prefix = "TIAPI";
option php_namespace = "Tinkoff\\Invest\\V1";
import "google/protobuf/timestamp.proto";
+import "google/api/field_behavior.proto";
import "common.proto";
-service UsersService { /*Сервис предназначен для получения: **1**.
- списка счетов пользователя; **2**. маржинальных показателей по счёту.*/
+service UsersService { /*С помощью сервиса можно получить: 1.
+ список счетов пользователя; 2. маржинальные показатели по счёту.*/
- //Метод получения счетов пользователя.
+ //Получить счета пользователя.
rpc GetAccounts (GetAccountsRequest) returns (GetAccountsResponse);
- //Расчёт маржинальных показателей по счёту.
+ //Рассчитать маржинальные показатели по счёту.
rpc GetMarginAttributes (GetMarginAttributesRequest) returns (GetMarginAttributesResponse);
- //Запрос тарифа пользователя.
+ //Запросить тариф пользователя.
rpc GetUserTariff (GetUserTariffRequest) returns (GetUserTariffResponse);
- //Метод получения информации о пользователе.
+ //Получить информацию о пользователе.
rpc GetInfo (GetInfoRequest) returns (GetInfoResponse);
}
//Запрос получения счетов пользователя.
-message GetAccountsRequest {}
+message GetAccountsRequest {
+ optional AccountStatus status = 1; //Статус счета.
+}
//Список счетов пользователя.
message GetAccountsResponse {
@@ -65,9 +68,10 @@ message Account {
//Тип счёта.
enum AccountType {
ACCOUNT_TYPE_UNSPECIFIED = 0; //Тип аккаунта не определён.
- ACCOUNT_TYPE_TINKOFF = 1; //Брокерский счёт Тинькофф.
- ACCOUNT_TYPE_TINKOFF_IIS = 2; //ИИС счёт.
+ ACCOUNT_TYPE_TINKOFF = 1; //Брокерский счёт Т-Инвестиций.
+ ACCOUNT_TYPE_TINKOFF_IIS = 2; //ИИС.
ACCOUNT_TYPE_INVEST_BOX = 3; //Инвесткопилка.
+ ACCOUNT_TYPE_INVEST_FUND = 4; //Фонд денежного рынка.
}
//Статус счёта.
@@ -76,25 +80,26 @@ enum AccountStatus {
ACCOUNT_STATUS_NEW = 1; //Новый, в процессе открытия.
ACCOUNT_STATUS_OPEN = 2; //Открытый и активный счёт.
ACCOUNT_STATUS_CLOSED = 3; //Закрытый счёт.
+ ACCOUNT_STATUS_ALL = 4; //Все счета.
}
-//Запрос маржинальных показателей по счёту
+//Запрос маржинальных показателей по счёту.
message GetMarginAttributesRequest {
// Идентификатор счёта пользователя.
- string account_id = 1;
+ string account_id = 1 [(google.api.field_behavior) = REQUIRED];
}
//Маржинальные показатели по счёту.
message GetMarginAttributesResponse {
- // Ликвидная стоимость портфеля. Подробнее: [что такое ликвидный портфель?](https://help.tinkoff.ru/margin-trade/short/liquid-portfolio/).
+ // Ликвидная стоимость портфеля. [Подробнее про ликвидный портфель](https://help.tbank.ru/margin-trade/short/liquid-portfolio/).
MoneyValue liquid_portfolio = 1;
- // Начальная маржа — начальное обеспечение для совершения новой сделки. Подробнее: [начальная и минимальная маржа](https://help.tinkoff.ru/margin-trade/short/initial-and-maintenance-margin/).
+ // Начальная маржа — начальное обеспечение для совершения новой сделки. [Подробнее про начальную и минимальную маржу](https://help.tbank.ru/margin-trade/short/initial-and-maintenance-margin/).
MoneyValue starting_margin = 2;
- // Минимальная маржа — это минимальное обеспечение для поддержания позиции, которую вы уже открыли. Подробнее: [начальная и минимальная маржа](https://help.tinkoff.ru/margin-trade/short/initial-and-maintenance-margin/).
+ // Минимальная маржа — это минимальное обеспечение для поддержания позиции, которую вы уже открыли. [Подробнее про начальную и минимальную маржу](https://help.tbank.ru/margin-trade/short/initial-and-maintenance-margin/).
MoneyValue minimal_margin = 3;
// Уровень достаточности средств. Соотношение стоимости ликвидного портфеля к начальной марже.
@@ -103,7 +108,7 @@ message GetMarginAttributesResponse {
// Объем недостающих средств. Разница между стартовой маржой и ликвидной стоимости портфеля.
MoneyValue amount_of_missing_funds = 5;
- // Скорректированная маржа.Начальная маржа, в которой плановые позиции рассчитываются с учётом активных заявок на покупку позиций лонг или продажу позиций шорт.
+ // Скорректированная маржа. Начальная маржа, в которой плановые позиции рассчитываются с учётом активных заявок на покупку позиций лонг или продажу позиций шорт.
MoneyValue corrected_margin = 6;
}
@@ -138,7 +143,7 @@ message GetInfoRequest {
message GetInfoResponse {
bool prem_status = 1; //Признак премиум клиента.
bool qual_status = 2; //Признак квалифицированного инвестора.
- repeated string qualified_for_work_with = 3; //Набор требующих тестирования инструментов и возможностей, с которыми может работать пользователь. [Подробнее](https://tinkoff.github.io/investAPI/faq_users/).
+ repeated string qualified_for_work_with = 3; //Набор требующих тестирования инструментов и возможностей, с которыми может работать пользователь. [Подробнее](https://russianinvestments.github.io/investAPI/faq_users/).
string tariff = 4; //Наименование тарифа пользователя.
}
@@ -146,6 +151,6 @@ message GetInfoResponse {
enum AccessLevel {
ACCOUNT_ACCESS_LEVEL_UNSPECIFIED = 0; //Уровень доступа не определён.
ACCOUNT_ACCESS_LEVEL_FULL_ACCESS = 1; //Полный доступ к счёту.
- ACCOUNT_ACCESS_LEVEL_READ_ONLY = 2; //Доступ с уровнем прав "только чтение".
- ACCOUNT_ACCESS_LEVEL_NO_ACCESS = 3; //Доступ отсутствует.
+ ACCOUNT_ACCESS_LEVEL_READ_ONLY = 2; //Доступ с уровнем прав «только чтение».
+ ACCOUNT_ACCESS_LEVEL_NO_ACCESS = 3; //Доступа нет.
}
diff --git a/investAPI-main/src/docs/deadlines.md b/investAPI-main/src/docs/deadlines.md
index ff5714d..ed0b909 100644
--- a/investAPI-main/src/docs/deadlines.md
+++ b/investAPI-main/src/docs/deadlines.md
@@ -1,17 +1,17 @@
-# Дедлайны запросов
+# Время исполнения запросов
-TINKOFF INVEST API работает по протоколу [gRPC](/investAPI/grpc/), который предполагает использование
-параметра `deadline` на стороне клиента. Данный параметр отвечает за обозначение крайнего срока выполнения
-запроса, т.е. по истечению объявленного срока запрос будет прерван принудительно. В TINKOFF INVEST API
-не существует жёсткого регулирования полученного дедлайна, однако стоит учитывать, что время выполнения
-запроса зависит от множества факторов (объёма данных, скорости их обработки, сложности вычислений и т.п.)
-Поэтому команда TINKOFF INVEST API не рекомендует использовать параметр *deadline* со значениями ниже обозначенных в таблице.
+T-Invest API работает по протоколу [gRPC](/investAPI/grpc/), который предполагает использование
+параметра `deadline` на стороне клиента.
+Этот параметр обозначает крайний срок исполнения запроса — по истечении указанного времени запрос будет прерван принудительно.
-*Подробнее про deadline: [gRPC and Deadlines](https://grpc.io/blog/deadlines/).*
+В T-Invest API нет жёсткого регулирования параметра `deadline`, но учитывайте, что время исполнения запроса зависит от множества факторов — объёма данных, скорости их обработки, сложности вычислений и других.
+Поэтому мы не рекомендуем использовать значения меньше указанных в таблице ниже.
-## Рекомендованные минимальные дедлайны запросов
+[Подробнее про gRPC и `deadline`](https://grpc.io/blog/deadlines/)
-| Метод TINKOFF INVEST API | Рекомендованный deadline (ms) |
+## Рекомендованные минимальные сроки исполнения запросов
+
+| Метод T-Invest API | Рекомендованный `deadline` (ms) |
|:------------------------------------------------------------------|:------------------------------|
| [GetAccounts](/investAPI/users#getaccounts) | 300 |
| [GetMarginAttributes](/investAPI/users#getmarginattributes) | 300 |
@@ -56,4 +56,4 @@ TINKOFF INVEST API работает по протоколу [gRPC](/investAPI/gr
| [GetSandboxPositions](/investAPI/sandbox#getsandboxpositions) | 2000 |
| [GetSandboxOperations](/investAPI/sandbox#getsandboxoperations) | 2000 |
| [GetSandboxPortfolio](/investAPI/sandbox#getsandboxportfolio) | 2000 |
-| [SandboxPayIn](/investAPI/sandbox#sandboxpayin) | 300 |
+| [SandboxPayIn](/investAPI/sandbox#sandboxpayin) | 300 |
\ No newline at end of file
diff --git a/investAPI-main/src/docs/eol_v1.md b/investAPI-main/src/docs/eol_v1.md
index 6b02e07..6f04d9b 100644
--- a/investAPI-main/src/docs/eol_v1.md
+++ b/investAPI-main/src/docs/eol_v1.md
@@ -1,8 +1,8 @@
-# Прекращение поддержки старой версии openAPI
+# Прекращение поддержки старой версии OpenAPI
->**Важно!**
->С мая 2023 поддержка старой версии openapi прекращается.
-Клиенты, использующие [старую версию](https://github.com/Tinkoff/invest-openapi/) и использующие сервера api-invest.tinkoff.ru/openapi, должны перейти на новую версию Tinkoff invest API.
+>**Важно**
+>С мая 2023 поддержка старой версии OpenAPI прекращается.
+Если вы используете [старую версию](https://github.com/Tinkoff/invest-openapi/) и серверы `api-invest.tinkoff.ru/openapi`, переключитесь на новую версию T-Invest API.
В новой версии поддерживаются все изменения брокера:
@@ -11,25 +11,21 @@
* стриминги сделок, портфеля и позиций;
* большое количество новых методов и данных.
-## Торговать на новой версией API - выгодно
+## Преимущества торговли через новую версию
-Действует программа кэшбека в размере 10% с комиссии сделок, совершенных через API.
+При торговле через новую версию действует программа кешбэка — 10% с комиссии сделок, которые совершаются через API.
-## Ссылки
+## Полезные ссылки
-Репозитарий новой версии: [https://github.com/Tinkoff/investAPI](https://github.com/Tinkoff/investAPI)
+- [Репозиторий новой версии](https://github.com/RussianInvestments/investAPI)
-Документация новой версии: [https://tinkoff.github.io/investAPI/](https://tinkoff.github.io/investAPI/)
+- [Документация новой версии](https://russianinvestments.github.io/investAPI/)
-Поддерживаются протоколы:
+Поддерживаемые протоколы — [gRPC](https://RussianInvestments.github.io/investAPI/grpc/) и [REST](https://RussianInvestments.github.io/investAPI/swagger-ui/).
-* gRPC – [https://tinkoff.github.io/investAPI/grpc/](https://tinkoff.github.io/investAPI/grpc/)
-* REST – [https://tinkoff.github.io/investAPI/swagger-ui/](https://tinkoff.github.io/investAPI/swagger-ui/)
+## Связь
-## Вопросы
-
-Если остались вопросы, пишите:
-
-* в [неофициальный телеграм-чат](https://t.me/joinchat/VaW05CDzcSdsPULM)
-* по почте [invest-public-api@tinkoff.ru](mailto:invest-public-api@tinkoff.ru)
+Если у вас остались вопросы, напишите нам:
+* в [неофициальный Телеграм-чат](https://t.me/joinchat/VaW05CDzcSdsPULM);
+* на почту — [invest-public-api@tbank.ru](mailto:invest-public-api@tbank.ru).
\ No newline at end of file
diff --git a/investAPI-main/src/docs/errors.md b/investAPI-main/src/docs/errors.md
index c44142f..855caa4 100644
--- a/investAPI-main/src/docs/errors.md
+++ b/investAPI-main/src/docs/errors.md
@@ -1,123 +1,148 @@
-#Ошибки TINKOFF INVEST API
+# Ошибки T-Invest API
-Некоторые ошибки
-
|Код ошибки|Тип ошибки|Текст ошибки|Причины возникновения и рекомендации по устранению|
|---|---|---|---|
-12001|UNIMPLEMENTED|Method is unimplemented|Метод не реализован|
-12002|UNAVAILABLE|Deprecated method is unavailable|Метод устарел и недоступен|
-30001|INVALID_ARGUMENT|missing parameter: 'from'|Входной параметр `from` является обязательным.Укажите корректный параметр `from`|
-30002|INVALID_ARGUMENT|the required period should not exceed 7 days|Запрошенный период не может превышать 7 дней.Укажите корректный период|
-30003|INVALID_ARGUMENT|'from' can't be less than the current date|Входной параметр `from` не может быть меньше текущей даты.Укажите корректный параметр `from`|
-30004|INVALID_ARGUMENT|missing parameter: 'to'|Входной параметр `to` является обязательным.Укажите корректный параметр `to`|
-30005|INVALID_ARGUMENT|'id_type' is invalid|Входной параметр `id_type` имеет некорректное значение.Список доступных значений: [id_type](https://tinkoff.github.io/investAPI/instruments#instrumentidtype)|
-30006|INVALID_ARGUMENT|missing parameter: 'id_type'|Входной параметр `id_type` является обязательным.Укажите корректный параметр `id_type`|
-30007|INVALID_ARGUMENT|missing parameter: 'id'|Входной параметр `id` является обязательным.Укажите корректный параметр `id`|
-30008|INVALID_ARGUMENT|missing parameter: 'figi'|Входной параметр `figi` является обязательным.Укажите корректный параметр `figi`|
-30009|INVALID_ARGUMENT|'from' is invalid|Входной параметр `from` имеет некорректное значение.Укажите корректный параметр `from`|
-30010|INVALID_ARGUMENT|'to' is invalid|Входной параметр `to` имеет некорректное значение.Укажите корректный параметр `to`|
-30011|INVALID_ARGUMENT|interval is invalid|Входной параметр `interval` имеет некорректное значение.Список доступных значений: [interval](https://tinkoff.github.io/investAPI/marketdata#subscriptioninterval)|
-30012|INVALID_ARGUMENT|'to' can't be less than 'from'|Входной параметр `to` не может быть меньше параметра `from`.Укажите корректные параметры `from` и `to`|
-30013|INVALID_ARGUMENT|'class_code' require for 'id_type' = 'ticker'|Входной параметр `class_code` не может быть пустым при поиске по тикеру.Укажите корректный параметр `class_code`.Подробнее: [Идентификация инструментов](https://tinkoff.github.io/investAPI/faq_identification/)|
-30014|INVALID_ARGUMENT|the maximum request period for the given candle interval has been exceeded|Превышен максимальный период запроса для данного интервала свечи.Укажите корректный интервал.Подробнее: [Интервалы свечей и доступные периоды](https://tinkoff.github.io/investAPI/load_history/)|
-30015|INVALID_ARGUMENT|parameter 'quantity' is missing or equal to 0|Входной параметр `quantity` является обязательным.Укажите корректный параметр `quantity`|
-30016|INVALID_ARGUMENT|'quantity' is invalid|Входной параметр `quantity` имеет некорректное значение.Укажите корректный параметр `quantity`|
-30017|INVALID_ARGUMENT|missing parameter: 'price'|Входной параметр `price` является обязательным.Укажите корректный параметр `price`. Значение параметра `price` должно быть положительным.units и nanos не могут иметь разные знак и модуль nanos должен быть < 999 999 999|
-30018|INVALID_ARGUMENT|price is invalid|Входной параметр *price* имеет некорректное значение.Укажите корректный параметр `price`|
-30019|INVALID_ARGUMENT|missing parameter: 'direction'|Входной параметр `direction` является обязательным.Укажите корректный параметр `direction`|
-30020|INVALID_ARGUMENT|'direction' is invalid|Входной параметр `direction` имеет некорректное значение|
-30021|INVALID_ARGUMENT|missing parameter: 'account_id'|Входной параметр `account_id` является обязательным.Укажите корректный параметр `account_id`|
-30022|INVALID_ARGUMENT|missing parameter: 'state'|Входной параметр `state` является обязательным.Укажите корректный параметр `state`.Список доступных значений: [direction](https://tinkoff.github.io/investAPI/operations/#operationstate)|
-30023|INVALID_ARGUMENT|invalid parameter: 'state'|Входной параметр `state` имеет некорректное значение.Укажите корректный параметр `state`.Список доступных значений: [direction](https://tinkoff.github.io/investAPI/operations/#operationstate)|
-30025|INVALID_ARGUMENT|missing parameter: 'order_type'|Входной параметр `order_type` является обязательным.Укажите корректный параметр `order_type`. Список доступных значений: [order_type](https://tinkoff.github.io/investAPI/orders/#ordertype)|
-30026|INVALID_ARGUMENT|invalid parameter: 'order_type'|Входной параметр `order_type` имеет некорректное значение.Укажите корректный параметр `order_type`|
-30027|INVALID_ARGUMENT|missing parameter: 'order_id'|Входной параметр `order_id` является обязательным.Укажите корректный параметр `order_id`|
-30028|INVALID_ARGUMENT|'order id' is invalid UUID format.|Входной параметр `order_id` имеет некорректное значение.Укажите корректный параметр `order_id` формата UUID.Максимальная длина 36 символов|
-30029|INVALID_ARGUMENT|missing parameter: 'idempotency_key'|Входной параметр `idempotency_key` является обязательным.Укажите корректный параметр `idempotency_key`|
-30030|INVALID_ARGUMENT|'idempotency_key' is invalid|Входной параметр `idempotency_key` имеет некорректное значение.Укажите корректный параметр `idempotency_key`. Максимальная длина 36 символов|
-30031|INVALID_ARGUMENT|missing parameter: 'depth'|Входной параметр `depth` является обязательным.Укажите корректный параметр `depth`|
-30032|INVALID_ARGUMENT|depth is invalid|Входной параметр `depth` имеет некорректное значение.Укажите корректный параметр `depth`|
-30033|INVALID_ARGUMENT|missing parameter: 'trade_clearing_account' or 'class_code'|Параметр `trade_clearing_account` или `class_code` не может быть пустым|
-30034|INVALID_ARGUMENT|not enough balance|Недостаточно средств для совершения сделки (ошибка песочницы).Пополните баланс нужной валюты c помощью метода [SandboxPayIn](https://tinkoff.github.io/investAPI/sandbox#sandboxpayin)|
-30036|INVALID_ARGUMENT|missing parameter: 'stop_price'|Входной параметр `stop_price` является обязательным.Укажите корректный параметр `stop_price`|
-30037|INVALID_ARGUMENT|missing parameter: 'stop_order_type'|Входной параметр `stop_order_type` является обязательным.Укажите корректный параметр `stop_order_type`|
-30038|INVALID_ARGUMENT|'stop_order_type' is invalid|Входной параметр `stop_order_type` имеет некорректное значение.Список доступных значений: [stop_order_type](https://tinkoff.github.io/investAPI/stoporders/#stopordertype)|
-30040|INVALID_ARGUMENT|'expire_date' is invalid|Входной параметр `expire_date` имеет некорректное значение.Укажите корректный параметр `expire_date`|
-30041|INVALID_ARGUMENT|the method is available only for futures|Метод предназначен только для работы с фьючерсами.Передайте во входные параметры метода идентификатор фьючерса|
-30042|INVALID_ARGUMENT|not enough assets for a margin trade|Недостаточно активов для маржинальной сделки.Проверьте маржинальные показатели счёта с помощью метода [GetMarginAttributes](https://tinkoff.github.io/investAPI/users#getmarginattributes)|
-30043|INVALID_ARGUMENT|missing parameter: 'expiration_type'|Входной параметр `expiration_type` является обязательным.Укажите корректный параметр `expiration_type`|
-30044|INVALID_ARGUMENT|'expiration_type' is invalid|Входной параметр `expiration_type` имеет некорректное значение.Список доступных значений: [expiration_type](https://tinkoff.github.io/investAPI/stoporders/#stoporderexpirationtype)|
-30045|INVALID_ARGUMENT|missing parameter: 'ticker'|Входной параметр `ticker` является обязательным.Укажите корректный параметр `ticker`|
-30047|INVALID_ARGUMENT|price currency does not match the settlement currency|Валюта цены не совпадает с валютой расчётов по инструменту.Укажите корректную валюту цены. Узнайте валюту расчета конкретного инструмента с помощью метода [GetInstrumentBy](https://tinkoff.github.io/investAPI/instruments#getinstrumentby)|
-30048|INVALID_ARGUMENT|instrument type is not bond|Метод предназначен только для запроса информации по облигации.Передайте во входные параметры метода идентификатор облигации|
-30049|INVALID_ARGUMENT|post order error: %s|Ошибка метода выставления торгового поручения.Подробнее в тексте ошибки|
-30050|INVALID_ARGUMENT|'instrument_status' is invalid|Входной параметр `instrument_status` имеет некорректное значение.Список доступных значений: [instrument_status](https://tinkoff.github.io/investAPI/instruments#instrumentstatus)|
-30051|INVALID_ARGUMENT|account margin status is disabled|Для данного договора недоступна маржинальная торговля.Для выставления поручений на срочном рынке, необходимо включить маржинальную торговлю в приложении и терминале|
-30052|INVALID_ARGUMENT|instrument forbidden for trading by API|Для данного инструмента недоступна торговля через API.Проверьте значение параметра `api_trade_available_flag` данного инструмента c помощью метода [GetTradingStatus](https://tinkoff.github.io/investAPI/marketdata#gettradingstatus)|
-30053|INVALID_ARGUMENT|post stop_order error: %s|Ошибка метода выставления стоп-заявки.Подробнее в тексте ошибки|
-30054|INVALID_ARGUMENT|instrument type is not a share or etf|Тип инструмента не инвестиционный фонд или акция|
-30055|INVALID_ARGUMENT|order_id cannot be longer than 36 characters|Значение параметра `order_id` не может быть длиннее 36 символов|
-30056|INVALID_ARGUMENT|stop order settlement currency is not supported|Валюта выставления стоп-заявки не поддерживается|
-30057|INVALID_ARGUMENT|the order is a duplicate, but the order report was not found|Заявка является дублем, но отчет по заявке не найден. Проверьте параметр `order_id` (идентификатор запроса выставления поручения для целей идемпотентности) – он должен быть уникальным|
-30058|INVALID_ARGUMENT|task not completed yet, please try again later|Выполнение задачи еще не завершено, попробуйте позже|
-30059|INVALID_ARGUMENT|cancel order error: %s|Ошибка метода отмены заявки.Подробнее в тексте ошибки|
-30060|INVALID_ARGUMENT|cancel stop-order error: %s|Ошибка метода отмены стоп-заявки.Подробнее в тексте ошибки|
-30061|INVALID_ARGUMENT|'from' value out of range|Входной параметр `from` имеет некорректное значение.Укажите значение в пределах от 1970-01-01T00:00:00Z до 2099-12-31T23:59:59.999999999Z включительно|
-30062|INVALID_ARGUMENT|'to' value out of range|Входной параметр `to` имеет некорректное значение.Укажите значение в пределах от 1970-01-01T00:00:00Z до 2099-12-31T23:59:59.999999999Z включительно|
-30063|INVALID_ARGUMENT|'expire_date' value out of range|Входной параметр `expire_date` имеет некорректное значение.Дата должна быть не ранее текущей и не позднее 2099-12-31T23:59:59.999999999Z|
-30064|INVALID_ARGUMENT|the required period should not exceed 31 days|Запрошенный период не может превышать 31 дня.Укажите корректный период|
-30065|INVALID_ARGUMENT|missing parameter: 'task_id'|Входной параметр `task_id` является обязательным.Укажите корректный параметр `task_id`|
-30066|INVALID_ARGUMENT|missing parameter: 'payload'|Входной параметр `payload` является обязательным.Укажите корректный параметр `payload`|
-30067|INVALID_ARGUMENT|'action_type' is invalid|Некорректное значение `action_type`.Выберите допустимое значение|
-30068|INVALID_ARGUMENT|Only limit order is allowed|В настоящий момент возможно выставление только лимитного торгового поручения. Подробнее про [выставление торговых поручений](https://tinkoff.github.io/investAPI/orders_details)|
-30069|INVALID_ARGUMENT|Invalid parameter: 'limit'|Входной параметр `limit` имеет некорректное значение.Значение должно быть меньше или равно 1000|
-30070|INVALID_ARGUMENT|'from' can't be more than the current date|Входной параметр `from` имеет некорректное значение.Укажите значение не превышающее текущую дату и время|
-30077|INVALID_ARGUMENT|not available for OTC instruments|Метод недоступен для внебиржевых инструментов.У таких инструментов параметр `api_trade_available_flag` метода [GetTradingStatus](https://tinkoff.github.io/investAPI/marketdata#gettradingstatus) будет иметь значение false|
-30078|INVALID_ARGUMENT|Incorrect minimum price increment|Некорректный шаг изменения цены.Остаток от деления price на min_price_increment должен быть равен 0|
-30079|INVALID_ARGUMENT|instrument is not available for trading|Инструмент недоступен для торгов. Подробнее о [торговых статусах](https://tinkoff.github.io/investAPI/faq_trading_status)|
-30080|INVALID_ARGUMENT|quantity must be positive|Количество лотов должно быть положительным числом|
-30081|INVALID_ARGUMENT|account status is closed|Аккаунт закрыт|
-30082|INVALID_ARGUMENT|account status is blocked|Аккаунт заблокирован|
-30083|INVALID_ARGUMENT|order_type is invalid|Некорректный тип заявки|
-30084|INVALID_ARGUMENT|maximum request period has been exceeded|Превышен лимит запрашиваемого периода|
-30085|INVALID_ARGUMENT|price in points is available only for futures and bonds|Тип цены в пунктах доступен только для фьючерсов и облигаций|
-30086|INVALID_ARGUMENT|year is invalid|Некорректный год|
-30087|INVALID_ARGUMENT|missing parameter: query|Входной параметр `query` является обязательным.Укажите корректный (не пустой) параметр `query`|
-30088|INVALID_ARGUMENT|'from' and 'to' must have the same year|Запрашиваемые даты должны быть в рамках одного года|
-30089|INVALID_ARGUMENT|'to' must not be later than %s|Значение параметра `to` не должно быть позднее даты, указанной в тексте ошибки.Дата указана в формате ISO 8601|
-30090|INVALID_ARGUMENT|missing parameter: 'siebel_id'|Входной параметр `siebel_id` является обязательным.Укажите корректный параметр `siebel_id`|
-30091|INVALID_ARGUMENT|quantity of instruments can't be more than 100|Количество инструментов не может превышать 100|
-30092|INVALID_ARGUMENT|trading unavailable on weekends|Торги недоступны по нерабочим дням. Больше о [торговых сессиях](https://tinkoff.github.io/investAPI/markets)|
-30093|INVALID_ARGUMENT|missing parameter: 'figi' or 'instrument_id'|Один из параметров `figi` или `instrument_id` является обязательным|
-30094|INVALID_ARGUMENT|options trading is not available at the moment|Выставление заявок по опционам недоступно.|
-30095|INVALID_ARGUMENT|the request was not executed by the exchange|Заявка не исполнена биржей.Лимитная заявка может не исполняться по причине недостижения установленной цены на бирже.Рыночная же может не исполняться по причине отсутствия сделок с данными инструментов (низкая ликвидность)|
-30096|INVALID_ARGUMENT|the order was rejected, try again later|Заявка отклонена, попробуйте повторить позже|
-30097|INVALID_ARGUMENT|inappropriate trading session|Сейчас эта сессия не идёт. Больше о [торговых сессиях](https://tinkoff.github.io/investAPI/markets)|
-30098|INVALID_ARGUMENT|currently, there is no trading on this financial instrument|Торги по этому финансовому инструменту сейчас не проводятся.Проверьте актуальный торговый статус инструмента с помощью метода [GetTradingStatus](https://tinkoff.github.io/investAPI/marketdata#gettradingstatus)|
-30099|INVALID_ARGUMENT|the price is outside the limits for this instrument|Цена вне лимитов по инструменту или цена сделки вне лимита. Подробнее про [выставление торговых поручений](https://tinkoff.github.io/investAPI/orders_details)|
-30100|INVALID_ARGUMENT|the price must be positive|Цена должна быть положительной|
-30101|INVALID_ARGUMENT|to trade this financial instrument, pass the test|Для торговли этим инструментом пройдите тестирование. О том, как сдать тестирование и кому оно нужно читайте в [статье](https://www.tinkoff.ru/blog/articles/test-invest/)|
-30102|INVALID_ARGUMENT|Required parameters missing|Не правильно указаны обязательные параметры|
-30103|INVALID_ARGUMENT|Only best price is allowed|Для инструмента доступно выставление заявки только типа "лучшая цена"|
-30104|INVALID_ARGUMENT|price_type is invalid| Некорректное значение `price_type`. Значением `price_type` может быть только **PRICE_TYPE_POINT** или **PRICE_TYPE_CURRENCY**|
-40002|PERMISSION_DENIED|insufficient privileges|Недостаточно прав для совершения операции.Токен доступа имеет уровень прав read-only, либо у токена нет доступа к указанному счету.Подробнее: [виды токенов](https://tinkoff.github.io/investAPI/index#_2)|
-40003|UNAUTHENTICATED|authentication token is missing or invalid|Токен доступа не найден или не активен.Выпустите новый токен в [настройках](https://www.tinkoff.ru/invest/settings/)|
-40004|PERMISSION_DENIED|Working with orders is not available with this account|Выставление заявок недоступно с текущего аккаунта.Брокерский счет не найден, не принадлежит пользователю или закрыт, либо на пользователе ограничения (от Tinkoff Invest API или от биржи). В этом случае нужно обратиться в техподдержку|
-50001|NOT_FOUND|exchange not found|Биржа не найдена по переданному параметру `exchange_id`.Укажите корректный параметр `exchange_id`|
-50002|NOT_FOUND|instrument not found|Инструмент не найден.Укажите корректный идентификатор инструмента|
-50004|NOT_FOUND|account not found|Счёт не найден по переданному параметру `account_id`.Укажите корректный парамтер `account_id`|
-50005|NOT_FOUND|order not found|Торговое поручение не найдено по переданному параметру `order_id`.Укажите корректный параметр `order_id`|
-50006|NOT_FOUND|stop-order not found|Стоп-заявка не найдена по переданному параметру `stop_order_id`.Укажите корректный параметр `stop_order_id`|
-50007|NOT_FOUND|task not found|Задача не найдена|
-50008|NOT_FOUND|no orderbook provider|Отсутствует источник данных по стаканам|
-50009|NOT_FOUND|asset not found|Актив не найден.Укажите корректный идентификатор актива|
-50010|NOT_FOUND|brand not found|Бренд не найден.Укажите корректный идентификатор бренда|
-70001|INTERNAL|internal error|Внутренняя ошибка сервиса.Если ошибка повторяется, обратитесь в службу технической поддержки|
-70002|INTERNAL|internal network error|Неизвестная сетевая ошибка, попробуйте выполнить запрос позднее.Если ошибка повторяется, обратитесь в службу технической поддержки|
-70003|INTERNAL|internal error, please try again later|Внутренняя ошибка сервиса, попробуйте выполнить запрос позднее.Если ошибка повторяется, обратитесь в службу технической поддержки|
-80001|RESOURCE_EXHAUSTED|limit of open streams exceeded|Превышен лимит одновременных открытых stream-соединений. Подробнее: [Лимитная политика](https://tinkoff.github.io/investAPI/limits/)|
-80002|RESOURCE_EXHAUSTED|request limit exceeded|Превышен лимит запросов в минуту. Подробнее: [Лимитная политика](https://tinkoff.github.io/investAPI/limits/)|
-80003|RESOURCE_EXHAUSTED|The limit on SMS sending has been exceeded, try again in a minute|Превышен лимит на отправку СМС, попробуйте через минуту. Если Вы не хотите получать СМС при выставлении заявки, отключите отправку СМС в ЛК|
-90001|FAILED_PRECONDITION|need confirmation: %s|Требуется подтверждение операции.Подробнее в тексте ошибки|
-90002|FAILED_PRECONDITION|only for qualified investors|Торговля этим инструментом доступна только квалифицированным инвесторам|
-90003|FAILED_PRECONDITION|The price is too high|Цена заявки слишком высокая. Разбейте заявку на заявки меньшего размера. Подробнее: [Ограничения на стоимость заявки](https://tinkoff.github.io/investAPI/faq_orders/)|
+12001|UNIMPLEMENTED|Method is unimplemented|Метод не реализован.|
+12002|UNAVAILABLE|Deprecated method is unavailable|Метод устарел и недоступен.|
+30001|INVALID_ARGUMENT|Missing parameter: `from`|Входной параметр `from` является обязательным.Укажите корректный параметр `from`.|
+30002|INVALID_ARGUMENT|The required period should not exceed 7 days|Запрошенный период не может превышать 7 дней.Укажите корректный период.|
+30003|INVALID_ARGUMENT|`from` can't be less than the current date|Входной параметр `from` не может быть меньше текущей даты.Укажите корректный параметр `from`.|
+30004|INVALID_ARGUMENT|Missing parameter: `to`|Входной параметр `to` является обязательным.Укажите корректный параметр `to`.|
+30005|INVALID_ARGUMENT|`id_type` is invalid|Входной параметр `id_type` имеет некорректное значение.[Список доступных значений](https://russianinvestments.github.io/investAPI/instruments#instrumentidtype).|
+30006|INVALID_ARGUMENT|Missing parameter: `id_type`|Входной параметр `id_type` является обязательным.Укажите корректный параметр `id_type`.|
+30007|INVALID_ARGUMENT|Missing parameter: `id`|Входной параметр `id` является обязательным.Укажите корректный параметр `id`.|
+30008|INVALID_ARGUMENT|Missing parameter: `figi`|Входной параметр `figi` является обязательным.Укажите корректный параметр `figi`.|
+30009|INVALID_ARGUMENT|`from` is invalid|Входной параметр `from` имеет некорректное значение.Укажите корректный параметр `from`.|
+30010|INVALID_ARGUMENT|`to` is invalid|Входной параметр `to` имеет некорректное значение.Укажите корректный параметр `to`.|
+30011|INVALID_ARGUMENT|`interval` is invalid|Входной параметр `interval` имеет некорректное значение.[Список доступных значений](https://russianinvestments.github.io/investAPI/marketdata#subscriptioninterval).|
+30012|INVALID_ARGUMENT|`to` can't be less than `from`|Входной параметр `to` не может быть меньше параметра `from`.Укажите корректные параметры `from` и `to`.|
+30013|INVALID_ARGUMENT|`class_code` require for `id_type` = `ticker`|Входной параметр `class_code` не может быть пустым при поиске по тикеру.Укажите корректный параметр `class_code`.[Подробнее](https://russianinvestments.github.io/investAPI/faq_identification/).|
+30014|INVALID_ARGUMENT|The maximum request period for the given candle interval has been exceeded|Превышен максимальный период запроса для данного интервала свечи.Укажите корректный интервал.[Подробнее](https://russianinvestments.github.io/investAPI/load_history/).|
+30015|INVALID_ARGUMENT|Parameter `quantity` is missing or equal to 0|Входной параметр `quantity` является обязательным.Укажите корректный параметр `quantity`.|
+30016|INVALID_ARGUMENT|`quantity` is invalid|Входной параметр `quantity` имеет некорректное значение.Укажите корректный параметр `quantity`.|
+30017|INVALID_ARGUMENT|Missing parameter: `price`|Входной параметр `price` является обязательным.Укажите корректный параметр `price`.Значение параметра `price` должно быть положительным.`units` и `nanos` не могут иметь разные знак и модуль `nanos` должен быть < 999 999 999|
+30018|INVALID_ARGUMENT|`price` is invalid|Входной параметр `price` имеет некорректное значение.Укажите корректный параметр `price`.|
+30019|INVALID_ARGUMENT|Missing parameter: `direction`|Входной параметр `direction` является обязательным.Укажите корректный параметр `direction`.|
+30020|INVALID_ARGUMENT|`direction` is invalid|Входной параметр `direction` имеет некорректное значение.|
+30021|INVALID_ARGUMENT|Missing parameter: `account_id`|Входной параметр `account_id` является обязательным.Укажите корректный параметр `account_id`.|
+30022|INVALID_ARGUMENT|`account_id` is invalid|Входной параметр `account_id` имеет некорректное значение.|
+30023|INVALID_ARGUMENT|Invalid parameter: `state`|Входной параметр `state` имеет некорректное значение.Укажите корректный параметр `state`.[Список доступных значений](https://russianinvestments.github.io/investAPI/operations/#operationstate).|
+30025|INVALID_ARGUMENT|Missing parameter: `order_type`|Входной параметр `order_type` является обязательным.Укажите корректный параметр `order_type`. [Список доступных значений](https://russianinvestments.github.io/investAPI/orders/#ordertype).|
+30026|INVALID_ARGUMENT|Invalid parameter: `order_type`|Входной параметр `order_type` имеет некорректное значение.Укажите корректный параметр `order_type`.|
+30027|INVALID_ARGUMENT|Missing parameter: `order_id`|Входной параметр `order_id` является обязательным.Укажите корректный параметр `order_id`.|
+30028|INVALID_ARGUMENT|`order id` has invalid UUID format|Входной параметр `order_id` имеет некорректное значение.Укажите корректный параметр `order_id` формата UUID. Максимальная длина 36 символов.|
+30029|INVALID_ARGUMENT|Missing parameter: `idempotency_key`|Входной параметр `idempotency_key` является обязательным.Укажите корректный параметр `idempotency_key`.|
+30030|INVALID_ARGUMENT|`idempotency_key` is invalid|Входной параметр `idempotency_key` имеет некорректное значение.Укажите корректный параметр `idempotency_key`. Максимальная длина 36 символов.|
+30031|INVALID_ARGUMENT|Missing parameter: `depth`|Входной параметр `depth` является обязательным.Укажите корректный параметр `depth`.|
+30032|INVALID_ARGUMENT|`depth` is invalid|Входной параметр `depth` имеет некорректное значение.Укажите корректный параметр `depth`.|
+30033|INVALID_ARGUMENT|Missing parameter: `trade_clearing_account` or `class_code`|Параметр `trade_clearing_account` или `class_code` не может быть пустым.|
+30034|INVALID_ARGUMENT|Not enough balance|Недостаточно средств для совершения сделки (ошибка песочницы).Пополните баланс нужной валюты через метод [SandboxPayIn](https://russianinvestments.github.io/investAPI/sandbox#sandboxpayin).|
+30036|INVALID_ARGUMENT|Missing parameter: `stop_price`|Входной параметр `stop_price` является обязательным.Укажите корректный параметр `stop_price`.|
+30037|INVALID_ARGUMENT|Missing parameter: `stop_order_type`|Входной параметр `stop_order_type` является обязательным.Укажите корректный параметр `stop_order_typ`.|
+30038|INVALID_ARGUMENT|`stop_order_type` is invalid|Входной параметр `stop_order_type` имеет некорректное значение.[Список доступных значений](https://russianinvestments.github.io/investAPI/stoporders/#stopordertype).|
+30039|INVALID_ARGUMENT|Bad request: `trailing_data`|Укажите корректное значение параметра `trailing_data`|
+30040|INVALID_ARGUMENT|`expire_date` is invalid|Входной параметр `expire_date` имеет некорректное значение.Укажите корректный параметр `expire_date`.|
+30041|INVALID_ARGUMENT|The method is available only for futures|Метод предназначен только для работы с фьючерсами.Передайте во входные параметры метода идентификатор фьючерса.|
+30042|INVALID_ARGUMENT|Not enough assets for a margin trade|Недостаточно активов для маржинальной сделки.Проверьте маржинальные показатели счёта — это можно сделать через метод [GetMarginAttributes](https://russianinvestments.github.io/investAPI/users#getmarginattributes).|
+30043|INVALID_ARGUMENT|Missing parameter: `expiration_type`|Входной параметр `expiration_type` является обязательным.Укажите корректный параметр `expiration_type`.|
+30044|INVALID_ARGUMENT|`expiration_type` is invalid|Входной параметр `expiration_type` имеет некорректное значение.[Список доступных значений](https://russianinvestments.github.io/investAPI/stoporders/#stoporderexpirationtype).|
+30045|INVALID_ARGUMENT|Missing parameter: `ticker`|Входной параметр `ticker` является обязательным.Укажите корректный параметр `ticker`.|
+30047|INVALID_ARGUMENT|Price currency does not match the settlement currency|Валюта цены не совпадает с валютой расчётов по инструменту.Укажите корректную валюту цены. Узнать валюту расчета конкретного инструмента можно через метод [GetInstrumentBy](https://russianinvestments.github.io/investAPI/instruments#getinstrumentby). |
+30048|INVALID_ARGUMENT|Instrument type is not bond|Метод предназначен только для запроса информации по облигации.Передайте во входные параметры метода идентификатор облигации.|
+30049|INVALID_ARGUMENT|Post order error: %s|Ошибка метода выставления торгового поручения.Смотрите подробнее в тексте ошибки.|
+30050|INVALID_ARGUMENT|`instrument_status` is invalid|Входной параметр `instrument_status` имеет некорректное значение.[Список доступных значений](https://russianinvestments.github.io/investAPI/instruments#instrumentstatus).|
+30051|INVALID_ARGUMENT|Account margin status is disabled|Для данного договора недоступна маржинальная торговля.Для выставления поручений на срочном рынке, необходимо включить маржинальную торговлю в приложении и терминале.|
+30052|INVALID_ARGUMENT|Instrument forbidden for trading by API|Для данного инструмента недоступна торговля через API.Вы можете проверить значение параметра `api_trade_available_flag` данного инструмента через метод [GetTradingStatus](https://russianinvestments.github.io/investAPI/marketdata#gettradingstatus).|
+30053|INVALID_ARGUMENT|Post stop_order error: %s|Ошибка метода выставления стоп-заявки.Смотрите подробнее в тексте ошибки.|
+30054|INVALID_ARGUMENT|Instrument type is not a share or etf|Тип инструмента не инвестиционный фонд или акция|
+30055|INVALID_ARGUMENT|`order_id` cannot be longer than 36 characters|`order_id` не может быть длиннее 36 символов|
+30056|INVALID_ARGUMENT|Stop order settlement currency is not supported|Валюта выставления стоп-заявки не поддерживается|
+30057|INVALID_ARGUMENT|The order is a duplicate, but the order report was not found|Заявка является дублем, но отчет по заявке не найден.Проверьте параметр `order_id` (идентификатор запроса выставления поручения для целей идемпотентности.) - он должен быть уникальным.|
+30058|INVALID_ARGUMENT|Task not completed yet, please try again later|Выполнение задачи еще не завершено, попробуйте позже.|
+30059|INVALID_ARGUMENT|Cancel order error: %s|Ошибка метода отмены заявки.Смотрите подробнее в тексте ошибки.|
+30060|INVALID_ARGUMENT|Cancel stop-order error: %s|Ошибка метода отмены стоп-заявки.Смотрите подробнее в тексте ошибки.|
+30061|INVALID_ARGUMENT|`from` value out of range|Входной параметр `from` имеет некорректное значение.Укажите значение в пределах от 1970-01-01T00:00:00Z до 2099-12-31T23:59:59.999999999Z включительно.|
+30062|INVALID_ARGUMENT|`to` value out of range|Входной параметр `to` имеет некорректное значение.Укажите значение в пределах от 1970-01-01T00:00:00Z до 2099-12-31T23:59:59.999999999Z включительно.|
+30063|INVALID_ARGUMENT|`expire_date` value out of range|Входной параметр `expire_date` имеет некорректное значение.Дата должна быть не ранее текущей и не позднее 2099-12-31T23:59:59.999999999Z.|
+30064|INVALID_ARGUMENT|The required period should not exceed 31 days|Запрошенный период не может превышать 31 дня.Укажите корректный период.|
+30065|INVALID_ARGUMENT|Missing parameter: `task_id`|Входной параметр `task_id` является обязательным.Укажите корректный параметр `task_id`.|
+30066|INVALID_ARGUMENT|Missing parameter: `payload`|Входной параметр `payload` является обязательным.Укажите корректный параметр `payload`.|
+30067|INVALID_ARGUMENT|`action_type` is invalid|Некорректное значение `action_type`.Выберите допустимое значение.|
+30068|INVALID_ARGUMENT|Only limit order is allowed|В настоящий момент возможно выставление только лимитного торгового поручения. [Подробнее про выставление торговых поручений](https://russianinvestments.github.io/investAPI/orders_details).|
+30069|INVALID_ARGUMENT|Invalid parameter: `limit`|Входной параметр `limit` имеет некорректное значение.Значение должно быть меньше или равно 1000.|
+30070|INVALID_ARGUMENT|`from` can't be more than the current date|Входной параметр `from` имеет некорректное значение.Укажите значение не превышающее текущую дату и время.|
+30077|INVALID_ARGUMENT|Not available for OTC instruments|Метод недоступен для внебиржевых инструментов.У таких инструментов параметр `api_trade_available_flag` метода [GetTradingStatus](https://russianinvestments.github.io/investAPI/marketdata#gettradingstatus) будет иметь значение `false`.|
+30078|INVALID_ARGUMENT|Incorrect minimum price increment|Некорректный шаг изменения цены.Остаток от деления `price` на `min_price_increment` должен быть равен 0.|
+30079|INVALID_ARGUMENT|Instrument is not available for trading|Инструмент недоступен для торгов. [Подробнее о торговых статусах](https://russianinvestments.github.io/investAPI/faq_trading_status).|
+30080|INVALID_ARGUMENT|`quantity` must be positive|Количество лотов должно быть положительным числом.|
+30081|INVALID_ARGUMENT|Account status is closed|Аккаунт закрыт.|
+30082|INVALID_ARGUMENT|Account status is blocked|Аккаунт заблокирован.|
+30083|INVALID_ARGUMENT|`order_type` is invalid|Некорректный тип заявки.|
+30084|INVALID_ARGUMENT|Maximum request period has been exceeded|Превышен лимит запрашиваемого периода.|
+30085|INVALID_ARGUMENT|Price in points is available only for futures and bonds|Тип цены в пунктах доступен только для фьючерсов и облигаций.|
+30086|INVALID_ARGUMENT|Year is invalid|Некорректный год.|
+30087|INVALID_ARGUMENT|Missing parameter: `query`|Входной параметр `query` является обязательным.Укажите не пустой параметр `query`.|
+30088|INVALID_ARGUMENT|`from` and `to` must have the same year|Запрашиваемые даты должны быть в рамках одного года.|
+30089|INVALID_ARGUMENT|`to` must not be later than %s|Поле `to` не должно быть позднее даты, указанной в тексте ошибки.Дата указана в формате ISO 8601.|
+30090|INVALID_ARGUMENT|Missing parameter: `siebel_id`|Входной параметр `siebel_id` является обязательным.Укажите корректный параметр `siebel_id`.|
+30091|INVALID_ARGUMENT|Quantity of instruments can't be more than 100|Количество инструментов не может превышать 100.|
+30092|INVALID_ARGUMENT|Trading unavailable on weekends|Торги недоступны по нерабочим дням. [Подробнее о торговых сессиях](https://russianinvestments.github.io/investAPI/markets).|
+30093|INVALID_ARGUMENT|Missing parameter: `figi` or `instrument_id`|Один из параметров `figi` или `instrument_id` является обязательным.|
+30094|INVALID_ARGUMENT|Options trading is not available at the moment|Выставление заявок по опционам недоступно.|
+30095|INVALID_ARGUMENT|The request was not executed by the exchange|Заявка не исполнена биржей.Лимитная заявка может не исполняться по причине недостижения установленной цены на бирже.Рыночная же может не исполняться по причине отсутствия сделок с данными инструментов (низкая ликвидность).|
+30096|INVALID_ARGUMENT|The order was rejected, try again later|Заявка отклонена, попробуйте повторить позже.|
+30097|INVALID_ARGUMENT|Inappropriate trading session|Сейчас эта сессия не идёт. [Подробнее о торговых сессиях](https://russianinvestments.github.io/investAPI/markets).|
+30098|INVALID_ARGUMENT|Currently there is no trading on this financial instrument|Торги по этому финансовому инструменту сейчас не проводятся.Проверить актуальный торговый статус инструмента через метод [GetTradingStatus](https://russianinvestments.github.io/investAPI/marketdata#gettradingstatus).|
+30099|INVALID_ARGUMENT|The price is outside the limits for this instrument|Цена вне лимитов по инструменту или цена сделки вне лимита. [Подробнее про выставление торговых поручений](https://russianinvestments.github.io/investAPI/orders_details).|
+30100|INVALID_ARGUMENT|The price must be positive|Цена должна быть положительной.|
+30101|INVALID_ARGUMENT|To trade this financial instrument, pass the test|Для торговли этим инструментом пройдите тестирование. [Подробнее про тестирование](https://www.tbank.ru/blog/articles/test-invest/).|
+30102|INVALID_ARGUMENT|Required parameters Missing|Обязательные параметры указаны неправильно.|
+30103|INVALID_ARGUMENT|Only best price is allowed|Для инструмента можно выставить заявки только с типом «лучшая цена».|
+30104|INVALID_ARGUMENT|`price_type` is invalid|Некорректное значение `price_type`. Значением `price_type` может быть только `PRICE_TYPE_POINT` или `PRICE_TYPE_CURRENCY`.|
+30105|INVALID_ARGUMENT|`exchange_order_type` is invalid|Некорректное значение `exchange_order_type`. Значением `exchange_order_type` может быть только `LIMIT` или `MARKET`.|
+30106|INVALID_ARGUMENT|`status` is invalid|Некорректное значение `status`. Значением `status` может быть только `ACTIVE`, `EXCECUTED`, `CANCELED` И `EXPIRED`.|
+30107|INVALID_ARGUMENT|Negative values are not allowed|Некорректное значение `limit` и/или `page`. Параметры `limit` и `page` не могут принимать отицательные значения.|
+30108|INVALID_ARGUMENT|Specify a lower `limit` or `page` value because there are fewer brands|Количество брендов меньше запрашиваемых параметров.|
+30109|INVALID_ARGUMENT|Maximum transaction amount has been exceeded|Превышена максимальная сумма сделки. Разделите ордер на несколько ордеров меньшего объема.|
+30210|INVALID_ARGUMENT|Trailing data required|Проверьте параметры запроса стоп-заявки. Не заданы `indent` или `spread`.|
+30211|INVALID_ARGUMENT|`indent type` required|Проверьте параметры запроса стоп-заявки. Не задан `indent_type`.|
+30212|INVALID_ARGUMENT|`spread type` required|Проверьте параметры запроса стоп-заявки. Не задан `spread_type`.|
+30213|INVALID_ARGUMENT|`indicator_type` is invalid|Проверьте параметры запроса. Некорректный `indicator_type`.|
+30214|INVALID_ARGUMENT|`type_of_price` is invalid|Проверьте параметры запроса. Некорректный `type_of_price`.|
+30215|INVALID_ARGUMENT|`length` is invalid|Проверьте параметры запроса. Некорректный `length`.|
+30216|INVALID_ARGUMENT|`deviation_data` is invalid|Проверьте параметры запроса. Некорректный параметр `deviation_data`.|
+30217|INVALID_ARGUMENT|`smoothing_data` is invalid|Проверьте параметры запроса. Некорректный параметр `smoothing_data`.|
+30218|INVALID_ARGUMENT|Quantity of instruments can`t be more than 3000|Количество инструментов в списке не может быть больше 3000.|
+30219|INVALID_ARGUMENT|input `candle_source_type` is invalid|Проверьте параметры запроса. Некорректный параметр `candle_source_type`.|
+30221|INVALID_ARGUMENT|`order_request_id` not in UUID format|Входной параметр `order_request_id` имеет некорректное значение. Укажите параметр `order_request_id` в UUID формате. Максимальная длина — 36 символов.|
+30222|INVALID_ARGUMENT|`signal_id` not in UUID format|Входной параметр `signal_id` имеет некорректное значение. Укажите параметр `signal_id` в UUID формате. Максимальная длина — 36 символов.|
+30223|INVALID_ARGUMENT|`strategy_id` not in UUID format|Входной параметр `strategy_id` имеет некорректное значение. Укажите параметр `strategy_id` в UUID формате. Максимальная длина — 36 символов.|
+30224|INVALID_ARGUMENT|`strategy_type` is not valid|Входной параметр `strategy_type` имеет некорректное значение.|
+30225|INVALID_ARGUMENT|`active` is not valid|Входной параметр `active` имеет некорректное значение.|
+30226|INVALID_ARGUMENT|Specify a lower limit or page value because there are fewer items|Количество элементов меньше запрашиваемых параметров.|
+30227|INVALID_ARGUMENT|Order cancelled|Заявка с заданными параметрами не может быть исполнена и отменена Биржей или Брокером.|
+35001|INVALID_ARGUMENT|Sandbox accounts limit reached|Достигнут лимит на открытие торговых счетов в песочнице. Чтобы открыть новый счёт, закройте один из существующих.|
+40002|PERMISSION_DENIED|Insufficient privileges|Недостаточно прав для совершения операции.Токен доступа имеет уровень прав read-only или у токена нет доступа к указанному счёту.[Подробнее про виды токенов](https://russianinvestments.github.io/investAPI/index#_2)|
+40003|UNAUTHENTICATED|Authentication token is missing or invalid|Токен доступа не найден или неактивен.Новый токен можно выпустить в [личном кабинете](https://www.tbank.ru/invest/settings/).|
+40004|PERMISSION_DENIED|Working with orders is not available with this account|Выставление заявок недоступно с текущего аккаунта.Брокерский счёт не найден, не принадлежит пользователю или закрыт. Возможно, на пользователе ограничения от T-Invest API или от биржи — в этом случае обратитесь в техподдержку. |
+50001|NOT_FOUND|Exchange not found|Биржа не найдена по переданному `exchange_id`.Укажите корректный `exchange_id`.|
+50002|NOT_FOUND|Instrument not found|Инструмент не найден.Укажите корректный идентификатор инструмента.|
+50004|NOT_FOUND|Account not found|Счёт по переданному `account_id` не найден.Укажите корректный `account_id`.|
+50005|NOT_FOUND|Order not found|Торговое поручение по переданному `order_id` не найдено.Укажите корректный `order_id`.|
+50006|NOT_FOUND|Stop-order not found|Стоп-заявка по переданному `stop_order_id` не найдена.Укажите корректный `stop_order_id`.|
+50007|NOT_FOUND|Task not found|Задача не найдена.|
+50008|NOT_FOUND|No orderbook provider|Отсутствует источник данных по стаканам.|
+50009|NOT_FOUND|Asset not found|Актив не найден.Укажите корректный идентификатор актива.|
+50011|NOT_FOUND|Strategy not found|Стратегия не найдена. Укажите корректный идентификатор стратегии.|
+50012|NOT_FOUND|Signal not found|Сигнал не найден. Укажите корректный идентификатор сигнала.|
+50010|NOT_FOUND|Brand not found|Бренд не найден.Укажите корректный идентификатор бренда.|
+70001|INTERNAL|Internal error|Внутренняя ошибка сервиса.Если ошибка повторяется, обратитесь в службу технической поддержки.|
+70002|INTERNAL|Internal network error|Неизвестная сетевая ошибка, попробуйте выполнить запрос позже.Если ошибка повторяется, обратитесь в службу технической поддержки.|
+70003|INTERNAL|Internal error, please try again later|Внутренняя ошибка сервиса, попробуйте выполнить запрос позже.Если ошибка повторяется, обратитесь в службу технической поддержки.|
+80001|RESOURCE_EXHAUSTED|Limit of open streams exceeded|Превышен лимит одновременных открытых stream-соединений. [Подробнее про лимитную политику](https://russianinvestments.github.io/investAPI/limits/)|
+80002|RESOURCE_EXHAUSTED|Request limit exceeded|Превышен лимит запросов в минуту. [Подробнее про лимитную политику](https://russianinvestments.github.io/investAPI/limits/)|
+80003|RESOURCE_EXHAUSTED|The limit on SMS sending has been exceeded, try again in a minute|Превышен лимит на отправку СМС, попробуйте через минуту. Если вы не хотите получать СМС при выставлении заявки, отключите отправку СМС в личном кабинете.|
+80004|RESOURCE_EXHAUSTED|No active subscriptions|В стриме отсутствуют активные подписки.|
+90001|FAILED_PRECONDITION|Need confirmation: %s|Требуется подтверждение операции.Смотрите подробнее в тексте ошибки.|
+90002|FAILED_PRECONDITION|Only for qualified investors|Торговля этим инструментом доступна только квалифицированным инвесторам.|
+90003|FAILED_PRECONDITION|The price is too high|Цена заявки слишком высокая. Разбейте заявку на заявки меньшего размера. [Подробнее про ограничения на стоимость заявки](https://russianinvestments.github.io/investAPI/faq_orders/).|
diff --git a/investAPI-main/src/docs/errors/api_errors.json b/investAPI-main/src/docs/errors/api_errors.json
index d18966d..b053c28 100644
--- a/investAPI-main/src/docs/errors/api_errors.json
+++ b/investAPI-main/src/docs/errors/api_errors.json
@@ -10,459 +10,464 @@
"description": "Метод устарел и недоступен."
},
"30001": {
- "message": "missing parameter: 'from'",
+ "message": "Missing parameter: `from`",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *from* является обязательным.Укажите корректный параметр *from*."
+ "description": "Входной параметр `from` является обязательным.Укажите корректный параметр `from`."
},
"30002": {
- "message": "the required period should not exceed 7 days",
+ "message": "The required period should not exceed 7 days",
"type": "INVALID_ARGUMENT",
"description": "Запрошенный период не может превышать 7 дней.Укажите корректный период."
},
"30003": {
- "message": "'from' can't be less than the current date",
+ "message": "`from` can't be less than the current date",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *from* не может быть меньше текущей даты.Укажите корректный параметр *from*."
+ "description": "Входной параметр `from` не может быть меньше текущей даты.Укажите корректный параметр `from`."
},
"30004": {
- "message": "missing parameter: 'to'",
+ "message": "Missing parameter: `to`",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *to* является обязательным.Укажите корректный параметр *to*."
+ "description": "Входной параметр `to` является обязательным.Укажите корректный параметр `to`."
},
"30005": {
- "message": "'id_type' is invalid",
+ "message": "`id_type` is invalid",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *id_type* имеет некорректное значение.Список доступных значений: [*id_type*](https://tinkoff.github.io/investAPI/instruments#instrumentidtype)."
+ "description": "Входной параметр `id_type` имеет некорректное значение.[Список доступных значений](https://russianinvestments.github.io/investAPI/instruments#instrumentidtype)."
},
"30006": {
- "message": "missing parameter: 'id_type'",
+ "message": "Missing parameter: `id_type`",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *id_type* является обязательным.Укажите корректный параметр *id_type*."
+ "description": "Входной параметр `id_type` является обязательным.Укажите корректный параметр `id_type`."
},
"30007": {
- "message": "missing parameter: 'id'",
+ "message": "Missing parameter: `id`",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *id* является обязательным.Укажите корректный параметр *id*."
+ "description": "Входной параметр `id` является обязательным.Укажите корректный параметр `id`."
},
"30008": {
- "message": "missing parameter: 'figi'",
+ "message": "Missing parameter: `figi`",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *figi* является обязательным.Укажите корректный параметр *figi*."
+ "description": "Входной параметр `figi` является обязательным.Укажите корректный параметр `figi`."
},
"30009": {
- "message": "'from' is invalid",
+ "message": "`from` is invalid",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *from* имеет некорректное значение.Укажите корректный параметр *from*."
+ "description": "Входной параметр `from` имеет некорректное значение.Укажите корректный параметр `from`."
},
"30010": {
- "message": "'to' is invalid",
+ "message": "`to` is invalid",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *to* имеет некорректное значение.Укажите корректный параметр *to*."
+ "description": "Входной параметр `to` имеет некорректное значение.Укажите корректный параметр `to`."
},
"30011": {
- "message": "interval is invalid",
+ "message": "`interval` is invalid",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *interval* имеет некорректное значение.Список доступных значений: [*interval*](https://tinkoff.github.io/investAPI/marketdata#subscriptioninterval)."
+ "description": "Входной параметр `interval` имеет некорректное значение.[Список доступных значений](https://russianinvestments.github.io/investAPI/marketdata#subscriptioninterval)."
},
"30012": {
- "message": "'to' can't be less than 'from'",
+ "message": "`to` can't be less than `from`",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *to* не может быть меньше параметра *from*.Укажите корректные параметры *from* и *to*."
+ "description": "Входной параметр `to` не может быть меньше параметра `from`.Укажите корректные параметры `from` и `to`."
},
"30013": {
- "message": "'class_code' require for 'id_type' = 'ticker'",
+ "message": "`class_code` require for `id_type` = `ticker`",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *class_code* не может быть пустым при поиске по тикеру.Укажите корректный параметр *class_code*.Подробнее: [Идентификация инструментов](https://tinkoff.github.io/investAPI/faq_identification/)."
+ "description": "Входной параметр `class_code` не может быть пустым при поиске по тикеру.Укажите корректный параметр `class_code`.[Подробнее](https://russianinvestments.github.io/investAPI/faq_identification/)."
},
"30014": {
- "message": "the maximum request period for the given candle interval has been exceeded",
+ "message": "The maximum request period for the given candle interval has been exceeded",
"type": "INVALID_ARGUMENT",
- "description": "Превышен максимальный период запроса для данного интервала свечи.Укажите корректный интервал.Подробнее: [Интервалы свечей и доступные периоды](https://tinkoff.github.io/investAPI/load_history/)."
+ "description": "Превышен максимальный период запроса для данного интервала свечи.Укажите корректный интервал.[Подробнее](https://russianinvestments.github.io/investAPI/load_history/)."
},
"30015": {
- "message": "parameter 'quantity' is missing or equal to 0",
+ "message": "Parameter `quantity` is missing or equal to 0",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *quantity* является обязательным.Укажите корректный параметр *quantity*."
+ "description": "Входной параметр `quantity` является обязательным.Укажите корректный параметр `quantity`."
},
"30016": {
- "message": "'quantity' is invalid",
+ "message": "`quantity` is invalid",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *quantity* имеет некорректное значение.Укажите корректный параметр *quantity*."
+ "description": "Входной параметр `quantity` имеет некорректное значение.Укажите корректный параметр `quantity`."
},
"30017": {
- "message": "missing parameter: 'price'",
+ "message": "Missing parameter: `price`",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *price* является обязательным.Укажите корректный параметр *price*.Значение параметра *price* должно быть положительным.units и nanos не могут иметь разные знак и модуль nanos должен быть < 999 999 999"
+ "description": "Входной параметр `price` является обязательным.Укажите корректный параметр `price`.Значение параметра `price` должно быть положительным.`units` и `nanos` не могут иметь разные знак и модуль `nanos` должен быть < 999 999 999"
},
"30018": {
- "message": "price is invalid",
+ "message": "`price` is invalid",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *price* имеет некорректное значение.Укажите корректный параметр *price*."
+ "description": "Входной параметр `price` имеет некорректное значение.Укажите корректный параметр `price`."
},
"30019": {
- "message": "missing parameter: 'direction'",
+ "message": "Missing parameter: `direction`",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *direction* является обязательным.Укажите корректный параметр *direction*."
+ "description": "Входной параметр `direction` является обязательным.Укажите корректный параметр `direction`."
},
"30020": {
- "message": "'direction' is invalid",
+ "message": "`direction` is invalid",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *direction* имеет некорректное значение."
+ "description": "Входной параметр `direction` имеет некорректное значение."
},
"30021": {
- "message": "missing parameter: 'account_id'",
+ "message": "Missing parameter: `account_id`",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *account_id* является обязательным.Укажите корректный параметр *account_id*."
+ "description": "Входной параметр `account_id` является обязательным.Укажите корректный параметр `account_id`."
},
"30022": {
- "message": "missing parameter: 'state'",
+ "message": "`account_id` is invalid",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *state* является обязательным.Укажите корректный параметр *state*.Список доступных значений: [*direction*](https://tinkoff.github.io/investAPI/operations/#operationstate)."
+ "description": "Входной параметр `account_id` имеет некорректное значение."
},
"30023": {
- "message": "invalid parameter: 'state'",
+ "message": "Invalid parameter: `state`",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *state* имеет некорректное значение.Укажите корректный параметр *state*.Список доступных значений: [*direction*](https://tinkoff.github.io/investAPI/operations/#operationstate)."
+ "description": "Входной параметр `state` имеет некорректное значение.Укажите корректный параметр `state`.[Список доступных значений](https://russianinvestments.github.io/investAPI/operations/#operationstate)."
},
"30025": {
- "message": "missing parameter: 'order_type'",
+ "message": "Missing parameter: `order_type`",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *order_type* является обязательным.Укажите корректный параметр *order_type*. Список доступных значений: [*order_type*](https://tinkoff.github.io/investAPI/orders/#ordertype)."
+ "description": "Входной параметр `order_type` является обязательным.Укажите корректный параметр `order_type`. [Список доступных значений](https://russianinvestments.github.io/investAPI/orders/#ordertype)."
},
"30026": {
- "message": "invalid parameter: 'order_type'",
+ "message": "Invalid parameter: `order_type`",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *order_type* имеет некорректное значение.Укажите корректный параметр *order_type*."
+ "description": "Входной параметр `order_type` имеет некорректное значение.Укажите корректный параметр `order_type`."
},
"30027": {
- "message": "missing parameter: 'order_id'",
+ "message": "Missing parameter: `order_id`",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *order_id* является обязательным.Укажите корректный параметр *order_id*."
+ "description": "Входной параметр `order_id` является обязательным.Укажите корректный параметр `order_id`."
},
"30028": {
- "message": "'order id' is invalid UUID format.",
+ "message": "`order id` has invalid UUID format",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *order_id* имеет некорректное значение.Укажите корректный параметр *order_id* формата UUID. Максимальная длина 36 символов."
+ "description": "Входной параметр `order_id` имеет некорректное значение.Укажите корректный параметр `order_id` формата UUID. Максимальная длина 36 символов."
},
"30029": {
- "message": "missing parameter: 'idempotency_key'",
+ "message": "Missing parameter: `idempotency_key`",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *idempotency_key* является обязательным.Укажите корректный параметр *idempotency_key*."
+ "description": "Входной параметр `idempotency_key` является обязательным.Укажите корректный параметр `idempotency_key`."
},
"30030": {
- "message": "'idempotency_key' is invalid",
+ "message": "`idempotency_key` is invalid",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *idempotency_key* имеет некорректное значение.Укажите корректный параметр *idempotency_key*. Максимальная длина 36 символов."
+ "description": "Входной параметр `idempotency_key` имеет некорректное значение.Укажите корректный параметр `idempotency_key`. Максимальная длина 36 символов."
},
"30031": {
- "message": "missing parameter: 'depth'",
+ "message": "Missing parameter: `depth`",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *depth* является обязательным.Укажите корректный параметр *depth*."
+ "description": "Входной параметр `depth` является обязательным.Укажите корректный параметр `depth`."
},
"30032": {
- "message": "depth is invalid",
+ "message": "`depth` is invalid",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *depth* имеет некорректное значение.Укажите корректный параметр *depth*."
+ "description": "Входной параметр `depth` имеет некорректное значение.Укажите корректный параметр `depth`."
},
"30033": {
- "message": "missing parameter: 'trade_clearing_account' or 'class_code'",
+ "message": "Missing parameter: `trade_clearing_account` or `class_code`",
"type": "INVALID_ARGUMENT",
- "description": "Параметр *trade_clearing_account* или *class_code* не может быть пустым."
+ "description": "Параметр `trade_clearing_account` или `class_code` не может быть пустым."
},
"30034": {
- "message": "not enough balance",
+ "message": "Not enough balance",
"type": "INVALID_ARGUMENT",
- "description": "Недостаточно средств для совершения сделки (ошибка песочницы).Пополните баланс нужной валюты c помощью метода [*SandboxPayIn*](https://tinkoff.github.io/investAPI/sandbox#sandboxpayin)."
+ "description": "Недостаточно средств для совершения сделки (ошибка песочницы).Пополните баланс нужной валюты через метод [SandboxPayIn](https://russianinvestments.github.io/investAPI/sandbox#sandboxpayin)."
},
"30036": {
- "message": "missing parameter: 'stop_price'",
+ "message": "Missing parameter: `stop_price`",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *stop_price* является обязательным.Укажите корректный параметр *stop_price*."
+ "description": "Входной параметр `stop_price` является обязательным.Укажите корректный параметр `stop_price`."
},
"30037": {
- "message": "missing parameter: 'stop_order_type'",
+ "message": "Missing parameter: `stop_order_type`",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *stop_order_type* является обязательным.Укажите корректный параметр *stop_order_type*."
+ "description": "Входной параметр `stop_order_type` является обязательным.Укажите корректный параметр `stop_order_typ`."
},
"30038": {
- "message": "'stop_order_type' is invalid",
+ "message": "`stop_order_type` is invalid",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *stop_order_type* имеет некорректное значение.Список доступных значений: [*stop_order_type*](https://tinkoff.github.io/investAPI/stoporders/#stopordertype)."
+ "description": "Входной параметр `stop_order_type` имеет некорректное значение.[Список доступных значений](https://russianinvestments.github.io/investAPI/stoporders/#stopordertype)."
+ },
+ "30039": {
+ "message": "Bad request: `trailing_data`",
+ "type": "INVALID_ARGUMENT",
+ "description": "Укажите корректное значение параметра `trailing_data`"
},
"30040": {
- "message": "'expire_date' is invalid",
+ "message": "`expire_date` is invalid",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *expire_date* имеет некорректное значение.Укажите корректный параметр *expire_date*."
+ "description": "Входной параметр `expire_date` имеет некорректное значение.Укажите корректный параметр `expire_date`."
},
"30041": {
- "message": "the method is available only for futures",
+ "message": "The method is available only for futures",
"type": "INVALID_ARGUMENT",
"description": "Метод предназначен только для работы с фьючерсами.Передайте во входные параметры метода идентификатор фьючерса."
},
"30042": {
- "message": "not enough assets for a margin trade",
+ "message": "Not enough assets for a margin trade",
"type": "INVALID_ARGUMENT",
- "description": "Недостаточно активов для маржинальной сделки.Проверьте маржинальные показатели счёта. Вы можете сделать это с помощью метода [*GetMarginAttributes*](https://tinkoff.github.io/investAPI/users#getmarginattributes)."
+ "description": "Недостаточно активов для маржинальной сделки.Проверьте маржинальные показатели счёта — это можно сделать через метод [GetMarginAttributes](https://russianinvestments.github.io/investAPI/users#getmarginattributes)."
},
"30043": {
- "message": "missing parameter: 'expiration_type'",
+ "message": "Missing parameter: `expiration_type`",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *expiration_type* является обязательным.Укажите корректный параметр *expiration_type*."
+ "description": "Входной параметр `expiration_type` является обязательным.Укажите корректный параметр `expiration_type`."
},
"30044": {
- "message": "'expiration_type' is invalid",
+ "message": "`expiration_type` is invalid",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *expiration_type* имеет некорректное значение.Список доступных значений: [*expiration_type*](https://tinkoff.github.io/investAPI/stoporders/#stoporderexpirationtype)."
+ "description": "Входной параметр `expiration_type` имеет некорректное значение.[Список доступных значений](https://russianinvestments.github.io/investAPI/stoporders/#stoporderexpirationtype)."
},
"30045": {
- "message": "missing parameter: 'ticker'",
+ "message": "Missing parameter: `ticker`",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *ticker* является обязательным.Укажите корректный параметр *ticker*."
+ "description": "Входной параметр `ticker` является обязательным.Укажите корректный параметр `ticker`."
},
"30047": {
- "message": "price currency does not match the settlement currency",
+ "message": "Price currency does not match the settlement currency",
"type": "INVALID_ARGUMENT",
- "description": "Валюта цены не совпадает с валютой расчётов по инструменту.Укажите корректную валюту цены. Узнать валюту расчета конкретного инструмента вы можете с помощью метода [*GetInstrumentBy*](https://tinkoff.github.io/investAPI/instruments#getinstrumentby). "
+ "description": "Валюта цены не совпадает с валютой расчётов по инструменту.Укажите корректную валюту цены. Узнать валюту расчета конкретного инструмента можно через метод [GetInstrumentBy](https://russianinvestments.github.io/investAPI/instruments#getinstrumentby). "
},
"30048": {
- "message": "instrument type is not bond",
+ "message": "Instrument type is not bond",
"type": "INVALID_ARGUMENT",
"description": "Метод предназначен только для запроса информации по облигации.Передайте во входные параметры метода идентификатор облигации."
},
"30049": {
- "message": "post order error: %s",
+ "message": "Post order error: %s",
"type": "INVALID_ARGUMENT",
- "description": "Ошибка метода выставления торгового поручения.Подробнее в тексте ошибки."
+ "description": "Ошибка метода выставления торгового поручения.Смотрите подробнее в тексте ошибки."
},
"30050": {
- "message": "'instrument_status' is invalid",
+ "message": "`instrument_status` is invalid",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *instrument_status* имеет некорректное значение.Список доступных значений: [*instrument_status*](https://tinkoff.github.io/investAPI/instruments#instrumentstatus)."
+ "description": "Входной параметр `instrument_status` имеет некорректное значение.[Список доступных значений](https://russianinvestments.github.io/investAPI/instruments#instrumentstatus)."
},
"30051": {
- "message": "account margin status is disabled",
+ "message": "Account margin status is disabled",
"type": "INVALID_ARGUMENT",
"description": "Для данного договора недоступна маржинальная торговля.Для выставления поручений на срочном рынке, необходимо включить маржинальную торговлю в приложении и терминале."
},
"30052": {
- "message": "instrument forbidden for trading by API",
+ "message": "Instrument forbidden for trading by API",
"type": "INVALID_ARGUMENT",
- "description": "Для данного инструмента недоступна торговля через API.Вы можете проверить значение параметра api_trade_available_flag данного инструмента c помощью метода [*GetTradingStatus*](https://tinkoff.github.io/investAPI/marketdata#gettradingstatus)."
+ "description": "Для данного инструмента недоступна торговля через API.Вы можете проверить значение параметра `api_trade_available_flag` данного инструмента через метод [GetTradingStatus](https://russianinvestments.github.io/investAPI/marketdata#gettradingstatus)."
},
"30053": {
- "message": "post stop_order error: %s",
+ "message": "Post stop_order error: %s",
"type": "INVALID_ARGUMENT",
- "description": "Ошибка метода выставления стоп-заявки.Подробнее в тексте ошибки."
+ "description": "Ошибка метода выставления стоп-заявки.Смотрите подробнее в тексте ошибки."
},
"30054": {
- "message": "instrument type is not a share or etf",
+ "message": "Instrument type is not a share or etf",
"type": "INVALID_ARGUMENT",
"description": "Тип инструмента не инвестиционный фонд или акция"
},
"30055": {
- "message": "order_id cannot be longer than 36 characters",
+ "message": "`order_id` cannot be longer than 36 characters",
"type": "INVALID_ARGUMENT",
- "description": "order_id не может быть длиннее 36 символов"
+ "description": "`order_id` не может быть длиннее 36 символов"
},
"30056": {
- "message": "stop order settlement currency is not supported",
+ "message": "Stop order settlement currency is not supported",
"type": "INVALID_ARGUMENT",
"description": "Валюта выставления стоп-заявки не поддерживается"
},
"30057": {
- "message": "the order is a duplicate, but the order report was not found",
+ "message": "The order is a duplicate, but the order report was not found",
"type": "INVALID_ARGUMENT",
- "description": "Заявка является дублем, но отчет по заявке не найден.Проверьте параметр order_id (идентификатор запроса выставления поручения для целей идемпотентности.) - он должен быть уникальным."
+ "description": "Заявка является дублем, но отчет по заявке не найден.Проверьте параметр `order_id` (идентификатор запроса выставления поручения для целей идемпотентности.) - он должен быть уникальным."
},
"30058": {
- "message": "task not completed yet, please try again later",
+ "message": "Task not completed yet, please try again later",
"type": "INVALID_ARGUMENT",
"description": "Выполнение задачи еще не завершено, попробуйте позже."
},
"30059": {
- "message": "cancel order error: %s",
+ "message": "Cancel order error: %s",
"type": "INVALID_ARGUMENT",
- "description": "Ошибка метода отмены заявки.Подробнее в тексте ошибки."
+ "description": "Ошибка метода отмены заявки.Смотрите подробнее в тексте ошибки."
},
"30060": {
- "message": "cancel stop-order error: %s",
+ "message": "Cancel stop-order error: %s",
"type": "INVALID_ARGUMENT",
- "description": "Ошибка метода отмены стоп-заявки.Подробнее в тексте ошибки."
+ "description": "Ошибка метода отмены стоп-заявки.Смотрите подробнее в тексте ошибки."
},
"30061": {
- "message": "'from' value out of range",
+ "message": "`from` value out of range",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *from* имеет некорректное значение.Укажите значение в пределах от 1970-01-01T00:00:00Z до 2099-12-31T23:59:59.999999999Z включительно."
+ "description": "Входной параметр `from` имеет некорректное значение.Укажите значение в пределах от 1970-01-01T00:00:00Z до 2099-12-31T23:59:59.999999999Z включительно."
},
"30062": {
- "message": "'to' value out of range",
+ "message": "`to` value out of range",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *to* имеет некорректное значение.Укажите значение в пределах от 1970-01-01T00:00:00Z до 2099-12-31T23:59:59.999999999Z включительно."
+ "description": "Входной параметр `to` имеет некорректное значение.Укажите значение в пределах от 1970-01-01T00:00:00Z до 2099-12-31T23:59:59.999999999Z включительно."
},
"30063": {
- "message": "'expire_date' value out of range",
+ "message": "`expire_date` value out of range",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *expire_date* имеет некорректное значение.Дата должна быть не ранее текущей и не позднее 2099-12-31T23:59:59.999999999Z."
+ "description": "Входной параметр `expire_date` имеет некорректное значение.Дата должна быть не ранее текущей и не позднее 2099-12-31T23:59:59.999999999Z."
},
"30064": {
- "message": "the required period should not exceed 31 days",
+ "message": "The required period should not exceed 31 days",
"type": "INVALID_ARGUMENT",
"description": "Запрошенный период не может превышать 31 дня.Укажите корректный период."
},
"30065": {
- "message": "missing parameter: 'task_id'",
+ "message": "Missing parameter: `task_id`",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *task_id* является обязательным.Укажите корректный параметр *task_id*."
+ "description": "Входной параметр `task_id` является обязательным.Укажите корректный параметр `task_id`."
},
"30066": {
- "message": "missing parameter: 'payload'",
+ "message": "Missing parameter: `payload`",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *payload* является обязательным.Укажите корректный параметр *payload*."
+ "description": "Входной параметр `payload` является обязательным.Укажите корректный параметр `payload`."
},
"30067": {
- "message": "'action_type' is invalid",
+ "message": "`action_type` is invalid",
"type": "INVALID_ARGUMENT",
- "description": "Некорректное значение *action_type*.Выберите допустимое значение."
+ "description": "Некорректное значение `action_type`.Выберите допустимое значение."
},
"30068": {
"message": "Only limit order is allowed",
"type": "INVALID_ARGUMENT",
- "description": "В настоящий момент возможно выставление только лимитного торгового поручения. Подробнее про [выставление торговых поручений](https://tinkoff.github.io/investAPI/orders_details)."
+ "description": "В настоящий момент возможно выставление только лимитного торгового поручения. [Подробнее про выставление торговых поручений](https://russianinvestments.github.io/investAPI/orders_details)."
},
"30069": {
- "message": "Invalid parameter: 'limit'",
+ "message": "Invalid parameter: `limit`",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *limit* имеет некорректное значение.Значение должно быть меньше или равно 1000."
+ "description": "Входной параметр `limit` имеет некорректное значение.Значение должно быть меньше или равно 1000."
},
"30070": {
- "message": "'from' can't be more than the current date",
+ "message": "`from` can't be more than the current date",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *from* имеет некорректное значение.Укажите значение не превышающее текущую дату и время."
+ "description": "Входной параметр `from` имеет некорректное значение.Укажите значение не превышающее текущую дату и время."
},
"30077": {
- "message": "not available for OTC instruments",
+ "message": "Not available for OTC instruments",
"type": "INVALID_ARGUMENT",
- "description": "Метод недоступен для внебиржевых инструментов.У таких инструментов параметр api_trade_available_flag метода [*GetTradingStatus*](https://tinkoff.github.io/investAPI/marketdata#gettradingstatus) будет иметь значение false."
+ "description": "Метод недоступен для внебиржевых инструментов.У таких инструментов параметр `api_trade_available_flag` метода [GetTradingStatus](https://russianinvestments.github.io/investAPI/marketdata#gettradingstatus) будет иметь значение `false`."
},
"30078": {
"message": "Incorrect minimum price increment",
"type": "INVALID_ARGUMENT",
- "description": "Некорректный шаг изменения цены.Остаток от деления price на min_price_increment должен быть равен 0."
+ "description": "Некорректный шаг изменения цены.Остаток от деления `price` на `min_price_increment` должен быть равен 0."
},
"30079": {
- "message": "instrument is not available for trading",
+ "message": "Instrument is not available for trading",
"type": "INVALID_ARGUMENT",
- "description": "Инструмент недоступен для торгов. Подробнее о [торговых статусах](https://tinkoff.github.io/investAPI/faq_trading_status)."
+ "description": "Инструмент недоступен для торгов. [Подробнее о торговых статусах](https://russianinvestments.github.io/investAPI/faq_trading_status)."
},
"30080": {
- "message": "quantity must be positive",
+ "message": "`quantity` must be positive",
"type": "INVALID_ARGUMENT",
"description": "Количество лотов должно быть положительным числом."
},
"30081": {
- "message": "account status is closed",
+ "message": "Account status is closed",
"type": "INVALID_ARGUMENT",
"description": "Аккаунт закрыт."
},
"30082": {
- "message": "account status is blocked",
+ "message": "Account status is blocked",
"type": "INVALID_ARGUMENT",
"description": "Аккаунт заблокирован."
},
"30083": {
- "message": "order_type is invalid",
+ "message": "`order_type` is invalid",
"type": "INVALID_ARGUMENT",
"description": "Некорректный тип заявки."
},
"30084": {
- "message": "maximum request period has been exceeded",
+ "message": "Maximum request period has been exceeded",
"type": "INVALID_ARGUMENT",
"description": "Превышен лимит запрашиваемого периода."
},
"30085": {
- "message": "price in points is available only for futures and bonds",
+ "message": "Price in points is available only for futures and bonds",
"type": "INVALID_ARGUMENT",
"description": "Тип цены в пунктах доступен только для фьючерсов и облигаций."
},
"30086": {
- "message": "year is invalid",
+ "message": "Year is invalid",
"type": "INVALID_ARGUMENT",
"description": "Некорректный год."
},
"30087": {
- "message": "missing parameter: query",
+ "message": "Missing parameter: `query`",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *query* является обязательным.Укажите не пустой параметр *query*."
+ "description": "Входной параметр `query` является обязательным.Укажите не пустой параметр `query`."
},
"30088": {
- "message": "'from' and 'to' must have the same year",
+ "message": "`from` and `to` must have the same year",
"type": "INVALID_ARGUMENT",
"description": "Запрашиваемые даты должны быть в рамках одного года."
},
"30089": {
- "message": "'to' must not be later than %s",
+ "message": "`to` must not be later than %s",
"type": "INVALID_ARGUMENT",
- "description": "Поле to не должно быть позднее даты, указанной в тексте ошибки.Дата указана в формате ISO 8601."
+ "description": "Поле `to` не должно быть позднее даты, указанной в тексте ошибки.Дата указана в формате ISO 8601."
},
"30090": {
- "message": "missing parameter: 'siebel_id'",
+ "message": "Missing parameter: `siebel_id`",
"type": "INVALID_ARGUMENT",
- "description": "Входной параметр *siebel_id* является обязательным.Укажите корректный параметр *siebel_id*."
+ "description": "Входной параметр `siebel_id` является обязательным.Укажите корректный параметр `siebel_id`."
},
"30091": {
- "message": "quantity of instruments can't be more than 100",
+ "message": "Quantity of instruments can't be more than 100",
"type": "INVALID_ARGUMENT",
"description": "Количество инструментов не может превышать 100."
},
"30092": {
- "message": "trading unavailable on weekends",
+ "message": "Trading unavailable on weekends",
"type": "INVALID_ARGUMENT",
- "description": "Торги недоступны по нерабочим дням. Больше о [торговых сессиях](https://tinkoff.github.io/investAPI/markets)."
+ "description": "Торги недоступны по нерабочим дням. [Подробнее о торговых сессиях](https://russianinvestments.github.io/investAPI/markets)."
},
"30093": {
- "message": "missing parameter: 'figi' or 'instrument_id'",
+ "message": "Missing parameter: `figi` or `instrument_id`",
"type": "INVALID_ARGUMENT",
- "description": "Один из параметров *figi* или *instrument_id* является обязательным."
+ "description": "Один из параметров `figi` или `instrument_id` является обязательным."
},
"30094": {
- "message": "options trading is not available at the moment",
+ "message": "Options trading is not available at the moment",
"type": "INVALID_ARGUMENT",
"description": "Выставление заявок по опционам недоступно."
},
"30095": {
- "message": "the request was not executed by the exchange",
+ "message": "The request was not executed by the exchange",
"type": "INVALID_ARGUMENT",
"description": "Заявка не исполнена биржей.Лимитная заявка может не исполняться по причине недостижения установленной цены на бирже.Рыночная же может не исполняться по причине отсутствия сделок с данными инструментов (низкая ликвидность)."
},
"30096": {
- "message": "the order was rejected, try again later",
+ "message": "The order was rejected, try again later",
"type": "INVALID_ARGUMENT",
"description": "Заявка отклонена, попробуйте повторить позже."
},
"30097": {
- "message": "inappropriate trading session",
+ "message": "Inappropriate trading session",
"type": "INVALID_ARGUMENT",
- "description": "Сейчас эта сессия не идёт. Больше о [торговых сессиях](https://tinkoff.github.io/investAPI/markets)."
+ "description": "Сейчас эта сессия не идёт. [Подробнее о торговых сессиях](https://russianinvestments.github.io/investAPI/markets)."
},
"30098": {
- "message": "currently, there is no trading on this financial instrument",
+ "message": "Currently there is no trading on this financial instrument",
"type": "INVALID_ARGUMENT",
- "description": "Торги по этому финансовому инструменту сейчас не проводятся.Вы можете проверить актуальный торговый статус инструмента с помощью метода [*GetTradingStatus*](https://tinkoff.github.io/investAPI/marketdata#gettradingstatus)."
+ "description": "Торги по этому финансовому инструменту сейчас не проводятся.Проверить актуальный торговый статус инструмента через метод [GetTradingStatus](https://russianinvestments.github.io/investAPI/marketdata#gettradingstatus)."
},
"30099": {
- "message": "the price is outside the limits for this instrument",
+ "message": "The price is outside the limits for this instrument",
"type": "INVALID_ARGUMENT",
- "description": "Цена вне лимитов по инструменту или цена сделки вне лимита. Подробнее про [выставление торговых поручений](https://tinkoff.github.io/investAPI/orders_details)."
+ "description": "Цена вне лимитов по инструменту или цена сделки вне лимита. [Подробнее про выставление торговых поручений](https://russianinvestments.github.io/investAPI/orders_details)."
},
"30100": {
- "message": "the price must be positive",
+ "message": "The price must be positive",
"type": "INVALID_ARGUMENT",
"description": "Цена должна быть положительной."
},
"30101": {
- "message": "to trade this financial instrument, pass the test",
+ "message": "Pass the test to trade this financial instrument",
"type": "INVALID_ARGUMENT",
- "description": "Для торговли этим инструментом пройдите тестирование. О том, как сдать тестирование и кому оно нужно читайте [тут](https://www.tinkoff.ru/blog/articles/test-invest/)."
+ "description": "Для торговли этим инструментом пройдите тестирование. [Подробнее про тестирование](https://www.tbank.ru/blog/articles/test-invest/)."
},
"30102": {
"message": "Required parameters missing",
@@ -472,137 +477,257 @@
"30103": {
"message": "Only best price is allowed",
"type": "INVALID_ARGUMENT",
- "description": "Для инструмента доступно выставление заявки только типа лучшая цена"
+ "description": "Для инструмента доступно выставить заявки только с типом «лучшая цена»."
},
"30104": {
- "message": "price_type is invalid",
+ "message": "`price_type` is invalid",
"type": "INVALID_ARGUMENT",
- "description": "Некорректное значение *price_type*. Значением *price_type* может быть только **PRICE_TYPE_POINT** ИЛИ **PRICE_TYPE_CURRENCY**."
+ "description": "Некорректное значение `price_type`. Значением `price_type` может быть только `PRICE_TYPE_POINT` или `PRICE_TYPE_CURRENCY`."
},
"30105": {
- "message": "exchange_order_type is invalid",
+ "message": "`exchange_order_type` is invalid",
"type": "INVALID_ARGUMENT",
- "description": "Некорректное значение *exchange_order_type*. Значением *exchange_order_type* может быть только **LIMIT** ИЛИ **MARKET**."
+ "description": "Некорректное значение `exchange_order_type`. Значением `exchange_order_type` может быть только `LIMIT` или `MARKET`."
},
"30106": {
- "message": "status is invalid",
+ "message": "`status` is invalid",
"type": "INVALID_ARGUMENT",
- "description": "Некорректное значение *status*. Значением *status* может быть только **ACTIVE**, **EXCECUTED**, **CANCELED** И **EXPIRED**."
+ "description": "Некорректное значение `status`. Значением `status` может быть только `ACTIVE`, `EXCECUTED`, `CANCELED` И `EXPIRED`."
},
"30107": {
- "message": "negative values are not allowed",
+ "message": "Negative values are not allowed",
"type": "INVALID_ARGUMENT",
- "description": "Некорректное значение *limit* и/или *page*. Параметры *limit* и *page* не могут принимать отицательные значения."
+ "description": "Некорректное значение `limit` и/или `page`. Параметры `limit` и `page` не могут принимать отицательные значения."
},
"30108": {
- "message": "specify a lower limit or page value because there are fewer brands",
+ "message": "Specify a lower `limit` or `page` value because there are fewer brands",
"type": "INVALID_ARGUMENT",
"description": "Количество брендов меньше запрашиваемых параметров."
},
+ "30109": {
+ "message": "Maximum transaction amount has been exceeded",
+ "type": "INVALID_ARGUMENT",
+ "description": "Превышена максимальная сумма сделки. Разделите ордер на несколько ордеров меньшего объема."
+ },
+ "30210": {
+ "message": "Trailing data required",
+ "type": "INVALID_ARGUMENT",
+ "description": "Проверьте параметры запроса стоп-заявки. Не заданы `indent` или `spread`."
+ },
+ "30211": {
+ "message": "`indent type` required",
+ "type": "INVALID_ARGUMENT",
+ "description": "Проверьте параметры запроса стоп-заявки. Не задан `indent_type`."
+ },
+ "30212": {
+ "message": "`spread type` required",
+ "type": "INVALID_ARGUMENT",
+ "description": "Проверьте параметры запроса стоп-заявки. Не задан `spread_type`."
+ },
+ "30213": {
+ "message": "`indicator_type` is invalid",
+ "type": "INVALID_ARGUMENT",
+ "description": "Проверьте параметры запроса. Некорректный `indicator_type`."
+ },
+ "30214": {
+ "message": "`type_of_price` is invalid",
+ "type": "INVALID_ARGUMENT",
+ "description": "Проверьте параметры запроса. Некорректный `type_of_price`."
+ },
+ "30215": {
+ "message": "`length` is invalid",
+ "type": "INVALID_ARGUMENT",
+ "description": "Проверьте параметры запроса. Некорректный `length`."
+ },
+ "30216": {
+ "message": "`deviation_data` is invalid",
+ "type": "INVALID_ARGUMENT",
+ "description": "Проверьте параметры запроса. Некорректный параметр `deviation_data`."
+ },
+ "30217": {
+ "message": "`smoothing_data` is invalid",
+ "type": "INVALID_ARGUMENT",
+ "description": "Проверьте параметры запроса. Некорректный параметр `smoothing_data`."
+ },
+ "30218": {
+ "message": "Quantity of instruments can't be more than 3000",
+ "type": "INVALID_ARGUMENT",
+ "description": "Количество инструментов в списке не может быть больше 3000."
+ },
+ "30219": {
+ "message": "`candle_source_type` is invalid",
+ "type": "INVALID_ARGUMENT",
+ "description": "Проверьте параметры запроса. Некорректный параметр `candle_source_type`."
+ },
+ "30221": {
+ "message": "`order_request_id` not in UUID format",
+ "type": "INVALID_ARGUMENT",
+ "description": "Входной параметр `order_request_id` имеет некорректное значение. Укажите параметр `order_request_id` в UUID формате. Максимальная длина — 36 символов."
+ },
+ "30222": {
+ "message": "`signal_id` not in UUID format",
+ "type": "INVALID_ARGUMENT",
+ "description": "Входной параметр `signal_id` имеет некорректное значение. Укажите параметр `signal_id` в UUID формате. Максимальная длина — 36 символов."
+ },
+ "30223": {
+ "message": "`strategy_id` not in UUID format",
+ "type": "INVALID_ARGUMENT",
+ "description": "Входной параметр `strategy_id` имеет некорректное значение. Укажите параметр `strategy_id` в UUID формате. Максимальная длина — 36 символов."
+ },
+ "30224": {
+ "message": "`strategy_type` is not valid",
+ "type": "INVALID_ARGUMENT",
+ "description": "Входной параметр `strategy_type` имеет некорректное значение."
+ },
+ "30225": {
+ "message": "`active` is not valid",
+ "type": "INVALID_ARGUMENT",
+ "description": "Входной параметр `active` имеет некорректное значение."
+ },
+ "30226": {
+ "message": "Specify a lower limit or page value because there are fewer items",
+ "type": "INVALID_ARGUMENT",
+ "description": "Количество элементов меньше запрашиваемых параметров."
+ },
+ "30227": {
+ "message": "Order cancelled",
+ "type": "INVALID_ARGUMENT",
+ "description": "Заявка с заданными параметрами не может быть исполнена и отменена Биржей или Брокером."
+ },
+ "30228": {
+ "message": "`from` or `limit` have to be specified",
+ "type": "INVALID_ARGUMENT",
+ "description": "Необходимо указать один из параметров `from` или `limit`"
+ },
+ "30229": {
+ "message": "Price in points not available",
+ "type": "INVALID_ARGUMENT",
+ "description": "Конвертация цены фьючерса в данный момент не доступна. Возможно фьючерс истек или отсутствуют данные для расчета"
+ },
+ "35001": {
+ "message": "Sandbox accounts limit reached",
+ "type": "INVALID_ARGUMENT",
+ "description": "Достигнут лимит на открытие торговых счетов в песочнице. Чтобы открыть новый счет необходимо закрыть один из существующих."
+ },
"40002": {
- "message": "insufficient privileges",
+ "message": "Insufficient privileges",
"type": "PERMISSION_DENIED",
- "description": "Недостаточно прав для совершения операции.Токен доступа имеет уровень прав read-only, либо у токена нет доступа к указанному счету.Подробнее: [Виды токенов](https://tinkoff.github.io/investAPI/index#_2)"
+ "description": "Недостаточно прав для совершения операции.Токен доступа имеет уровень прав read-only, либо у токена нет доступа к указанному счету.[Подробнее про виды токенов](https://russianinvestments.github.io/investAPI/index#_2)."
},
"40003": {
- "message": "authentication token is missing or invalid",
+ "message": "Authentication token is missing or invalid",
"type": "UNAUTHENTICATED",
- "description": "Токен доступа не найден или не активен.Вы можете выпустить новый токен по ссылке [Настройки](https://www.tinkoff.ru/invest/settings/)"
+ "description": "Токен доступа не найден или не активен.Новый токен можно выпустить в [личном кабинете](https://www.tbank.ru/invest/settings/)."
},
"40004": {
"message": "Working with orders is not available with this account",
"type": "PERMISSION_DENIED",
- "description": "Выставление заявок недоступно с текущего аккаунта.Брокерский счет не найден, не принадлежит пользователю или закрыт, либо на пользователе ограничения (от Tinkoff Invest API или от биржи). В этом случае нужно обратиться в техподдержку. "
+ "description": "Выставление заявок недоступно с текущего аккаунта.Брокерский счет не найден, не принадлежит пользователю или закрыт. Возможно, на пользователе ограничения от T-Invest API или от биржи — в этом случае обратитесь в техподдержку."
},
"50001": {
- "message": "exchange not found",
+ "message": "Exchange not found",
"type": "NOT_FOUND",
- "description": "Биржа не найдена по переданному *exchange_id*.Укажите корректный *exchange_id*."
+ "description": "Биржа не найдена по переданному `exchange_id`.Укажите корректный `exchange_id`."
},
"50002": {
- "message": "instrument not found",
+ "message": "Instrument not found",
"type": "NOT_FOUND",
"description": "Инструмент не найден.Укажите корректный идентификатор инструмента."
},
"50004": {
- "message": "account not found",
+ "message": "Account not found",
"type": "NOT_FOUND",
- "description": "Счёт не найден по переданному *account_id*.Укажите корректный *account_id*."
+ "description": "Счёт по переданному `account_id` не найден.Укажите корректный `account_id`."
},
"50005": {
- "message": "order not found",
+ "message": "Order not found",
"type": "NOT_FOUND",
- "description": "Торговое поручение не найдено по переданному *order_id*.Укажите корректный *order_id*."
+ "description": "Торговое поручение по переданному `order_id` не найдено.Укажите корректный `order_id`."
},
"50006": {
- "message": "stop-order not found",
+ "message": "Stop-order not found",
"type": "NOT_FOUND",
- "description": "Стоп-заявка не найдена по переданному *stop_order_id*.Укажите корректный *stop_order_id*."
+ "description": "Стоп-заявка по переданному `stop_order_id` не найдена.Укажите корректный `stop_order_id`."
},
"50007": {
- "message": "task not found",
+ "message": "Task not found",
"type": "NOT_FOUND",
"description": "Задача не найдена."
},
"50008": {
- "message": "no orderbook provider",
+ "message": "No orderbook provider",
"type": "NOT_FOUND",
"description": "Отсутствует источник данных по стаканам."
},
"50009": {
- "message": "asset not found",
+ "message": "Asset not found",
"type": "NOT_FOUND",
"description": "Актив не найден.Укажите корректный идентификатор актива."
},
"50010": {
- "message": "brand not found",
+ "message": "Brand not found",
"type": "NOT_FOUND",
"description": "Бренд не найден.Укажите корректный идентификатор бренда."
},
+ "50011": {
+ "message": "Strategy not found",
+ "type": "NOT_FOUND",
+ "description": "Стратегия не найдена. Укажите корректный идентификатор стратегии."
+ },
+ "50012": {
+ "message": "Signal not found",
+ "type": "NOT_FOUND",
+ "description": "Сигнал не найден. Укажите корректный идентификатор сигнала."
+ },
"70001": {
- "message": "internal error",
+ "message": "Internal error",
"type": "INTERNAL",
"description": "Внутренняя ошибка сервиса.Если ошибка повторяется, обратитесь в службу технической поддержки."
},
"70002": {
- "message": "internal network error",
+ "message": "Internal network error",
"type": "INTERNAL",
- "description": "Неизвестная сетевая ошибка, попробуйте выполнить запрос позднее.Если ошибка повторяется, обратитесь в службу технической поддержки."
+ "description": "Неизвестная сетевая ошибка, попробуйте выполнить запрос позже.Если ошибка повторяется, обратитесь в службу технической поддержки."
},
"70003": {
- "message": "internal error, please try again later",
+ "message": "Internal error, please try again later",
"type": "INTERNAL",
- "description": "Внутренняя ошибка сервиса, попробуйте выполнить запрос позднее.Если ошибка повторяется, обратитесь в службу технической поддержки."
+ "description": "Внутренняя ошибка сервиса, попробуйте выполнить запрос позже.Если ошибка повторяется, обратитесь в службу технической поддержки."
},
"80001": {
- "message": "limit of open streams exceeded",
+ "message": "Limit of open streams exceeded",
"type": "RESOURCE_EXHAUSTED",
- "description": "Превышен лимит одновременных открытых stream-соединений. Подробнее: [Лимитная политика](https://tinkoff.github.io/investAPI/limits/)"
+ "description": "Превышен лимит одновременных открытых stream-соединений. [Подробнее про лимитную политику](https://russianinvestments.github.io/investAPI/limits/)"
},
"80002": {
- "message": "request limit exceeded",
+ "message": "Request limit exceeded",
"type": "RESOURCE_EXHAUSTED",
- "description": "Превышен лимит запросов в минуту. Подробнее: [Лимитная политика](https://tinkoff.github.io/investAPI/limits/)"
+ "description": "Превышен лимит запросов в минуту. [Подробнее про лимитную политику](https://russianinvestments.github.io/investAPI/limits/)"
},
"80003": {
"message": "The limit on SMS sending has been exceeded, try again in a minute",
"type": "RESOURCE_EXHAUSTED",
- "description": "Превышен лимит на отправку СМС, попробуйте через минуту. Если вы не хотите получать СМС при выставлении заявки, отключите отправку СМС в ЛК."
+ "description": "Превышен лимит на отправку СМС, попробуйте через минуту. Если вы не хотите получать СМС при выставлении заявки, отключите отправку СМС в личном кабинете."
+ },
+ "80004": {
+ "message": "No active subscriptions",
+ "type": "RESOURCE_EXHAUSTED",
+ "description": "В стриме отсутствуют активные подписки."
},
"90001": {
- "message": "need confirmation: %s",
+ "message": "Need confirmation: %s",
"type": "FAILED_PRECONDITION",
- "description": "Требуется подтверждение операции.Подробнее в тексте ошибки."
+ "description": "Требуется подтверждение операции.Смотрите подробнее в тексте ошибки."
},
"90002": {
- "message": "only for qualified investors",
+ "message": "Only for qualified investors",
"type": "FAILED_PRECONDITION",
"description": "Торговля этим инструментом доступна только квалифицированным инвесторам."
},
"90003": {
"message": "The price is too high",
"type": "FAILED_PRECONDITION",
- "description": "Цена заявки слишком высокая. Разбейте заявку на заявки меньшего размера. Подробнее: [Ограничения на стоимость заявки](https://tinkoff.github.io/investAPI/faq_orders/)."
+ "description": "Цена заявки слишком высокая. Разбейте заявку на заявки меньшего размера. [Подробнее про ограничения на стоимость заявки](https://russianinvestments.github.io/investAPI/faq_orders/)."
}
}
diff --git a/investAPI-main/src/docs/example.md b/investAPI-main/src/docs/example.md
index 9fe63eb..c477f3a 100644
--- a/investAPI-main/src/docs/example.md
+++ b/investAPI-main/src/docs/example.md
@@ -1,101 +1,100 @@
# Примеры запросов
-На данной странице представлены примеры запросов по некоторым методам в формате JSON.
+На странице привели примеры запросов по некоторым методам в формате JSON.
-## [PostOrder](/investAPI/orders/#postorder) – Метод выставления заявок
+## [PostOrder](/investAPI/orders/#postorder) – выставить заявку
Задача: выставить лимитную заявку на покупку инструмента.
```
{
-"figi": "BBG000000001", \\ FIGI инструмента по которому выставляется заявка. В данном случае используем Тинькофф Вечный портфель RUB.
-"quantity": "1", \\ количество лотов инструмента
-"price": { \\ цена, по которой будет выставлена заявка
+"figi": "BBG000000001", \\ FIGI инструмента, по которому выставляется заявка. В данном случае используем Т-Банк Вечный портфель RUB
+"quantity": "1", \\ Количество лотов инструмента
+"price": { \\ Цена, по которой будет выставлена заявка
"nano": 600000000,
"units": "5"
},
-"direction": "ORDER_DIRECTION_BUY", \\ Направление заявки, в данном случае покупка
-"accountId": "XXXXXXXXXX", \\ Номер счета с которого будет выставлена заявка
-"orderType": "ORDER_TYPE_LIMIT", \\ Тип заявки, в данном случае лимитная.
-"orderId": "string" \\ ключ идемпотентности.
+"direction": "ORDER_DIRECTION_BUY", \\ Направление заявки, в данном случае — покупка
+"accountId": "XXXXXXXXXX", \\ Номер счёта, с которого будет выставлена заявка
+"orderType": "ORDER_TYPE_LIMIT", \\ Тип заявки, в данном случае — лимитная
+"orderId": "string" \\ Ключ идемпотентности
}
```
-## [ReplaceOrder](/investAPI/orders/#replaceorder) – Метод изменения выставленной заявки
+## [ReplaceOrder](/investAPI/orders/#replaceorder) – изменить выставленную заявку
Задача: изменить выставленную ранее заявку.
```
{
-"accountId": "XXXXXXXXXX", \\ номер счета с которого выставлена заявка
-"orderId": "XXXXXXXXX", \\ номер выставленной заявки
-"idempotencyKey": "string", \\ ключ идемпотентности
-"quantity": "4", \\ новое количество лотов
-"price": { \\ новая цена заявки
+"accountId": "XXXXXXXXXX", \\ Номер счёта, с которого выставлена заявка
+"orderId": "XXXXXXXXX", \\ Номер выставленной заявки
+"idempotencyKey": "string", \\ Ключ идемпотентности
+"quantity": "4", \\ Новое количество лотов
+"price": { \\ Новая цена заявки
"nano": 700000000,
"units": "5"
}
}
```
-## [PostStopOrder](/investAPI/stoporders/#poststoporder) – Метод выставления стоп-заявок
+## [PostStopOrder](/investAPI/stoporders/#poststoporder) – выставить стоп-заявку
Задача: выставить лимитную заявку на покупку инструмента.
```
{
-"figi": "BBG000000001", \\ FIGI инструмента по которому выставляется заявка. В данном случае используем Тинькофф Вечный портфель RUB
-"quantity": "2", \\ количество лотов инструмента
-"price": { \\ цена, по которой будет выставлена заявка
+"figi": "BBG000000001", \\ FIGI инструмента, по которому выставляется заявка. В данном случае используем Т-Банк Вечный портфель RUB
+"quantity": "2", \\ Количество лотов инструмента
+"price": { \\ Цена, по которой будет выставлена заявка
"nano": 600000000,
"units": "5"
},
-"stopPrice": { \\ стоп-цена, она же цена активации заявки. Т.е. когда цена инструмента на бирже достигнет установленной стоп-цены, будет выставлена заявка с указанными параметрами
+"stopPrice": { \\ Стоп-цена, она же цена активации заявки — это значит, когда цена инструмента на бирже достигнет установленной стоп-цены, заявка будет выставлена с указанными параметрами
"nano": 700000000,
"units": "5"
},
-"direction": "STOP_ORDER_DIRECTION_BUY", \\ Направление сделки, в данном случае покупка.
-"accountId": "XXXXXXXXXX", \\ номер счета с которого будет выставлена заявка
-"expirationType": "STOP_ORDER_EXPIRATION_TYPE_GOOD_TILL_CANCEL", \\ срок действия заявки. В данном случае пока не будет отменена
-"stopOrderType": "STOP_ORDER_TYPE_STOP_LIMIT" \\ Тип стоп заявки. В данном случае стоп-лимит.
+"direction": "STOP_ORDER_DIRECTION_BUY", \\ Направление сделки, в данном случае — покупка
+"accountId": "XXXXXXXXXX", \\ Номер счёта, с которого будет выставлена заявка
+"expirationType": "STOP_ORDER_EXPIRATION_TYPE_GOOD_TILL_CANCEL", \\ Срок действия заявки. В данном случае — пока не будет отменена
+"stopOrderType": "STOP_ORDER_TYPE_STOP_LIMIT" \\ Тип стоп-заявки. В данном случае — стоп-лимит
}
```
-## [GetOperationsByCursor](/investAPI/operations/#getoperationsbycursor) – Метод получения операций по счету с курсором
+## [GetOperationsByCursor](/investAPI/operations/#getoperationsbycursor) – получить операции по счёту с курсором
-Задача: получить список операций по счету, за год с постраничным выводом.
+Задача: получить список операций по счёту за год с постраничным выводом.
```
{
-"accountId": "XXXXXXXXX", \\ номер счета, единственный обязательный параметр в этом методе. Можно указать только его и получить первые 100 операции по счету
-"instrumentId": "BBG000000001", \\ параметр в котором вы можете указать figi или instrument_uid инструмента, по которому хотите получить операции. В данном случае используем Тинькофф Вечный портфель RUB
-"from": "2021-11-07T12:49:35.896Z", \\ дата начала периода, с которого отображаются операции.
-"to": "2022-11-07T12:49:35.896Z", \\ дата окончания периода, по который отображаются операции.
-"limit": 1000, \\ лимит вывода количества операций. 1000- максимальный лимит. По-умолчанию передается limit=100
+"accountId": "XXXXXXXXX", \\ Номер счёта, единственный обязательный параметр в этом методе. Можно указать только его и получить первые 100 операций по счёту
+"instrumentId": "BBG000000001", \\ Параметр, в котором вы можете указать FIGI или instrument_uid инструмента, по которому хотите получить операции. В данном случае используем Т-Банк Вечный портфель RUB
+"from": "2021-11-07T12:49:35.896Z", \\ Дата начала периода, с которого отображаются операции
+"to": "2022-11-07T12:49:35.896Z", \\ Дата окончания периода, по который отображаются операции
+"limit": 1000, \\ Лимит вывода количества операций. Максимальный лимит — 1000, значение по умолчанию — 100
"operationTypes": [
-"OPERATION_TYPE_BUY" \\ Тип операций – покупка.
+"OPERATION_TYPE_BUY" \\ Тип операций – покупка
],
-"state": "OPERATION_STATE_EXECUTED" \\ Статус операций, в данном случае исполненные
+"state": "OPERATION_STATE_EXECUTED" \\ Статус операций, в данном случае — исполненные
}
```
-## [GetOperations](/investAPI/operations/#getoperations) – Метод получения операций по счету
+## [GetOperations](/investAPI/operations/#getoperations) – получить операции по счёту
-Задача: получить список операций по счету, за год.
+Задача: получить список операций по счёту за год.
```
{
-"accountId": "XXXXXXXXXX", \\ номер счета, единственный обязательный параметр в этом методе. Можно указать только его и получить первые 100 операции по счету
-"figi": "BBG000000001", \\ параметр в котором вы можете указать figi инструмента, по которому хотите получить операции. В данном случае используем Тинькофф Вечный портфель RUB
-"from": "2021-11-07T12:49:35.896Z", \\ дата начала периода, с которого отображаются операции.
-"to": "2022-11-07T12:49:35.896Z", \\ дата окончания периода, по который отображаются операции.
-"state": "OPERATION_STATE_EXECUTED" \\ Статус операций, в данном случае исполненные
+"accountId": "XXXXXXXXXX", \\ Номер счёта, единственный обязательный параметр в этом методе. Можно указать только его и получить первые 100 операций по счёту
+"figi": "BBG000000001", \\ Параметр, в котором вы можете указать FIGI инструмента, по которому хотите получить операции. В данном случае используем Т-Банк Вечный портфель RUB
+"from": "2021-11-07T12:49:35.896Z", \\ Дата начала периода, с которого отображаются операции
+"to": "2022-11-07T12:49:35.896Z", \\ Дата окончания периода, по который отображаются операции
+"state": "OPERATION_STATE_EXECUTED" \\ Статус операций, в данном случае — исполненные
}
```
-## [GetCandles](/investAPI/marketdata/#getcandles) – Метод получения свечей
+## [GetCandles](/investAPI/marketdata/#getcandles) – получить свечи
Задача: получить минутные свечи за день.
```
{
"from": "2022-11-08T05:47:40.866Z", \\ Дата начала периода запрошенных свечей
"to": "2022-11-09T05:47:40.866Z", \\ Дата окончания периода запрошенных свечей
-"interval": "CANDLE_INTERVAL_1MIN", \\Интервал свечей
-"instrumentId": "BBG000000001" \\ параметр в котором вы можете указать figi или instrument_uid инструмента, по которому хотите получить операции. В данном случае используем Тинькофф Вечный портфель RUB
+"interval": "CANDLE_INTERVAL_1MIN", \\ Интервал свечей
+"instrumentId": "BBG000000001" \\ Параметр, в котором вы можете указать FIGI или instrument_uid инструмента, по которому хотите получить операции. В данном случае используем Т-Банк Вечный портфель RUB
}
-```
-
+```
\ No newline at end of file
diff --git a/investAPI-main/src/docs/extended.md b/investAPI-main/src/docs/extended.md
new file mode 100644
index 0000000..11a56bd
--- /dev/null
+++ b/investAPI-main/src/docs/extended.md
@@ -0,0 +1,14 @@
+По ряду инструментов в T-Invest API есть возможность совершать операции в то время, когда на бирже инструмент не тогуется.
+Торговля имеет ряд ограничений и особенностей и похожа на [торговлю по выходным](/investAPI/weekend).
+
+[Подробнее про особенности торговли в выходные](https://www.tbank.ru/finance/blog/weekend-trading/)
+
+
+## Торгуемые инструменты
+
+Заключать сделки возможно только по [ограниченному списку инструментов](/investAPI/faq_instruments/#1.13).
+Сейчас это инструменты [торговой площадки](/investAPI/markets/) `moex_extended`.
+
+## Расписание торгов
+
+Торговая сессия проходит по [расписанию](/investAPI/instruments#tradingschedules) moex_extended и MOEX_DEALER_WEEKEND.
diff --git a/investAPI-main/src/docs/faq.md b/investAPI-main/src/docs/faq.md
index 899c74c..214d10f 100644
--- a/investAPI-main/src/docs/faq.md
+++ b/investAPI-main/src/docs/faq.md
@@ -1,65 +1,53 @@
-####[Можно ли вывести в API показатели компаний/прогнозы/доходности и т.д.?](#6.1)
-####[Какие документы регламентируют юридическую сторону работы API? ](#6.2)
-####[Как открыть дополнительные брокерские счета для использования в TINKOFF INVEST API?](#6.3)
-####[Какая логика работы с мультисчетами?](#6.4)
-####[Поддерживаются ли сейчас мультисчета в TINKOFF INVEST API?](#6.5)
-####[Поддерживает ли TINKOFF INVEST API работу с внебиржевыми инструментами?](#6.6)
-####[Торговля бумагами Тинькофф через TINKOFF INVEST API](#6.7)
-####[Валюты в TINKOFF INVEST API](#6.8)
+## Вопросы по работе с T-Invest API
-Ответы на часто задаваемые вопросы, относящиеся к работе различных сервисов TINKOFF INVEST API
+### Сервисы T-Invest API
-* [FAQ Сервиса аккаунтов](/investAPI/faq_users/)
-* [FAQ Сервиса инструментов](/investAPI/faq_instruments/)
-* [FAQ Сервиса торговых поручений](/investAPI/faq_orders/)
-* [FAQ Сервиса операций](/investAPI/faq_operations/)
-* [FAQ Сервиса котировок](/investAPI/faq_marketdata/)
-* [FAQ Сервиса стоп-заявок](/investAPI/faq_stoporders/)
-* [FAQ Песочница](/investAPI/faq_sandbox/)
+Ответы на часто задаваемые вопросы по работе с сервисами T-Invest API можно найти в FAQ каждого сервиса:
+* [Сервис аккаунтов](/investAPI/faq_users/)
+* [Сервис инструментов](/investAPI/faq_instruments/)
+* [Сервис торговых поручений](/investAPI/faq_orders/)
+* [Сервис операций](/investAPI/faq_operations/)
+* [Сервис котировок](/investAPI/faq_marketdata/)
+* [Сервис стоп-заявок](/investAPI/faq_stoporders/)
+* [Песочница](/investAPI/faq_sandbox/)
-##Условия использования
+### Можно ли сделать публичный сервис на основе T-Invest API?
-###Можно ли сделать публичный сервис на основе TINKOFF INVEST API?
-Нет, TINKOFF INVEST API предоставляется только клиентам Тинькофф без права на ретрансляцию данных.
+Нет, T-Invest API предоставляется только клиентам Т-Инвестиций без права на ретрансляцию данных.
-###Можно ли вывести в API показатели компаний/прогнозы/доходности и т.д.?
+### Можно ли вывести в API показатели компаний/прогнозы/доходности и т.д.?
-Пока не имеем права выгружать эти данные для автоматизированных систем. Работаем над этим.
+В API есть [фундаментальные показатели](/investAPI/instruments/#getassetfundamentalsresponse), а также [прогнозы](/investAPI/instruments/#getconsensusforecasts).
-###Какие документы регламентируют юридическую сторону работы API?
+### Какие документы регламентируют юридическую сторону работы API?
-Сервис предоставляется в соответствии с [пользовательским соглашением](https://www.tinkoff.ru/about/documents/disclosure/).
+Сервис предоставляется в соответствии с [пользовательским соглашением](https://www.tbank.ru/about/documents/disclosure/).
-###Как открыть дополнительные брокерские счета для использования в TINKOFF INVEST API?
+### Как открыть дополнительные брокерские счета для использования в T-Invest API?
-Дополнительные счета Тинькофф Инвестиций открываются в мобильном приложении. Сделать это
-через TINKOFF INVEST API нельзя.
+Дополнительные счета Т-Инвестиций открываются в мобильном приложении. Сделать это
+через T-Invest API нельзя.
-###Какая логика работы с мультисчетами?
+### Поддерживаются ли сейчас мультисчета в T-Invest API?
-Каждый новый счет полностью изолирован от остальных - портфолио, операции, лимиты,
-гарантийные обеспечения, уровни достаточности средств учитываются по каждому счету
-отдельно. Поэтому может быть ситуация, при которой на одном счете средств хватает с
-избытком, а на другом при нехватке средств и активной маржинальной торговле может
-наступить маржин-колл.
+Да, в T-Invest API можно работать с несколькими счетами. Все ключевые методы принимают
+на входе параметр `account_id` — идентификатор счёта.
-###Поддерживаются ли сейчас мультисчета в TINKOFF INVEST API?
+### Какая логика работы с мультисчетами?
-Да, в TINKOFF INVEST API можно работать с несколькими счетами. Все ключевые методы принимают
-на вход параметр *account_id* (идентификатор счёта).
+Каждый новый счёт полностью изолирован от остальных — портфолио, операции, лимиты,
+гарантийные обеспечения, уровни достаточности средств учитываются по каждому счёту
+отдельно.
-###Поддерживает ли TINKOFF INVEST API работу с внебиржевыми инструментами?
+Поэтому может быть ситуация, когда на одном счёте средств хватает с избытком, а на другом при нехватке средств и активной маржинальной торговле может наступить маржин-колл.
-В данный момент TINKOFF INVEST API предполагает работу только с биржевыми инструментами.
+### Поддерживает ли T-Invest API работу с внебиржевыми инструментами?
-###Торговля бумагами Тинькофф через TINKOFF INVEST API
+Сейчас T-Invest API предполагает работу только с биржевыми инструментами.
-Из-за огромного количества скальперских сделок мы ограничили торговлю БПИФ от УК "Тинькофф Капитал"
-в TINKOFF INVEST API. В данный момент действует ограничение в **100 сделок с этими бумагами в сутки**.
+### Валюты в T-Invest API
-###Валюты в TINKOFF INVEST API
+Получить список доступных валют можно через метод [getInstruments/currencies](/investAPI/instruments#currencies).
-Получить список доступных валют можно при помощи метода [getInstruments/currencies](/investAPI/instruments#currencies).
-
-Обратите внимание, что лотность валют ограничена лотностью, которую предоставляет биржа. Например, по евро и доллару 1 лот равен 1000 единиц валюты.
+>Лотность валют ограничена лотностью, которую предоставляет биржа. Например, по евро и доллару 1 лот равен 1000 единиц валюты.
\ No newline at end of file
diff --git a/investAPI-main/src/docs/faq_corp_action.md b/investAPI-main/src/docs/faq_corp_action.md
index bcfa2ef..7dab446 100644
--- a/investAPI-main/src/docs/faq_corp_action.md
+++ b/investAPI-main/src/docs/faq_corp_action.md
@@ -1,54 +1,51 @@
-#Корпоративные действия
+# Корпоративные действия
-В процессе владения ценными бумагами любой трейдер сталкивается с так называемыми "корпоративными
-действиями". Это события в жизни эмитента ценной бумаги, которое так или иначе влияет на депонента.
-К таким событиям относятся:
+В процессе владения ценными бумагами любой трейдер сталкивается с так называемыми «корпоративными
+действиями» — это события в жизни эмитента ценной бумаги, которые так или иначе влияют на депонента.
-1. **Сплит акций (англ. stock split — дробление бумаг)** — это увеличение количества ценных бумаг, торгуемых на бирже,
+К таким событиям относятся:
+
+Сплит акций (stock split, дробление бумаг) — увеличение количества ценных бумаг, которыми торгуют на бирже,
путём уменьшения их стоимости. Сплит акций не влияет на общую капитализацию компании и проводится с целью
-снижения стоимости отдельной акции. Нужно это, как правило, для упрощения (удешевления) инвестиций в компанию.
-При сплите акций у трейдера изменяется количество данных акций в портфеле на коэффициент сплита. Общая же стоимость
-этих бумаг в портфеле не меняется. Например, компания выпускала 1000 акций по 1 $, а после дробления стало 2000 акций
-по 0,5 $. Количество акций определяет совет директоров. При этом стоимость компании не меняется.
-
-2. **Консолидация (обратный сплит)** — процедура по сути противоположная сплиту и проводится аналогично. С той лишь разницей,
-что количество ценных бумаг в портфеле трейдера будет уменьшено на коэффициент обратного сплита. Если
-компания выпустила 2000 акций по 1 $, после консолидации будет 1000 акций по 2 $. Сколько акций объединить, определяет
-совет директоров.
-
-3. **Выделение (Spinoff)** происходит, когда компания выделяет какую-то свою часть в самостоятельную организацию.
-Компания может отделить от себя несколько частей и создать несколько организаций.
-Ценные бумаги новых организаций распределяются между акционерами основной компании. Как их распределить, определяет
-совет директоров.
-
-4. **Делистинг** — исключение ценных бумаг определённого эмитента из котировального списка фондовой биржи. После
+снижения стоимости отдельной акции. Как правило, это нужно для упрощения (удешевления) инвестиций в компанию.
+ При сплите акций количество этих акций в портфеле у трейдера изменяется на коэффициент сплита. Общая стоимость
+ этих бумаг в портфеле не меняется. Например, компания выпускала 1000 акций по 1$, а после дробления — 2000 акций
+ по 0,5$. Количество акций определяет совет директоров, при этом стоимость компании не меняется.
+
+Консолидация (обратный сплит) — процедура противоположная сплиту, проводится аналогично. Разница в том,
+что количество ценных бумаг в портфеле трейдера уменьшится на коэффициент обратного сплита.
+ Если компания выпустила 2000 акций по 1$, после консолидации это будет 1000 акций по 2$. Совет директоров определяет, сколько акций объединить.
+
+Выделение (Spinoff) — происходит, когда компания выделяет какую-то свою часть в самостоятельную организацию.
+Компания может отделить от себя несколько частей и создать несколько организаций.
+ Ценные бумаги новых организаций распределяются между акционерами основной компании. Совет директоров определяет,как их распределить.
+
+Делистинг — исключение ценных бумаг определённого эмитента из котировального списка фондовой биржи. После
делистинга ценные бумаги компании-эмитента не могут торговаться на бирже, где компания исключена из
-котировального списка. Ценные бумаги, исключенные из котировального списка, могут торговаться на внебиржевом
-рынке ценных бумаг. При делистинге возможны различные сценарии поведения позиций портфеля (выкуп акций эмитентом
-по определённой цене; сохранение позиций за трейдером, но невозможность биржевой торговли; выкуп по рыночной цене и т.п.)
-
-5. **Выплата дивидендов в виде акций** — при таком событии количество акций так же будет увеличено на сумму, эквивалентную
-сумме дивидендов к выплате.
-
-6. **Конвертация ценных бумаг** — бывает, что одна компания покупают другую, что компании сливаются в одну. Во всех этих
-случаях происходит изменение ценных бумаг. Это может быть смена идентификаторов (isin, figi, ticker), номинала, валюты
-расчётов, цены и т.п. В случае данного события так же очень многое зависит от условий, которые были обозначены компанией.
-
-7. **Досрочное погашение (полное или частичное)** — данное событие относится к облигациям, иногда компания может выкупить
-часть или полный выпуск облигаций досрочно по установленной цене. Делается это чаще всего с целью сократить количество
-купонных выплат при достижении финансовых показателей компании.
-
-8. **Погашение в установленный срок** — погашение облигаций в соответствии со сроком их выпуска. В данном случае все облигации
-нужного выпуска в портфеле "продаются" по цене номинала с учётом накопленного купонного дохода.
-
-##Влияние корпоративных действий на котировки и портфель пользователя
+котировального списка.
+ Ценные бумаги, исключенные из котировального списка, могут торговаться на внебиржевом рынке ценных бумаг. При делистинге возможны различные сценарии поведения позиций портфеля — выкуп акций эмитентом по определённой цене, сохранение позиций за трейдером, но невозможность биржевой торговли, выкуп по рыночной цене и другие.
+
+Выплата дивидендов в виде акций — при таком событии количество акций также будет увеличено на сумму, эквивалентную сумме дивидендов к выплате.
+
+Конвертация ценных бумаг — бывает, что одна компания покупают другую или компании сливаются в одну. Во всех этих
+случаях происходит изменение ценных бумаг.
+ Это может быть смена идентификаторов (ISIN, FIGI, ticker), номинала, валюты расчётов, цены и так далее. При этом событии очень многое также зависит от условий, которые были обозначены компанией.
+
+Досрочное погашение (полное или частичное) — это событие относится к облигациям. Иногда компания может выкупить
+часть или полный выпуск облигаций досрочно по установленной цене. Чаще всего это делается с целью сокращения количества купонных выплат при достижении финансовых показателей компании.
+
+Погашение в установленный срок — погашение облигаций в соответствии со сроком их выпуска. В этом случае все облигации нужного выпуска в портфеле «продаются» по цене номинала с учётом накопленного купонного дохода.
+
+
+
+## Влияние корпоративных действий на котировки и портфель пользователя
| Тип корпоративного действия | Влияние на котировки | Влияние на портфель | Влияние на исторические котировки | Влияние на идентификаторы |
| :-------------------------- | :------------------- | :------------------ | :-------------------------------- | ------------------------- |
-| **Сплит акций** | Цена бумаг уменьшается на коэффициент сплита | Количество ценных бумаг в портфеле увеличивается, но общая стоимость остаётся прежней| Уменьшаются на коэффициент сплита | Отсутствует |
-| **Обратный сплит** | Цена бумаг увеличивается на коэффициент обратного сплита | Количество ценных бумаг в портфеле уменьшается, но общая стоимость остаётся прежней | Увеличиваются на коэффициент обратного сплита| Отсутствует |
-| **Выделение** | Прямого влияния нет. Однако, происходит реакция рынка, которая может влиять на цену в ту или иную сторону | Происходит полная или частичная замена одних ценных бумаг на другие | Отсутствует | Создаётся новая ценная бумага |
-| **Делистинг** | Ценные бумаги перестают торговаться на бирже | Отсутствует, но ценные бумаги больше нельзя продать на бирже (иногда доступна внебиржевая торговля) | Отсутствует | Отсутствует |
-| **Выплата дивидендов в виде акций** | Прямого влияния нет, только реакция рынка | Количество акций увеличивается на размер выплаты (по текущему или фиксированному курсу) | Отсутствует | Отсутствует |
-| **Конвертация ценных бумаг** | Прямого влияния нет, только реакция рынка | Одни ценные бумаги заменяются другими | Отсутствует | Идентификаторы изменяются |
-| **Погашение облигаций** | Облигация перестаёт торговаться на бирже | Облигации "продаются" по цене номинала с учётом накопленного купонного дохода | Отсутствует | Отсутствует |
+| **Сплит акций** | Цена бумаг уменьшается на коэффициент сплита | Количество ценных бумаг в портфеле увеличивается, но общая стоимость остаётся прежней| Уменьшаются на коэффициент сплита | Нет |
+| **Обратный сплит** | Цена бумаг увеличивается на коэффициент обратного сплита | Количество ценных бумаг в портфеле уменьшается, но общая стоимость остаётся прежней | Увеличиваются на коэффициент обратного сплита| Нет |
+| **Выделение** | Прямого влияния нет. Но происходит реакция рынка, которая может влиять на цену в ту или иную сторону | Происходит полная или частичная замена одних ценных бумаг на другие | Нет | Создаётся новая ценная бумага |
+| **Делистинг** | Ценные бумаги перестают торговаться на бирже | Нет, но ценные бумаги больше нельзя продать на бирже. Иногда доступна внебиржевая торговля | Нет | Нет |
+| **Выплата дивидендов в виде акций** | Прямого влияния нет, только реакция рынка | Количество акций увеличивается на размер выплаты — по текущему или фиксированному курсу | Нет | Нет |
+| **Конвертация ценных бумаг** | Прямого влияния нет, только реакция рынка | Одни ценные бумаги заменяются другими | Нет | Идентификаторы изменяются |
+| **Погашение облигаций** | Облигация перестаёт торговаться на бирже | Облигации «продаются» по цене номинала с учётом накопленного купонного дохода | Нет | Нет |
diff --git a/investAPI-main/src/docs/faq_csharp.md b/investAPI-main/src/docs/faq_csharp.md
index 304edf5..c849716 100644
--- a/investAPI-main/src/docs/faq_csharp.md
+++ b/investAPI-main/src/docs/faq_csharp.md
@@ -1,13 +1,5 @@
-##SDK для c#
-
-####Официальные SDK:
-* [InvestApi .NET SDK](https://github.com/Tinkoff/invest-api-csharp-sdk)
-
-####Неофициальные SDK:
-
-##Примеры подключения
-
-Примеры подключения и получения данных доступны в репозитории официальной SDK:
-[Tinkoff/invest-api-csharp-sdk/tree/main/Tinkoff.InvestApi.Sample](https://github.com/Tinkoff/invest-api-csharp-sdk/tree/main/Tinkoff.InvestApi.Sample)
+### Официальный SDK
+* [InvestApi .NET SDK](https://github.com/RussianInvestments/invest-api-csharp-sdk).
+- [Примеры подключения и получения данных](https://github.com/RussianInvestments/invest-api-csharp-sdk/tree/main/Tinkoff.InvestApi.Sample)
\ No newline at end of file
diff --git a/investAPI-main/src/docs/faq_custom_types.md b/investAPI-main/src/docs/faq_custom_types.md
index 1fc981e..288da02 100644
--- a/investAPI-main/src/docs/faq_custom_types.md
+++ b/investAPI-main/src/docs/faq_custom_types.md
@@ -1,14 +1,18 @@
-#Нестандартные типы данных TINKOFF INVEST API
+# Нестандартные типы данных T-Invest API
-##Timestamp
-Тип данных Timestamp является основным для передачи времени [в формате protoсol-buffers](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#timestamp) и представляет собой значение в диапазоне интервала дат
-от 0001-01-01T00:00:00Z до 9999-12-31T23:59:59.999999999Z
+## Timestamp
-Timestamp всегда работает в формате UTC с нулевым смещением. Тип Timestamp состоит из двух полей целого типа: seconds и nanos.
+Timestamp — основной тип данных для передачи времени в формате [protoсol-buffers](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#timestamp). Он состоит из значения в диапазоне интервала дат — от `0001-01-01T00:00:00Z` до `9999-12-31T23:59:59.999999999Z`.
-Seconds содержит количество секунд с полуночи (00:00:00) 01.01.1970, а nanos принимает значение от 0 до 999999999.
+Timestamp всегда работает в формате UTC с нулевым смещением и состоит из двух полей целого типа:
+
+Seconds
— количество секунд с полуночи (00:00:00) 01.01.1970;
+Nanos
— значение от 0 до 999999999.
+
+
+
+#### Примеры Timestamp
-####Примеры timestamp
|Seconds|Nanos|Значение|
|:-------|:----------------|:------------------|
|1645718039|0|24 February 2022, 15:53:59.000|
@@ -17,9 +21,9 @@ Seconds содержит количество секунд с полуночи (
{
//Пример конвертации из POSIX функции time()
- Timestamp timestamp;
- timestamp.set_seconds(time(NULL));
- timestamp.set_nanos(0);
+ Timestamp timestamp;
+ timestamp.set_seconds(time(NULL));
+ timestamp.set_nanos(0);
}
@@ -48,22 +52,23 @@ Seconds содержит количество секунд с полуночи (
}
-##MoneyValue
-Данный тип данных используется для параметров, имеющих денежный эквивалент. Например, стоимость ценных бумаг.
+## MoneyValue
+
+Этот тип данных используется для параметров, у которых есть денежный эквивалент — например, стоимость ценных бумаг.
-Тип состоит из трёх параметров:
+MoneyValue состоит из трёх параметров:
-* currency — строковый [ISO-код валюты](https://ru.wikipedia.org/wiki/ISO_4217). Например, RUB или USD.
-* units — целая часть суммы.
-* nano — дробная часть суммы (миллиардные доли).
+* `currency` — строковый [ISO-код валюты](https://ru.wikipedia.org/wiki/ISO_4217). Например, RUB или USD.
+* `units` — целая часть суммы.
+* `nano` — дробная часть суммы, миллиардные доли.
-Для корректной работы с данным типом данных требуется его конвертация в стандартные типы языка программирования,
-который используется для написания торгового робота.
+Чтобы корректно работать с этим типом данных, его нужно сконвертировать в стандартные типы языка программирования,
+который используется для написания торгового робота.
-###Пример конвертации на Java
+### Пример конвертации на Java
{
- //MoneyValue - конвертация из BigDecimal в MoneyValue и обратно
+ //MoneyValue — конвертация из BigDecimal в MoneyValue и обратно
BigDecimal value = new BigDecimal("123.456");
String currency = "RUB";
MoneyValue moneyValue = MoneyValue.newBuilder()
@@ -74,23 +79,25 @@ Seconds содержит количество секунд с полуночи (
BigDecimal bigDecimal = moneyValue.getUnits() == 0 && moneyValue.getNano() == 0 ? BigDecimal.ZERO : BigDecimal.valueOf(moneyValue.getUnits()).add(BigDecimal.valueOf(moneyValue.getNano(), 9));
}
-####Примеры конвертированных значений
+#### Примеры конвертированных значений
+
|Сумма в валюте|Сумма в MoneyValue|
|:---------------|:-----------------|
| 114,25 рублей |`{``"currency": "RUB",``"units": "114",``"nano": 250000000``}`|
|-200,20 долларов|`{``"currency": "USD",``"units": "-200",``"nano": -200000000``}`|
|-0.01 юаней |`{``"currency": "CNY",``"units": "-0",``"nano": -10000000``}`|
-##Quotation
-Данный тип данных аналогичен MoneyValue с той лишь разницей, что в нём не содержится информации о валюте.
+## Quotation
+
+Этот тип данных аналогичен MoneyValue, но в нём не содержится информации о валюте.
-* units — целая часть суммы.
-* nano — дробная часть суммы.
+* `units` — целая часть суммы;
+* `nano` — дробная часть суммы.
-###Пример конвертации на Java
+### Пример конвертации на Java
{
- //Пример конвертации из BigDecimal в Quotation и обратно
+ //Из BigDecimal в Quotation и обратно
BigDecimal value = new BigDecimal("123.456");
Quotation quotation = Quotation.newBuilder()
.setUnits(value != null ? value.longValue() : 0)
@@ -99,9 +106,10 @@ Seconds содержит количество секунд с полуночи (
BigDecimal bigDecimal = quotation.getUnits() == 0 && quotation.getNano() == 0 ? BigDecimal.ZERO : BigDecimal.valueOf(quotation.getUnits()).add(BigDecimal.valueOf(quotation.getNano(), 9));
}
-####Примеры конвертированных значений
+#### Примеры конвертированных значений
+
|Сумма |Сумма в Quotation|
|:-------|:----------------|
| 114,25 |`{``"units": "114",``"nano": 250000000``}`|
|-200,20 |`{``"units": "-200",``"nano": -200000000``}`|
-|-0.01 |`{``"units": "-0",``"nano": -10000000``}`|
+|-0.01 |`{``"units": "-0",``"nano": -10000000``}`|
\ No newline at end of file
diff --git a/investAPI-main/src/docs/faq_golang.md b/investAPI-main/src/docs/faq_golang.md
index 11a47a8..b6a278d 100644
--- a/investAPI-main/src/docs/faq_golang.md
+++ b/investAPI-main/src/docs/faq_golang.md
@@ -1,11 +1,10 @@
+### Официальный SDK
-####Официальный SDK:
+* [invest-api-go-sdk](https://github.com/RussianInvestments/invest-api-go-sdk).
+* [Примеры](https://github.com/RussianInvestments/invest-api-go-sdk/tree/main/examples).
+* [Загрузчик стаканов из стриминга](https://github.com/RussianInvestments/invest-api-go-sdk/blob/main/examples/order_book_download/order_book.go).
-* [invest-api-go-sdk](https://github.com/Tinkoff/invest-api-go-sdk)
-* [примеры](https://github.com/Tinkoff/invest-api-go-sdk/tree/main/examples)
-* [загрузчик стаканов из стриминга](https://github.com/Tinkoff/invest-api-go-sdk/blob/main/examples/order_book_download/order_book.go)
+### Неофициальный SDK
-####Неофициальный SDK:
-
-* [от ssummers02](https://github.com/ssummers02/invest-api-go-sdk)
-* [от vodolaz095](https://github.com/vodolaz095/go-investAPI)
+* [От ssummers02](https://github.com/ssummers02/invest-api-go-sdk).
+* [От vodolaz095](https://github.com/vodolaz095/go-investAPI).
diff --git a/investAPI-main/src/docs/faq_identification.md b/investAPI-main/src/docs/faq_identification.md
index 6ab77c2..1628143 100644
--- a/investAPI-main/src/docs/faq_identification.md
+++ b/investAPI-main/src/docs/faq_identification.md
@@ -1,54 +1,64 @@
# Идентификация торговых инструментов
-Для точного определения различных торговых инструментов используются различные идентификаторы:
+Для точного определения торговых инструментов используются разные идентификаторы:
-1. **Isin**(*англ.:* International Security Identification Number) — международный
-идентификационный номер ценной бумаги, состоит из 12 символов цифр и латинских букв,
-которые начинаются, как правило, с 2-буквенного кода страны эмитента ценной бумаги.
-**Структура ISIN:**
-Первые два символа — буквы, определяющие код страны эмитента согласно стандарту ISO 3166-1 (например, российские ISIN-коды начинаются буквами RU).
-Далее следуют 9 букв и цифр национального идентификационного кода ценной бумаги (англ. National Securities Identifying Number, NSIN). Завершает код контрольная цифра.
-Например, ISIN акции TCS Group — US87238U2033.
+
+Isin (International Security Identification Number) — международный
+идентификационный номер ценной бумаги. Состоит из 12 символов цифр и латинских букв,
+которые обычно начинаются с 2-буквенного кода страны эмитента ценной бумаги.
+Структура ISIN
Первые два символа — буквы, определяющие код страны эмитента согласно стандарту ISO 3166-1 — например, российские ISIN-коды начинаются буквами RU.
Далее — 9 букв и цифр национального идентификационного кода ценной бумаги (National Securities Identifying Number, NSIN).
+Завершает код контрольная цифра. Например, ISIN акции TCS Group — US87238U2033.
+
+Ticker — краткое (1–5 букв) наименование ценной бумаги на конкретной бирже. Без
+указания биржи и режима торгов это просто набор букв — поэтому на российских биржах MOEX и SPBE используется специальный признак «Режим торгов», который соответствует техническому термину class_code
. Комбинация тикера и class_code
является уникальным идентификатором, только тикер — нет.
Например, тикер TCS Group — T.
+
+FIGI (Financial Instrument Global Identifier) — глобальный идентификатор
+финансового инструмента. Представляет собой 12-символьный код из латинских букв и цифр.
+Определяется как идентификатор ценной бумаги на торговой площадке (бирже), которая
+является некоторым «источником цен».
+Обратите внимание: FIGI, присваемые в Т-Инвестициях, не всегда совпадают с международным классификатором. Это устаревший параметр, который не рекомендуется использовать.
+
+
-2. **Ticker** — краткое (1-5 букв) наименование ценной бумаги *на конкретной бирже*. Без
-указания биржи и режима торгов, по сути, является бессмысленным набором букв. Для этого
-на российских биржах MOEX и SPBE используется специальный признак "Режим торгов",
-который соответствует техническому термину "class_сode". Комбинация тикера и "class_code"
-является уникальным идентификатором. Отдельно же, только тикер, - нет.
-Например, тикер TCS Group Tinkoff - TCSG.
+## Идентификаторы из модели финансовых инструментов Т-Инвестиций
-3. **FIGI**(*англ.:* Financial Instrument Global Identifier) — глобальный идентификатор
-финансового инструмента. Представляет собой 12-символьный код из латинских букв и цифр,
-определяется как идентификатор ценной бумаги на торговой площадке (бирже), которая
-является некоторым *"источником цен"*.
+В Т-Инвестициях применяется иерархическая система идентификации финансовых объектов.
-Важно: не всегда FIGI, присваемые в Тинькофф Инвестициях, совпадают с международным классификатором.
-Является устаревшим параметром и не рекомендуется к использованию.
+**Бренд**
-## Идентификаторы из модели финансовых инструментов Тинькофф Инвестиций
+На верхнем уровне находится бренд — работающая на финансовом рынке компания, которая является эмитентом ценных бумаг. Пример бренда — Сбербанк.
-В Тинькофф Инвестициях применяется иерархическая система идентификации финансовых объектов.
-На верхнем уровне находится **актив** - это по сути работающая на финансовом рынке компания, являющаяся эмитентом ценных бумаг. Примером актива может быть например Сбербанк.
+**Актив**
-У актива может несколько финансовых инструментов: акции (в т.ч. на разных биржах), облигации и т.д., каждая из подобных ценных бумаг называется **позиция**. То есть *Позиция* - это совокупность актива, типа и торговой площадки(биржи).
+У бренда может несколько финансовых инструментов: акции, в том числе на разных биржах, облигации и прочее. Каждая из ценных бумаг называется актив.
-Но одна и та же позиция может торговаться в разных режимах торгов и по разной цене: например: валюта разной лотности может иметь различную стоимость; или акцию можно продать за биржевом рынке, так и на внебиржевом (в торговле на выходных). Поэтому есть еще один идентификатор - **торговый инструмент** - он определяется как ценная бумага на торговой площадке (бирже) в указанном режиме торгов. Получить котировки можно только по торговому инструменту.
+**Позиция**
-Подведем итоги,
+Один и тот же актив может торговаться на разных биржах. Совокупность актива и торговой площадки (биржи) — это позиция.
-* идентификатор актива - это asset_uid
-* идентификатор позиции - это position_uid
-* идентификатор торгового инструмента - это instrument_uid
+В некоторых ситуациях размещение бумаг на бирже, выплаты купонов и дивидендов проходят позициям, которые отличаются от тех, что торгуются на бирже или находятся в портфеле.
-Для удобства клиентов, использовавших в своих системах устаревший идентификатор FIGI в многих методах API Тинькофф предусмотрено универсальное поле **Instrument_Id** - в которое можно передавать как FIGI, так и instrument_uid.
+**Торговый инструмент**
+Одна и та же позиция может торговаться в разных режимах торгов и по разной цене. Например, валюта разной лотности может иметь различную стоимость, а акцию можно продать на биржевом и внебиржевом рынках, то есть в торговле на выходных.
-Вы можете получить идентификаторы конкретного инструмента с помощью метода [FindInstrument](/investAPI/instruments/#findinstrument), передав в параметр *query* известный идентификатор или название инструмента.
+Поэтому есть еще один идентификатор — торговый инструмент. Он определяется как ценная бумага на торговой площадке (бирже) в указанном режиме торгов. Получить котировки можно только по торговому инструменту.
-Использование `Instrument_Id` является более предпочтительным, так как предполагает возможность использования
-**instrument_uid** или **FIGI**.
+## Параметры в API
-На данный момент при передаче значения в параметр `Instrument_Id` сначала выполняется поиск инструмента по
-**instrument_uid**, а потом уже по **FIGI**.
+- `uid` бренда — идентификатор компании;
+- `asset_uid` — идентификатор актива;
+- `position_uid` — идентификатор позиции;
+- `instrument_uid` — идентификатор торгового инструмента.
-**Основным идентификатором торгового инструмента при работе с TINKOFF INVEST API является *UID*, так как, например, в опционах идентификатор FIGI не поддерживается**
+### Instrument_Id
+
+Для удобства клиентов, которые в своих системах использовали устаревший идентификатор FIGI, в большинстве методов T-Invest API предусмотрено универсальное поле **Instrument_Id** — в нём можно передавать как `FIGI`, так и `instrument_uid`.
+
+Вы можете получить идентификаторы конкретного инструмента через метод [FindInstrument](/investAPI/instruments/#findinstrument), передав в параметре `query` известный идентификатор или название инструмента.
+
+Сейчас при передаче значения в параметре `Instrument_Id` сначала выполняется поиск инструмента по
+`instrument_uid`, потом — по `FIGI`.
+
+Основной идентификатор торгового инструмента при работе с T-Invest API — UID, так как, например, в
+опционах идентификатор FIGI не поддерживается.
\ No newline at end of file
diff --git a/investAPI-main/src/docs/faq_instruments.md b/investAPI-main/src/docs/faq_instruments.md
index 3c80f75..f023f26 100644
--- a/investAPI-main/src/docs/faq_instruments.md
+++ b/investAPI-main/src/docs/faq_instruments.md
@@ -1,222 +1,251 @@
-####[Что такое Figi инструмента?](#1.1)
-####[Как мне найти Figi инструмента по его названию, тикеру или isin?](#1.2)
-####[Что такое class_code и где его найти?](#1.3)
-####[Как понять, что бумага доступна для торговли через TINKOFF INVEST API?](#1.4)
-####[Что такое накопленный купонный доход облигации и как его узнать?](#1.5)
-####[Как узнать стоимость шага цены (min_price_increment_amount) фьючерса?](#1.6)
-####[Как узнать на какой бирже исполняются расчеты по инструменту?](#1.7)
-####[Как найти базовый актив фьючерса?](#1.8)
-####[Как отличить инструмент доступный для ИИС?](#1.9)
-####[Как получить информацию об брендах?](#1.10)
-####[Как по позиции найти инструмент?](#1.11)
-####[Ставки риска и их коэфффиценты](#1.12)
-####[Как узнать торгуется ли инструмент на выходных?](#1.13)
-####[Какие заявки по опционам возможно выставить?](#1.14)
-####[Что такое liquidity_flag?](#1.15)
-
-###Что такое Figi инструмента?
-
-**FIGI**(*англ.:* Financial Instrument Global Identifier) — глобальный идентификатор
-финансового инструмента. Представляет собой 12-символьный код из латинских букв и цифр,
+### Что такое FIGI инструмента?
+
+**FIGI** (Financial Instrument Global Identifier) — глобальный идентификатор
+финансового инструмента. Представляет собой 12-символьный код из латинских букв и цифр и
определяется как идентификатор ценной бумаги на торговой площадке (бирже), которая
-является некоторым *"источником цен"*.
+является некоторым «источником цен».
+
+Учитывайте, что не у всех инструментов, которые доступны в Т-Инвестициях, есть общепринятый
+FIGI — поэтому уникальность инструментов с другими источниками не гарантируется.
-Нужно понимать, что не все инструменты, доступные в Тинькофф Инвестициях, имеют общепринятый
-Figi. Поэтому не гарантируется уникальность инструментов с другими источниками. Узнать актуальный
-Figi-идентификатор инструмента можно при помощи методов [сервиса инструментов](/investAPI/instruments/).
+Узнать актуальный FIGI-идентификатор инструмента можно через методы [сервиса инструментов](/investAPI/instruments/).
-
-**На данный момент основным идентификатором внутри Тинькофф Инвестиций является uid, который позволяет избежать возможной путаницы.**
+>**Важно**
+>Сейчас основной идентификатор внутри Т-Инвестиций — UID. Он позволяет избежать возможной путаницы.
-###Как мне найти Figi инструмента по его названию, тикеру или isin?
+### Как найти FIGI инструмента по его названию, тикеру или ISIN?
-Методы поиска инструментов по идентификатору ([BondBy](/investAPI/instruments#bondby),
+Через методы поиска инструментов по идентификатору — [BondBy](/investAPI/instruments#bondby),
[CurrencyBy](/investAPI/instruments#currencyby), [EtfBy](/investAPI/instruments#etfby),
-[FutureBy](/instruments#futureby), [ShareBy](/investAPI/instruments#shareby)) позволяют получить
-информацию об инструменте зная его Figi или связку ticker + class_code. Если же эти идентификаторы
-вам неизвестны, вы можете получить полный список инструментов определённого типа методами запроса
-списков инструментов ([Bonds](/investAPI/instruments#bonds),
-[Currencies](/investAPI/instruments#currencies), [Etfs](/investAPI/instruments#etfs),
-[Futures](/instruments#futures), [Shares](/investAPI/instruments#shares)) и выполнить поиск по известным
-параметрам самостоятельно. Сделать это можно в коде робота или при помощи любого доступного gRPC-клиента,
-например, Kreya. Инструкция по настройке Kreya доступна по [ссылке](/investAPI/grpc#kreya).
-
-###Что такое class_code и где его найти?
-
-Сlass_code — это технический параметр "Режим торгов", используемый для обозначения секции биржи, на
-которой торгуется данный инструмент. Узнать его можно, получив детали по инструменту методами сервиса
-инструментов.
-
-###Как понять, что бумага доступна для торговли через TINKOFF INVEST API?
-
-Чтобы получить все доступные для торговли инструменты определённого типа можно воспользоваться
-соответствующими методами, передав параметр **instrument_status** = ***INSTRUMENT_STATUS_BASE***:
-* [Bonds](/investAPI/instruments#bonds)
-* [Currencies](/investAPI/instruments#currencies)
-* [Etfs](/investAPI/instruments#etfs)
-* [Futures](/instruments#futures)
-* [Shares](/investAPI/instruments#shares)
-
-Если же нет необходимости получать полный список инструментов, можно использовать параметр
-**api_trade_available_flag** из ответа метода получения инструмента по его идентификатору
-([BondBy](/investAPI/instruments#bondby),
-[CurrencyBy](/investAPI/instruments#currencyby), [EtfBy](/investAPI/instruments#etfby),
-[FutureBy](/instruments#futureby), [ShareBy](/investAPI/instruments#shareby)). Этот флаг
-отвечает за доступность инструмента для торгов через TINKOFF INVEST API.
-
-Кроме того следует учитывать расписание работы бирж и торговый статус инструмента. Подробнее:
-[Торговые статусы инструментов и расписание торгов](/investAPI/faq_trading_status/).
-
-###Что такое накопленный купонный доход облигации и как его узнать?
+[FutureBy](/instruments#futureby), [ShareBy](/investAPI/instruments#shareby). Они позволяют получить
+информацию об инструменте, зная его FIGI или связку ticker + class_code.
-**Купон, или купонный доход** — это процентные выплаты держателям облигаций со стороны эмитента, то есть
-компании или госоргана, выпустивших этот тип ценных бумаг.
-Даты выплат процентов по облигациям и размер купона известны заранее. Размер купона задается в процентах от
-номинала — то есть от цены облигации при ее выпуске. Величина купона может быть фиксированной или плавающей —
-то есть привязанной к инфляции, ключевой ставке Центробанка России или другим ориентирам. Иногда у облигации
-может вовсе не быть купона. [Купонный доход по облигациям](https://www.tinkoff.ru/invest/account/help/get-profit/coupon-yield).
+Если вы не знаете эти идентификаторы, получить полный список инструментов определённого типа можно через методы запроса
+списков инструментов — [Bonds](/investAPI/instruments#bonds), [Currencies](/investAPI/instruments#currencies), [Etfs](/investAPI/instruments#etfs), [Futures](/instruments#futures), [Shares](/investAPI/instruments#shares). Выполните поиск по известным параметрам самостоятельно — это можно сделать в коде робота или через любый доступный gRPC-клиент,
+например, Kreya. [Инструкция по настройке Kreya](/investAPI/grpc#kreya).
+
+### Что такое `class_code` и где его найти?
+
+`class_code` — это технический параметр «Режим торгов». Используется для обозначения секции биржи, на
+которой торгуется инструмент.
+
+Чтобы его узнать, получите детали по инструменту через методы [сервиса инструментов](/investAPI/instruments/).
+
+### Как понять, что бумага доступна для торговли через T-Invest API?
+
+Чтобы получить все доступные для торговли инструменты определённого типа, передайте параметр `instrument_status` = `INSTRUMENT_STATUS_BASE` в нужном методе:
-Получить календарь купонных выплат можно методом [GetAccruedInterests](/investAPI/instruments#getaccruedinterests).
+* [Bonds](/investAPI/instruments#bonds).
+* [Currencies](/investAPI/instruments#currencies).
+* [Etfs](/investAPI/instruments#etfs).
+* [Futures](/instruments#futures).
+* [Shares](/investAPI/instruments#shares).
-###Как узнать стоимость шага цены(min_price_increment_amount) фьючерса?
+Если вам не нужно получать полный список инструментов, используйте параметр `api_trade_available_flag` из ответа методов получения инструмента по его идентификатору — [BondBy](/investAPI/instruments#bondby), [CurrencyBy](/investAPI/instruments#currencyby), [EtfBy](/investAPI/instruments#etfby), [FutureBy](/instruments#futureby), [ShareBy](/investAPI/instruments#shareby). Он отвечает за доступность инструмента для торгов через T-Invest API.
-Данный параметр может изменяться довольно часто в течении дня, поэтому для его получения существует
-отдельный метод сервиса инструментов [GetFuturesMargin](/investAPI/instruments#getfuturesmargin).
+Также учитывайте расписание работы бирж и торговый статус инструмента. [Подробнее](/investAPI/faq_trading_status/).
-###Как узнать на какой бирже исполняются расчеты по инструменту?
+### Что такое накопленный купонный доход облигации и как его узнать?
-Для определения биржи на которой исполняются расчеты по финансовому инструменту в TINKOFF INVEST API добавлен параметр [real_exchange](/investAPI/instruments/#realexchange).
+**Купон, или купонный доход** — это процентные выплаты держателям облигаций со стороны эмитента, то есть
+компании или госоргана, выпустивших этот тип ценных бумаг.
-Список методов возвращающих в ответе биржу на которой исполняются расчеты:
+Даты выплат процентов по облигациям и размер купона известны заранее. Размер купона задаётся в процентах от
+номинала — то есть от цены облигации при её выпуске. Величина купона может быть фиксированной или плавающей —
+привязанной к инфляции, ключевой ставке Центробанка России или другим ориентирам. Иногда у облигации
+может не быть купона. [Купонный доход по облигациям](https://www.tbank.ru/invest/account/help/get-profit/coupon-yield).
-* [GetInstrumentBy](/investAPI/instruments/#getinstrumentby) - Метод получения основной информации об инструменте.
-* [GetBondBy](/investAPI/instruments/#bondby) - Метод получения облигации по её идентификатору.
-* [GetBonds](/investAPI/instruments/#bonds) - Метод получения списка облигаций.
-* [GetShareBy](/investAPI/instruments/#shareby) - Метод получения акции по её идентификатору.
-* [GetShares](/investAPI/instruments/#shares) - Метод получения списка акций.
-* [GetEtfBy](/investAPI/instruments/#etfby) - Метод получения инвестиционного фонда по его идентификатору.
-* [GetEtfs](/investAPI/instruments/#etfs) - Метод получения списка инвестиционных фондов.
-* [GetFutureBy](/investAPI/instruments/#futureby) - Метод получения фьючерса по его идентификатору.
-* [GetFutures](/investAPI/instruments/#futures) - Метод получения списка фьючерсов.
-* [GetCurrencyBy](/investAPI/instruments/#currencyby) - Метод получения валюты по её идентификатору.
-* [GetCurrencies](/investAPI/instruments/#currencies) - Метод получения списка валют.
-* [GetOptionBy](/investAPI/instruments/#optionby) - Метод получения опциона по его идентификатору.
-* [GetOptions](/investAPI/instruments/#options) - Метод получения опционов.
+Получить календарь купонных выплат можно через метод [GetAccruedInterests](/investAPI/instruments#getaccruedinterests).
+### Как узнать стоимость шага цены (min_price_increment_amount) фьючерса?
-###Как найти базовый актив фьючерса?
+Этот параметр может изменяться довольно часто в течение дня, поэтому для его получения есть
+отдельный метод сервиса инструментов — [GetFuturesMargin](/investAPI/instruments#getfuturesmargin).
-Используя метод [FindInstrument](/investAPI/instruments/#findinstrument) можно найти базовый актив фьючерса. Для этого достаточно передать в query значение параметра *basic_asset_position_uid*, возвращаемое методами [GetFutureBy](/investAPI/instruments/#futureby) и [GetFutures](/investAPI/instruments/#futures).
+### Как узнать, на какой бирже исполняются расчёты по инструменту?
-###Как получить и изменить список избранных инструментов?
+В T-Invest API есть параметр [real_exchange](/investAPI/instruments/#realexchange) — он передаётся для определения биржи, на которой исполняются расчёты по финансовому инструменту.
-Используя метод [GetFavorites](/investAPI/instruments#getfavorites) можно получить список избранных инструментов клиента.
-Данный метод может использоваться разработчиками для получения списка инструментов, которые робот добавил в избранное используя метод [EditFavorites](/investAPI/instruments#editfavorites).
+Список методов:
-Для добавления или удаления инструментов из списка избранных можно использовать [EditFavorites](/investAPI/instruments#editfavorites).
-Данный метод позволяет разработчикам автоматизировать выделение наиболее интересных инструментов путем редактирования списка избранных инструментов.
-Использование метода ограничено 100 инструментов. При попытке передать больше 100 инструментов будет возвращена ошибка "code":"30091" и "message":"quantity of instruments can't be more than 100".
+* [GetInstrumentBy](/investAPI/instruments/#getinstrumentby) — получить основную информацию об инструменте.
+* [BondBy](/investAPI/instruments/#bondby) — получить облигацию по её идентификатору.
+* [Bonds](/investAPI/instruments/#bonds) — получить список облигаций.
+* [ShareBy](/investAPI/instruments/#shareby) — получить акцию по её идентификатору.
+* [Shares](/investAPI/instruments/#shares) — получить список акций.
+* [EtfBy](/investAPI/instruments/#etfby) — получить инвестиционный фонд по его идентификатору.
+* [Etfs](/investAPI/instruments/#etfs) — получить список инвестиционных фондов.
+* [FutureBy](/investAPI/instruments/#futureby) — получить фьючерс по его идентификатору.
+* [Futures](/investAPI/instruments/#futures) — получить список фьючерсов.
+* [CurrencyBy](/investAPI/instruments/#currencyby) — получить валюту по её идентификатору.
+* [Currencies](/investAPI/instruments/#currencies) — получить список валют.
+* [OptionBy](/investAPI/instruments/#optionby) — получить опцион по его идентификатору.
+* [Options](/investAPI/instruments/#options) — получить опционы.
-**Важно!!!** Если вы хотите добавить в список избранных инструментов валюту, то это необходимо делать через валюту с лотностью = 1.
-Инструменты валюты с разной лотностью имеют разные значения идентификаторов.
-Например,
+### Как найти базовый актив фьючерса?
-* FIGI доллара США с **лотностью 1000** - TCS0013HGFT4, а FIGI доллара США с **лотностью 1** - USD000UTSTOM.
-* FIGI евро с **лотностью 1000** - BBG0013HJJ31, а FIGI доллара США с **лотностью 1** - EUR000UTSTOM.
+Чтобы найти базовый актив фьючерса, можно использовать метод [FindInstrument](/investAPI/instruments/#findinstrument) — для этого в **query** передайте значение параметра `basic_asset_position_uid`, которое возвращается в методах [GetFutureBy](/investAPI/instruments/#futureby) и [GetFutures](/investAPI/instruments/#futures).
-###Как отличить инструмент доступный для ИИС?
+### Как получить и изменить список избранных инструментов?
-В методах получения информации об инструментах добавлен флаг `For_iis_flag` принимающий булево значение в зависимости от доступности инструмента для ИИС.
+
+Список избранных инструментов можно получить через метод GetFavorites — в ответе возвращаются инструменты, которые робот добавил в избранное через метод EditFavorites.
+
+Добавить или удалить инструменты из списка избранных можно через метод EditFavorites. С помощью него можно автоматизировать выделение наиболее интересных инструментов через редактирование списка избранных инструментов.
+ Ограничение на использование метода — 100 инструментов. Если вы передадите больше 100 инструментов, вернётся ошибка с кодом 30091
и сообщением quantity of instruments can't be more than 100
.
+
+
-###Как получить информацию об активах?
+>**Важно**
+>Если вы хотите добавить валюту в список избранных инструментов, это нужно делать через валюту с лотностью 1. Инструменты валюты с разной лотностью имеют разные значения идентификаторов.
+>У позиции (валюты) есть разные инструменты, которыми можно торговать. Например, у доллара это могут быть инструменты с лотностью в 1 доллар или 1000 долларов.
+>Примеры идентификаторов:
+>
+>- FIGI доллара США с лотностью
1000
— TCS0013HGFT4
, а FIGI доллара США с лотностью 1
— USD000UTSTOM
.
+>- FIGI евро с лотностью
1000
— BBG0013HJJ31
, а FIGI доллара США с лотностью 1
— EUR000UTSTOM
.
+>
-В TINKOFF INVEST API представлены два метода для получения активов.
+### Как отличить инструмент доступный для ИИС?
-Используя метод [getAssets](/investAPI/instruments/#getassets) сервиса инструментов можно получить список всех активов. Метод работает для всех инструментов, за исключением срочных - опционов и фьючерсов.
+В методах для получения информации об инструментах есть флаг `for_iis_flag` — он принимает булевое значение в зависимости от доступности инструмента для ИИС.
-Используя метод [getAssetBy](/investAPI/instruments/#getassetby) сервиса инструментов можно найти актив по его идентификатору.
-Этот метод возвращает более подробную информацию о запрошенном активе. Набор данных отличается в зависимости от типа актива.
+### Как получить информацию об активах?
+В T-Invest API есть два метода для получения активов:
+
+getAssets — получить список всех активов. Метод работает для всех инструментов, кроме срочных: опционов и фьючерсов. Возвращает краткую информацию об активе:
+
+- Идентификатор.
+- Тип актива.
+- Название актива.
+- Массив инструментов актива.
+
+
+getAssetBy — найти актив по его идентификатору.
+Метод возвращает более подробную информацию о запрошенном активе. Набор данных отличается в зависимости от типа актива.
+
+
-###Как получить информацию об брендах?
+### Как получить информацию об брендах?
-В TINKOFF INVEST API представлены два метода для получения брендов.
+В T-Invest API есть два метода для получения брендов:
-Используя метод [getBrands](/investAPI/instruments/#getbrands) сервиса инструментов можно получить список всех брендов.
+1. [Brands](/investAPI/instruments/#getbrands) — получить список всех брендов.
-Используя метод [getBrandBy](/investAPI/instruments/#getbrandby) сервиса инструментов можно найти бренд по его идентификатору.
+2. [BrandBy](/investAPI/instruments/#getbrandby) — найти бренд по его идентификатору.
-###Как по позиции найти инструмент?
+### Как по позиции найти инструмент?
-Для поиска инструмента по идентификатору позиции (Position_uid) добавлен тип идентификатора инструмента - INSTRUMENT_ID_TYPE_POSITION_UID.
+Для поиска инструмента по идентификатору позиции (`position_uid`) есть тип идентификатора инструмента — `INSTRUMENT_ID_TYPE_POSITION_UID`.
-Использовать `id_type = INSTRUMENT_ID_TYPE_POSITION_UID` можно методах:
+Использовать `id_type = INSTRUMENT_ID_TYPE_POSITION_UID` можно в методах:
-* [GetInstrumentBy](/investAPI/instruments/#getinstrumentby) - Метод получения основной информации об инструменте.
-* [GetBondBy](/investAPI/instruments/#bondby) - Метод получения облигации по её идентификатору.
-* [GetShareBy](/investAPI/instruments/#shareby) - Метод получения акции по её идентификатору.
-* [GetEtfBy](/investAPI/instruments/#etfby) - Метод получения инвестиционного фонда по его идентификатору.
-* [GetFutureBy](/investAPI/instruments/#futureby) - Метод получения фьючерса по его идентификатору.
-* [GetOptionBy](/investAPI/instruments/#optionby) - Метод получения опциона по его идентификатору.
-* [GetCurrencyBy](/investAPI/instruments/#currencyby) - Метод получения валюты по её идентификатору.
+* [InstrumentBy](/investAPI/instruments/#getinstrumentby) — получить основную информацию об инструменте.
+* [BondBy](/investAPI/instruments/#bondby) — получить облигацию по её идентификатору.
+* [ShareBy](/investAPI/instruments/#shareby) — получить акцию по её идентификатору.
+* [EtfBy](/investAPI/instruments/#etfby) — получить инвестиционный фонд по его идентификатору.
+* [FutureBy](/investAPI/instruments/#futureby) — получить фьючерс по его идентификатору.
+* [OptionBy](/investAPI/instruments/#optionby) — получить опцион по его идентификатору.
+* [CurrencyBy](/investAPI/instruments/#currencyby) — получить валюту по её идентификатору.
-###Ставки риска и их коэфффиценты
+### Ставки риска и их коэфффиценты
Чтобы лучше понять тему, вы можете ознакомиться с материалами, указанными в ссылках. Здесь же мы приведем лишь краткое определения и раскроем суть параметров.
-**Ставка риска** — это показатель, который брокер использует для расчета суммы, которую вам нужно иметь на счете, чтобы открыть или поддерживать непокрытую позицию. Чем ниже ставка риска, тем крупнее может быть непокрытая позиция — то есть брокер будет готов одолжить больше активов. И наоборот — с высокой ставкой риска размер кредитного плеча в сделке будет небольшим или его не будет вовсе. Больше о [ставках риска](https://www.tinkoff.ru/invest/help/brokerage/account/margin/about/#q5).
+**Ставка риска** — это показатель, который брокер использует для расчёта суммы, которую вам нужно иметь на счёте, чтобы открыть или поддерживать непокрытую позицию. Чем ниже ставка риска, тем крупнее может быть непокрытая позиция — то есть брокер будет готов одолжить больше активов. И наоборот: с высокой ставкой риска размер кредитного плеча в сделке будет небольшим или его не будет вообще. [Подробнее о ставках риска](https://www.tbank.ru/invest/help/brokerage/account/margin/about/#q5).
-**Стандартный и повышенный уровни риска**. Клиенты российских брокеров — физические лица — делятся на две категории: клиенты со стандартным уровнем риска (**КСУР**) и клиенты с повышенным уровнем риска (**КПУР**). Клиентам со стандартным уровнем доступно меньшее **кредитное плечо**, чем КПУР.
+**Уровни риска** — Клиенты российских брокеров — физические лица делятся на несколько категорий. Каждой категории соответствует свое кредитное плечо. В методах сервиса инструментов в параметрах `dshort_client` и `dlong_client` передается ставка риска уже с учетом категории.
-**Кредитное плечо** — это беспроцентный заем, который брокер предоставляет инвестору для совершения сделок на более крупные суммы. Это соотношение между собственными средствами трейдера и заемными деньгами, предоставляемыми брокером или дилинговым центром на специальных условиях.
+**Кредитное плечо** — это беспроцентный заём, который брокер предоставляет инвестору для совершения сделок на более крупные суммы. Это соотношение между собственными средствами трейдера и заёмными деньгами, которые предоставляет брокер или дилинговый центр на специальных условиях.
-**Начальная маржа** — это стоимость всех ликвидных активов и фьючерсов в портфеле инвестора, приведенная к рублям по биржевому курсу и умноженная на ставки риска этих активов
+**Начальная маржа** — это стоимость всех ликвидных активов и фьючерсов в портфеле инвестора, приведённая к рублям по биржевому курсу и умноженная на ставки риска этих активов.
-**Скорректированная маржа** — это показатель, аналогичный начальной марже, но при этом учитывающий выставленные вами лимитные заявки на увеличение позиции (на любую покупку или на продажу в шорт).
+**Скорректированная маржа** — показатель, аналогичный начальной марже, но учитывающий выставленные вами лимитные заявки на увеличение позиции (на любую покупку или на продажу в шорт).
**Минимальная маржа** — это половина от начальной или скорректированной маржи портфеля.
-**Лонг, или длинная позиция**, — это сделка по покупке актива, когда инвестор ожидает роста его цены. Если инвесторы хотят заработать на растущем рынке, они торгуют в лонг. [Как торговать в шорт?](https://www.tinkoff.ru/invest/help/brokerage/account/margin/long/)
+**Лонг, или длинная позиция** — это сделка по покупке актива, когда инвестор ожидает роста его цены. Если инвесторы хотят заработать на растущем рынке, они торгуют в лонг.
+
+**Шорт, или короткая позиция** — это сделка по продаже полученного в долг актива с целью выкупа его дешевле через некоторое время и заработка на разнице цен. Когда инвесторы хотят получить прибыль за счёт снижения стоимости актива, они торгуют в шорт — также это называется «игрой на понижение» или «непокрытой продажей». [Подробнее о торговле в шорт](https://www.tbank.ru/invest/help/brokerage/account/margin/short/).
+
+В методах сервиса инструментов есть параметры, связанные со ставками риска:
+
+klong
— коэффициент ставки риска длинной позиции по клиенту:
+
+- 2 — клиент со стандартным уровнем риска (КСУР);
+- 1 — клиент с повышенным уровнем риска (КПУР).
+
+
+kshort
— коэффициент ставки риска короткой позиции по клиенту:
+
+- 2 – клиент со стандартным уровнем риска (КСУР);
+- 1 – клиент с повышенным уровнем риска (КПУР).
+
+
+dlong
— ставка риска начальной маржи для КСУР лонг.
+
+dshort
— ставка риска начальной маржи для КСУР шорт.
+dlong_min
— ставка риска начальной маржи для КПУР лонг.
+dshort_min
— ставка риска начальной маржи для КПУР шорт.
+
+
+Коэффициенты маржинальной торговли есть только у инструментов из [перечня ликвидного имущества](https://www.tbank.ru/invest/margin/equities/).
+
+### Как узнать, торгуется ли инструмент на выходных?
+
+В методах инстурментов есть флаг `weekend_flag`:
+
+- `true` — инструмент торгуется;
+- `false` — инструмент не торгуется.
+
+### Какие заявки можно выставить по опционам?
-**Шорт или короткая позиция**, - это сделка по продаже полученного в долг актива с целью через некоторое время выкупить его дешевле и заработать на разнице цен. Когда инвесторы хотят получить прибыль за счет снижения стоимости актива, они торгуют в шорт (также известен как «игра на понижение» или «непокрытая продажа»). [Как торговать в шорт?](https://www.tinkoff.ru/invest/help/brokerage/account/margin/short/)
+Сейчас торговля опционами через API недоступна.
+### Что такое `liquidity_flag`?
-В методе сервиса инструментов в методах есть ряд параметров, связанных со ставками риска:
+**Ликвидность** — это способность быстро продать актив по рыночной цене, то есть без скидок. Чем быстрее это можно сделать, тем выше ликвидность актива.
-**klong** - Коэффициент ставки риска длинной позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР). 1 – клиент с повышенным уровнем риска (КПУР).
-**kshort** - Коэффициент ставки риска короткой позиции по клиенту. 2 – клиент со стандартным уровнем риска (КСУР). 1 – клиент с повышенным уровнем риска (КПУР).
-**dlong** - Ставка риска начальной маржи для КСУР лонг.
-**dshort** - Ставка риска начальной маржи для КСУР шорт.
-**dlong_min** - Ставка риска начальной маржи для КПУР лонг.
-**dshort_min** - Ставка риска начальной маржи для КПУР шорт.
+ Ликвидность инструмента на фондовом рынке оценивают по количеству совершаемых сделок — то есть по объёму торгов — и величине спреда.
-Коэффициенты маржинальной торговли появляются только на тех инструментах, которые были в [перечне ликвидного имущества](https://www.tinkoff.ru/invest/margin/equities/).
+**Спред** — это разница между максимальными ценами заявок на покупку и минимальными ценами заявок на продажу. Чем больше сделок и меньше разница, тем выше ликвидность.
-###Как узнать торгуется ли инструмент на выходных?
+Раз в полчаса брокер рассчитывает ликвидность по всем финансовым инструментам:
-Для отображения информации о возможности торговли инструментам по выходным добавлен флаг `weekend_flag`.
+- Для облигаций — `liquidity` = `((Среднедневная цена * current_nominal)/100) * (Дневной объём торгов)`.
+- В остальных случаях — `liquidity` = `(Среднедневная цена) * (Дневной объём торгов)`.
-###Какие заявки по опционам возможно выставить?
+На основе значения `liqudity` для разных типов финансовых инструментов устанавливается значение флага `liquidity_flag`:
-Торговля опционами через API в данный момент не доступна.
+- `true` — инструмент считается ликвидным;
+- `false` — инструмент не считается ликвидным.
-###Что такое liquidity_flag?
+### Корпоративные действия и изменение идентификатора инструмента
-**Ликвидность** — это способность быстро продать какой-то актив по рыночной цене, то есть без скидок. Чем быстрее это можно сделать, тем выше ликвидность актива.
+**Корпоративные действия** — это события, связанные с ценной бумагой: например, сплит, консолидация, конвертация и другие. Каждое корпоративное действие индивидуально и имеет свои условия.
-Ликвидность инструмента на фондовом рынке оценивают по количеству совершаемых сделок (то есть по объему торгов) и величине спреда. **Спред** — это разница между максимальными ценами заявок на покупку и минимальными ценами заявок на продажу. Чем больше сделок и меньше разница, тем выше ликвидность.
+Некоторые корпоративные действия приводят к изменению инструмента и его параметров на бирже — новый тикер, изменение лотности, шага цены, стоимости. После таких событий:
-Раз в полчаса брокер рассчитывает ликвидность по всем финансовым инструментом:
+* создаётся новый инструмент с новыми идентификаторами — FIGI, UID;
+* позиция переносится на новый инструмент;
+* операции начинают проводиться по созданному инструменту;
+* старый инструмент помечается удалённым и становится недоступен в API;
+* исторические данные по инструменту, который существовал до корпоративного действия, больше недоступны.
-**Для облигаций:**
+### Как скачать логотип компании?
-liquidity = ((Среднедневная цена * current_nominal)/100) * (Дневной объем торгов)
+В методах [GetBondBy](/investAPI/instruments/#bondby), [GetBonds](/investAPI/instruments/#bonds), [GetShareBy](/investAPI/instruments/#shareby), [GetShares](/investAPI/instruments/#shares),
+[GetEtfBy](/investAPI/instruments/#etfby), [GetEtfs](/investAPI/instruments/#etfs), [GetFutureBy](/investAPI/instruments/#futureby), [GetFutures](/investAPI/instruments/#futures),
+[GetCurrencyBy](/investAPI/instruments/#currencyby), [GetCurrencies](/investAPI/instruments/#currencies) есть информация о бренде, в том числе логотип компании.
-**В остальных случаях:**
+Чтобы скачать логотип, сформируйте запрос вида `https://invest-brands.cdn-tinkoff.ru/.png>`, где `.png>` — логотип компании с размерами в точках. Доступные размеры — 160x, 320x, 640x.
-liquidity = (Среднедневная цена) * (Дневной объем торгов)
+**Пример**
-На основе значения *liqudity* для разных типов финансовых инструментов устанавливается значение флага *liquidity_flag*, который принимает для значения:
+Логотип компании TCS Group — `US87238U20333.png`. Запрос будет одним из следующих:
-- **true** - инструмент **считается** ликвидным
-- **false** - инструмент **не считается** ликвидным
\ No newline at end of file
+| Размер логотипа | Запрос |
+|:----------------|:-------------------------------------------------------------------------------------------------------------------------|
+| 160x | [https://invest-brands.cdn-tinkoff.ru/US87238U20333x160.png](https://invest-brands.cdn-tinkoff.ru/US87238U20333x160.png) |
+| 320x | [https://invest-brands.cdn-tinkoff.ru/US87238U20333x320.png](https://invest-brands.cdn-tinkoff.ru/US87238U20333x320.png) |
+| 640x | [https://invest-brands.cdn-tinkoff.ru/US87238U20333x640.png](https://invest-brands.cdn-tinkoff.ru/US87238U20333x640.png) |
\ No newline at end of file
diff --git a/investAPI-main/src/docs/faq_java.md b/investAPI-main/src/docs/faq_java.md
index 9c8d056..e7f72a7 100644
--- a/investAPI-main/src/docs/faq_java.md
+++ b/investAPI-main/src/docs/faq_java.md
@@ -1,39 +1,45 @@
-##SDK для Java
+### Официальный SDK
-####Официальные SDK:
-* [invest-api-java-sdk](https://github.com/Tinkoff/invest-api-java-sdk)
-
-####Неофициальные SDK:
+* [invest-api-java-sdk](https://github.com/RussianInvestments/invest-api-java-sdk).
+- [Примеры подключения и получения данных](https://github.com/RussianInvestments/invest-api-java-sdk/blob/main/example/src/main/java/ru/tinkoff/piapi/example/Example.java).
+### Основные классы для работы
-##Примеры взаимодействия:
+
+ManagedChannel — абстракция канала до сервера. Используйте один и тот же канал во всём приложении.
+ При создании канала рекомендуем использовать метод io.grpc.ManagedChannelBuilder#useTransportSecurity
, так как сервер API поддерживает только защищённое соединение.
+ Для автоматической проверки работоспособности канала при иницииализации используйте метод io.grpc.ManagedChannelBuilder#keepAliveTime
. Допустимое время keepAlive
— не меньше 10 секунд.
+
+Stub — сгенерированные классы клиентов для сервисов API. Есть три варианта клиентов:
+
+- Не блокирующий —
ServiceNameStub
, например InstrumentsServiceStub
. Все методы такого клиента принимают два параметра: запрос и обработчик результата вызова io.grpc.stub.StreamObserver
. Методы обработчика будут вызваны после получения результата. Не рекомендуется выполнять блокирующие операции (I/O, любые операции с ожиданием завершения) в методах обработчика.
+- Блокирующий —
ServiceNameBlockingStub
, например InstrumentsServiceBlockingStub
. Все методы такого клиента принимают один параметр — запрос — и возвращают результат либо выбрасывают исключение. Вызов метода блокирует поток исполнения до получения результата или исключения.
+- Асинхронный —
ServiceNameFutureStub
, например InstrumentsServiceFutureStub
. Все методы такого клиента принимают один параметр — запрос — и возвращают объект типа com.google.common.util.concurrent.ListenableFuture
.
+
+
+
-Примеры подключения и получения данных доступны в репозитории официальной SDK:
-[/tinkoff/piapi/example/Example.java](https://github.com/Tinkoff/invest-api-java-sdk/blob/main/example/src/main/java/ru/tinkoff/piapi/example/Example.java)
+### Таймаут запроса
-### Основные классы для работы
-`ManagedChannel` - абстракция канала до сервера. Следует переиспользовать один и тот же канал во всем приложении.
+В gRPC вместо таймаута используется `deadline` — время в будущем, до наступления которого будет ожидаться выполнение вызова.
-При создании канала следует использовать метод `io.grpc.ManagedChannelBuilder#useTransportSecurity`, т.к. сервер API поддерживает только защищенное соединение.
+Если результат не получен и deadline наступил, возникнет ошибка с кодом `DEADLINE_EXCEEDED`. При этом может быть ситуация, когда на сервере API операция была обработана успешно. Для критичных действий используйте ключ идемпотентности.
-Для автоматической проверки работоспособности канала следует использовать метод `io.grpc.ManagedChannelBuilder#keepAliveTime` при иницииализации. Допускается время `keepAlive` не менее 10 секунд.
+Рекомендуем устанавливать `deadline` через метод `io.grpc.stub.AbstractStub#withDeadlineAfter`.
-`*Stub` - сгенерированные классы клиентов для сервисов API.
-Существует три варианта клиентов:
-1. Неблокирующий - `ServiceNameStub`, например `InstrumentsServiceStub`. Все методы такого клиента принимают два параметра: запрос и обработчик результата вызова `io.grpc.stub.StreamObserver`. Методы обработчика будут вызваны после получения результата. Не рекомендуется выполнять блокирующие операции (I/O, любые операции с ожиданием завершения) в методах обработчика.
-2. Блокирующий - `ServiceNameBlockingStub`, например `InstrumentsServiceBlockingStub`. Все методы такого клиента принимают один параметр - запрос и возвращают результат либо выбрасывают исключение. Вызов метода блокирует поток исполнения до получения результата или исключения.
-3. Асинхронный - `ServiceNameFutureStub`, например `InstrumentsServiceFutureStub`. Все методы такого клиента принимают один параметр - запрос и возвращают объект типа `com.google.common.util.concurrent.ListenableFuture`.
+>**Обратите внимание**
+>Период времени начинает отсчитываться сразу после отправки запроса через метод.
-### Таймаут запроса
-В gRPC используется deadline вместо таймаута - время в будущем, до наступления которого будет проводится ожидание выполнения вызова. Если результат не получен, и время deadline наступило - на клиенте возникнет ошибка с кодом `DEADLINE_EXCEEDED`. При этом возможна ситуация, что на сервере API операция была обработана успешно. Для критичных действий предлагается использовать ключ идемпотентности.
+### Метаданные
-Рекомендуемый способ установки deadline: вызов метода `io.grpc.stub.AbstractStub#withDeadlineAfter`. Обратите внимание, что период времени начинает отсчитываться сразу после выполнения этого метода.
+Метаданные — аналог заголовков в HTTP.
-### Метаданные
-Метаданные - аналог заголовков в HTTP.
#### Передача метаданных запроса
-Для использования API необходимо передавать метаданные с ключом `"Authorization"` и значением `"bearer {token}"`. [Подробнее здесь](https://tinkoff.github.io/investAPI/token/).
-Можно добавить перехватчик в канал с помощью метода `io.grpc.ManagedChannelBuilder#intercept(io.grpc.ClientInterceptor...)`. Пример авторизационного перехватичка:
+
+Чтобы использовать API, нужно передавать метаданные с ключом `Authorization` и значением `bearer {token}`. [Подробнее](https://russianinvestments.github.io/investAPI/token/).
+
+Перехватчик можно добавить в канал через метод `io.grpc.ManagedChannelBuilder#intercept(io.grpc.ClientInterceptor...)`. Пример авторизационного перехватичка:
+
```java
public class AuthInterceptor implements ClientInterceptor {
@@ -61,13 +67,16 @@ public class AuthInterceptor implements ClientInterceptor {
```
#### Получение метаданных ответа
-В метаданных ответа для unary-методов передаются [идентификатор отслеживания](https://tinkoff.github.io/investAPI/grpc/#tracking-id) и описание ошибки.
+
+В метаданных ответа для Unary-методов передаются [идентификатор отслеживания](https://russianinvestments.github.io/investAPI/grpc/#tracking-id) и описание ошибки.
+
Для получения метаданных ответа можно использовать перехватчик `io.grpc.stub.MetadataUtils#newCaptureMetadataInterceptor`, например:
```java
var headersCapture = new AtomicReference();
var trailersCapture = new AtomicReference();
instruments.withInterceptors(MetadataUtils.newCaptureMetadataInterceptor(headersCapture, trailersCapture)).getInstrumentBy(...);
```
-После выполнения метода переменная `headersCapture` будет содержать метаданные ответа.
-При работе с методами клиентов исключения следует конвертировать в статус с помощью `io.grpc.Status#fromThrowable`. В поле `description` статуса будет содержаться [код ошибки](https://tinkoff.github.io/investAPI/errors/).
\ No newline at end of file
+После исполнения метода метаданные ответа вернутся в переменной `headersCapture`.
+
+При работе с методами клиентов конвертируйте исключения в статус через `io.grpc.Status#fromThrowable`. В поле `description` статуса вернётся [код ошибки](https://russianinvestments.github.io/investAPI/errors/).
\ No newline at end of file
diff --git a/investAPI-main/src/docs/faq_marketdata.md b/investAPI-main/src/docs/faq_marketdata.md
index c3c4edc..e78a01c 100644
--- a/investAPI-main/src/docs/faq_marketdata.md
+++ b/investAPI-main/src/docs/faq_marketdata.md
@@ -1,34 +1,16 @@
-####[Что такое шаг цены?](#2.1)
-####[Отличие лотов и количества инструментов](#2.2)
-####[Цены облигаций и фьючерсов](#2.3)
-####[Формулы расчета реальной стоимости инструментов в валюте ](#2.4)
-####[Какие интервалы доступны при запросе исторических свечей?](#2.5)
-####[Как одним запросом получить последние цены по нескольким инструментам?](#2.6)
-####[Как подписаться на разные типы данных в рамках stream-соединения сервиса котировок?](#2.7)
-####[Внебиржевые инструменты в TINKOFF INVEST API](#2.8)
-####[Какие данные отливаются в стриминг стаканов?](#2.9)
-####[Торговля бумагами Тинькофф через TINKOFF INVEST API](#2.10)
-####[Валюты в TINKOFF INVEST API](#2.11)
-####[Почему отличаются исторические цены в TINKOFF INVEST API и других источниках?](#2.12)
-####[Как получить исторические рыночные данные?](#2.13)
-####[Какое максимальное количество запросов на подписку в MarketDataStream?](#2.14)
-####[Как узнать дату, с которой можно получить свечи по инструменту?](#2.15)
-####[Как узнать доступности торгов инструментом через API?](#2.16)
-###[Какой идентификатор инструмента использовать для получения данных в сервисе котировок?](#2.17)
-
-###Что такое шаг цены?
-
-Шаг цены — это минимальное изменение цены определенного инструмента.
-
-####Пример
-
-Шаг цены для инструмента = `0.1`, а последняя цена = `10.5` — это означает, что заявка может быть выставлена по одной из следующих цен:
-
-* 10.4
-* 10.5
-* 10.6
-
-Цена `10.55` будет некорректной и заявка не будет выставлена.
+### Что такое шаг цены?
+
+Шаг цены — это минимальное изменение цены определёного инструмента.
+
+**Пример**
+
+Шаг цены для инструмента — `0.1`, последняя цена — `10.5`. Это значит, что заявка может быть выставлена по одной из следующих цен:
+
+* 10.4,
+* 10.5,
+* 10.6.
+
+Цена `10.55` будет некорректной, заявка не выставится.
```scala
def isValidPrice(price: BigDecimal, increment: BigDecimal): Boolean = {
@@ -39,24 +21,23 @@ isValidPrice(10.1, 0.1) // true
isValidPrice(10.16, 0.1) // false
```
-###Отличие лотов и количества инструментов
+### Отличие лотов и количества инструментов
+
+При работе с T-Invest API обращайте особое внимание на различие понятий
+лот и количество ценных бумаг.
-При работе с сервисом TINKOFF INVEST API следует обращать особое внимание на различия понятий
-лот и количество ценных бумаг. Все цены в [сервисе котировок](/investAPI/head-marketdata/) предоставляются
-за одну ценную бумагу. Данное правило касается методов [GetLastPrice](/investAPI/marketdata#getlastprices),
-[GetCandles](/investAPI/marketdata#getcandles), а так же подписки на эти данные в рамках [stream-соединений](/investAPI/marketdata#marketdatastreamservice)
-данного сервиса.
+Все цены в [сервисе котировок](/investAPI/head-marketdata/) предоставляются за одну ценную бумагу. Это правило касается методов [GetLastPrice](/investAPI/marketdata#getlastprices) и [GetCandles](/investAPI/marketdata#getcandles), а также подписки на эти данные в рамках [stream-соединений](/investAPI/marketdata#marketdatastreamservice) сервиса.
-При получении данных по стакану или сделкам объём этих сделок отображается в лотах. Т.е. параметр quantity
-метода [GetOrderBook](/investAPI/marketdata#getorderbook) и пакета [trade](/investAPI/marketdata#trade) в рамках
-[stream-соединений](/investAPI/marketdata#marketdatastreamservice) сервиса отображается в **лотах**
+Если вы получаете данные по стакану или сделкам, объём этих сделок отображается в лотах. То есть параметр `quantity` метода [GetOrderBook](/investAPI/marketdata#getorderbook) и пакета [trade](/investAPI/marketdata#trade) в рамках [stream-соединений](/investAPI/marketdata#marketdatastreamservice) сервиса отображается в лотах.
-###Цены облигаций и фьючерсов
+### Цены облигаций и фьючерсов
-Цены облигаций и фьючерсов в TINKOFF INVEST API предоставляются в пунктах. Методика расчёта стоимости
+Цены облигаций и фьючерсов в T-Invest API предоставляются в пунктах. Методика расчёта стоимости
лота в валюте отличается в зависимости от типа биржевого инструмента.
-##Формулы расчета реальной стоимости инструментов в валюте
+## Формулы расчёта реальной стоимости инструментов в валюте
+
+Значения:
* **price** — текущая котировка ценной бумаги;
* **nominal** — номинал облигации;
@@ -64,126 +45,117 @@ isValidPrice(10.16, 0.1) // false
* **min_price_increment_amount** — стоимость шага цены;
* **lot** - лотность инструмента.
-###Акции
-
-> **price** * **lot**
-
-###Облигации
+### Акции
-Пункты цены для котировок облигаций представляют собой проценты номинала облигации. Для пересчёта пунктов
-в валюту можно воспользоваться формулой:
+Формула расчёта: **price** * **lot**.
-> **price** / 100 * **nominal**
+### Облигации
+Пункты цены для котировок облигаций — это проценты номинала облигации. Формула для пересчёта пунктов в валюту:
+**price** / 100 * **nominal**.
-###Валюта
+### Валюта
-> **price** * **lot** / **nominal**
+Формула расчёта: **price** * **lot** / **nominal**.
-**Важно!** При торговле валютой необходимо учитывать, что такие валюты как Иена, Армянский драм и Тенге имеют nominal = 100
+>**Важно**
+>При торговле валютой учитывайте, что у таких валют как Иена, Армянский драм и Тенге `nominal` отличный от `1`.
-
-###Фьючерсы
+### Фьючерсы
-Стоимость фьючерсов так же предоставляется в пунктах, для пересчёта можно воспользоваться формулой:
+Стоимость фьючерсов предоставляется в пунктах. Формула расчёта: **price** / **min_price_increment** * **min_price_increment_amount**.
-> **price** / **min_price_increment** * **min_price_increment_amount**
+Также при работе с фьючерсами важно учитывать размер гарантийного обеспечения. Узнать эти параметры фьючерсов
+можно чрез метод [getFuturesMargin](/investAPI/instruments#getfuturesmargin).
-Так же при работе с фьючерсами важно учитывать размер гарантийного обеспечения. Узнать эти параметры фьючерсов
-можно при помощи метода: [getFuturesMargin](/investAPI/instruments#getfuturesmargin). Подробнее про срочный
-рынок читайте [тут](https://help.tinkoff.ru/forts/)
+[Подробнее про срочный рынок](https://help.tbank.ru/forts/)
-###Какие интервалы доступны при запросе исторических свечей?
+### Какие интервалы доступны при запросе исторических свечей?
Метод [GetCandles](/investAPI/marketdata#getcandles) позволяет получать исторические свечи разных
-таймфреймов. Существует ограничение на максимальный и минимальный период запроса для каждого интервала
+временных интервалов. Есть ограничения на максимальный и минимальный период запроса для каждого интервала
свечей:
|Запрошенный интервал свечей|Допустимый период запроса|
|:---|---:|
-| CANDLE_INTERVAL_UNSPECIFIED | Интервал не определён. |
-| CANDLE_INTERVAL_1_MIN | от 1 минуты до 1 дня. |
-| CANDLE_INTERVAL_5_MIN | от 5 минут до 1 дня. |
-| CANDLE_INTERVAL_15_MIN | от 15 минут до 1 дня. |
-| CANDLE_INTERVAL_HOUR | от 1 часа до 1 недели. |
-| CANDLE_INTERVAL_DAY | от 1 дня до 1 года. |
-| CANDLE_INTERVAL_2_MIN | от 2 минут до 1 дня. |
-| CANDLE_INTERVAL_3_MIN | от 3 минут до 1 дня. |
-| CANDLE_INTERVAL_10_MIN | от 10 минут до 1 дня. |
-| CANDLE_INTERVAL_30_MIN | от 30 минут до 2 дней. |
-| CANDLE_INTERVAL_2_HOUR | от 2 часов до 1 месяца. |
-| CANDLE_INTERVAL_4_HOUR | от 4 часов до 1 месяца. |
-| CANDLE_INTERVAL_WEEK | от 1 недели до 2 лет. |
-| CANDLE_INTERVAL_MONTH | от 1 месяца до 10 лет. |
-
-**Важно!** При запросе дневных свечей CANDLE_INTERVAL_DAY время, переданное в поля from и to игнорируется,
-Т.е. при запросе дневной свечи по интервалу с 12:00 01.01.2021 по 07:00 02.01.2021 вернётся две дневных
-свечи за 01.01.2021 и за 02.01.2021
-
-**Важно!** При попытке получить данные с временным интервалом меньше временного интервала данного таймфрейма, ответом метода будет возвращен пустой массив. Например, если интервал при запросе дневных свечей (CANDLE_INTERVAL_DAY) инструмента будет 1 час.
-
-###Как одним запросом получить последние цены по нескольким инструментам?
-
-Для получения цен последних сделок по массиву инструментов можно методом
-[GetLastPrices](/investAPI/marketdata#getlastprices). Во входные параметры метода можно передать массив
+| CANDLE_INTERVAL_UNSPECIFIED | Интервал не определен. |
+| CANDLE_INTERVAL_1_MIN | От 1 минуты до 1 дня (лимит 2400). |
+| CANDLE_INTERVAL_5_MIN | От 5 минут до недели (лимит 2400). |
+| CANDLE_INTERVAL_15_MIN | От 15 минут до 3 недель (лимит 2400). |
+| CANDLE_INTERVAL_HOUR | От 1 часа до 3 месяцев (лимит 2400). |
+| CANDLE_INTERVAL_DAY | От 1 дня до 6 лет (лимит 2400). |
+| CANDLE_INTERVAL_2_MIN | От 2 минут до 1 дня (лимит 1200). |
+| CANDLE_INTERVAL_3_MIN | От 3 минут до 1 дня (лимит 750). |
+| CANDLE_INTERVAL_10_MIN | От 10 минут до недели (лимит 1200). |
+| CANDLE_INTERVAL_30_MIN | От 30 минут до 3 недель (лимит 1200). |
+| CANDLE_INTERVAL_2_HOUR | От 2 часов до 3 месяцев (лимит 2400). |
+| CANDLE_INTERVAL_4_HOUR | От 4 часов до 3 месяцев (лимит 700). |
+| CANDLE_INTERVAL_WEEK | От 1 недели до 5 лет (лимит 300). |
+| CANDLE_INTERVAL_MONTH | От 1 месяца до 10 лет (лимит 120). |
+
+>**Важно**
+>При запросе дневных свечей `CANDLE_INTERVAL_DAY` время, которое передаётся в полях `from` и `to`, игнорируется.
+>Например, при запросе дневной свечи по интервалу с 12:00 01.01.2021 по 07:00 02.01.2021 вернутся две дневные
+свечи за 01.01.2021 и за 02.01.2021.
+
+>**Важно**
+>Если попытаться получить данные с временным интервалом меньше временного интервала данного таймфрейма, в ответе метода вернётся пустой массив. Например, если интервал при запросе дневных свечей (CANDLE_INTERVAL_DAY) инструмента будет 1 час.
+
+### Как одним запросом получить последние цены по нескольким инструментам?
+
+Через метод [GetLastPrices](/investAPI/marketdata#getlastprices) — в запросе передайте массив
идентификаторов инструментов.
-###Как подписаться на разные типы данных в рамках stream-соединения сервиса котировок?
+### Как подписаться на разные типы данных в рамках stream-соединения сервиса котировок?
-Bi-directional stream Сервиса котировок поддерживает одновременную подписку на разные типы данных (свечи,
-стаканы, сделки и т.п.) в рамках одного соединения. Для этого следует последовательно отправить пакеты
-подписки на разные данные. Т.е. отдельно реализуется подписка на свечи, отдельно на стаканы и т.п.
-Подробнее можно узнать в примерах выбранного вами SDK.
+Bidirectional stream сервиса котировок поддерживает одновременную подписку на разные типы данных — свечи,
+стаканы, сделки и другие в рамках одного соединения.
-###Внебиржевые инструменты в TINKOFF INVEST API
+Для этого нужно последовательно отправить пакеты подписки на разные данные — то есть отдельно подписаться подписаться на свечи, стаканы и так далее. Подробнее смотрите в примерах выбранного вами SDK.
-В данный момент TINKOFF INVEST API предполагает работу только с биржевыми инструментами.
+### Внебиржевые инструменты в T-Invest API
-###Какие данные отливаются в стриминг стаканов?
+Сейчас T-Invest API предполагает работу только с биржевыми инструментами.
-Пока только биржевые. Внебиржевые стаканы, например, TRRE, не транслируются в режиме стриминга.
-
-###Торговля бумагами Тинькофф через TINKOFF INVEST API
+### Какие данные отливаются в стриминг стаканов?
-Из-за огромного количества скальперских сделок мы закрыли торговлю БПИФ от УК "Тинькофф Капитал" в TINKOFF INVEST API.
-Список бумаг смотрите [здесь](https://tinkoff.github.io/invest-openapi/).
+Пока только биржевые. Внебиржевые стаканы, например, TRRE, не транслируются в режиме стриминга.
-###Валюты в TINKOFF INVEST API
+### Валюты в T-Invest API
-Получить список доступных валют можно при помощи метода [getInstruments/currencies](/investAPI/instruments#currencies).
+Получить список доступных валют можно через метод [getInstruments/currencies](/investAPI/instruments#currencies).
-Обратите внимание, что лотность валют ограничена лотностью, которая предоставляет биржа. Например, операции
-с Евро и Долларами возможны только на количества кратные 1000.
+Обратите внимание: лотность валют ограничена лотностью, которую предоставляет биржа. Например, операции
+с евро и долларами возможны только на количества, кратные 1000.
-###Почему отличаются исторические цены в TINKOFF INVEST API и других источниках?
+### Почему отличаются исторические цены в T-Invest API и других источниках?
-Исторические данные [Тинькофф Инвестиций](https://www.tinkoff.ru/invest/) могут отличаться от данных,
-которые предоставляют другие сервисы. Связано это может быть как с различными источниками первичных данных,
+Исторические данные [Т-Инвестиций](https://www.tbank.ru/invest/) могут отличаться от данных,
+которые предоставляют другие сервисы. Это может быть связано как с различными источниками первичных данных,
так и с различными алгоритмами их обработки и агрегации.
-###Как получить исторические рыночные данные?
+### Как получить исторические рыночные данные?
-Исторические рыночные данные можно загрузить в виде архива используя метод [Загрузка исторических рыночных данных в виде архива](/investAPI/get_history/).
+Через метод [Загрузка исторических рыночных данных в виде архива](/investAPI/get_history/).
+### Какое максимальное количество запросов на подписку в [MarketDataStream](/investAPI/marketdata/#marketdatastream)?
-###Какое максимальное количество запросов на подписку в [MarketDataStream](/investAPI/marketdata/#marketdatastream)?
+Для всех типов подписок в методе [MarketDataStream](/investAPI/marketdata/#marketdatastream) установлены ограничения максимального количества запросов на подписку.
-Для всех типов подписок в [методе](/investAPI/marketdata/#marketdatastream) установлены ограничения максимального количества запросов на подписку.
-Если количество запросов за минуту превысит 100, то для всех элементов будет установлен статус [SUBSCRIPTION_STATUS_TOO_MANY_REQUESTS](/investAPI/marketdata/#subscriptionstatus).
+Максимальное количество запросов в минуту — 100. Если количество запросов за минуту превысит 100, для всех элементов будет установлен статус [SUBSCRIPTION_STATUS_TOO_MANY_REQUESTS](/investAPI/marketdata/#subscriptionstatus).
-Максимальное количество запросов в минуту = 100.
+### Как узнать дату, с которой можно получить свечи по инструменту?
-###Как узнать дату, с которой можно получить свечи по инструменту?
+Чтобы понять, с какой даты запрашивать свечи по инструменту, в [сервисе инструментов](/investAPI/head-instruments/) T-Invest API есть параметры `first_1min_candle_date` и `first_1day_candle_date`.
-Для того что бы понять с какой даты запрашивать свечи по инструменту в [Сервис инструментов](/investAPI/head-instruments/) TINKOFF INVEST API добавлены параметры `first_1min_candle_date` и `first_1day_candle_date`.
-Данные параметры возвращаются в методах получения информации об инструментах. Параметр `first_1min_candle_date` возвращает дату первой минутной свечи, а `first_1day_candle_date` дату первой дневной свечи.
+Они возвращаются в методах получения информации об инструментах. Параметр `first_1min_candle_date` возвращает дату первой минутной свечи, `first_1day_candle_date` — дату первой дневной свечи.
-###Как узнать доступности торгов инструментом через API?
+### Как узнать доступности торгов инструментом через API?
-Узнать доступность торгов инструментом можно по параметру `api_trade_available_flag` в методе [getTradingStatus](/investAPI/marketdata/#gettradingstatus) или [FindInstrument](/investAPI/instruments/#findinstrument).
+По параметру `api_trade_available_flag` в методах [getTradingStatus](/investAPI/marketdata/#gettradingstatus) или [FindInstrument](/investAPI/instruments/#findinstrument).
+### Какой идентификатор инструмента использовать для получения данных в сервисе котировок?
-###Какой идентификатор инструмента использовать для получения данных в сервисе котировок?
+Все методы сервиса котировок принимают на вход параметр `instrumentId`, в котором можно передать значение **instrument_uid** или **FIGI**.
-Все методы сервиса котировок принимают на вход `instrumentId` - параметр, в который можно передать значение **instrument_uid** *или* **FIGI**.
-Получить более подробную информацию можно на странице [об идентификаторах инструментов](/investAPI/faq_identification/).
\ No newline at end of file
+[Подробнее об идентификаторах инструментов](/investAPI/faq_identification/)
\ No newline at end of file
diff --git a/investAPI-main/src/docs/faq_multiaccounts.md b/investAPI-main/src/docs/faq_multiaccounts.md
index 14da2df..ba4c982 100644
--- a/investAPI-main/src/docs/faq_multiaccounts.md
+++ b/investAPI-main/src/docs/faq_multiaccounts.md
@@ -8,12 +8,12 @@
избытком, а на другом при нехватке средств и активной маржинальной торговле может
наступить маржин-колл.
-##Поддерживаются ли сейчас мультисчета в TINKOFF INVEST API?
-Да, в TINKOFF INVEST API можно работать с несколькими счетами. Все ключевые методы принимают
+##Поддерживаются ли сейчас мультисчета в T-Invest API?
+Да, в T-Invest API можно работать с несколькими счетами. Все ключевые методы принимают
на вход параметр *account_id* (идентификатор счёта).
+