Тинькофф инвестиции api ограничения

Содержание
  1. REST-протокол
  2. Ограничение количества запросов
  3. Ограничение количества запросов от Московской Биржи (MOEX)
  4. Генерация
  5. Протокол
  6. Ограничения
  7. candle:subscribe
  8. candle:unsubscribe
  9. orderbook:subscribe
  10. orderbook:unsubscribe
  11. instrument_info:subscribe
  12. instrument_info:unsubscribe
  13. Сообщения об ошибке
  14. Хотелось бы знать об ограничениях API до того как тебя забанят. Поддержка не в курсе #313
  15. Comments
  16. nleo commented Aug 5, 2020
  17. nleo commented Aug 5, 2020
  18. NikitaMelnikov commented Aug 5, 2020
  19. mlshvdv commented Aug 5, 2020
  20. yurvonScreamo commented Aug 5, 2020
  21. Fatal1ty commented Aug 5, 2020
  22. ProgrammingLife commented Aug 5, 2020
  23. NikitaMelnikov commented Aug 6, 2020
  24. NikitaMelnikov commented Aug 6, 2020
  25. betslus1 commented Aug 7, 2020 •
  26. felixrap commented Aug 7, 2020
  27. nonamegithub commented Aug 9, 2020
  28. IvanAgafonov commented Aug 11, 2020 •
  29. betslus1 commented Aug 11, 2020
  30. NikitaMelnikov commented Aug 12, 2020
  31. nonamegithub commented Aug 12, 2020
  32. luckman commented Aug 27, 2020 •
  33. nleo commented Aug 31, 2020
  34. nonamegithub commented Aug 31, 2020
  35. nleo commented Aug 31, 2020
  36. nonamegithub commented Aug 31, 2020
  37. felixrap commented Aug 31, 2020
  38. NikitaMelnikov commented Sep 3, 2020
  39. nonamegithub commented Sep 3, 2020
  40. Fatal1ty commented Sep 3, 2020 •
  41. nonamegithub commented Sep 3, 2020
  42. nleo commented Sep 3, 2020 •
  43. nonamegithub commented Sep 3, 2020
  44. API Тиньков.Инвестиции. Первые шаги
  45. Получение токена и установка библиотеки
  46. Авторизация
  47. Что у нас в портфеле
  48. Получаем название бумаги по FIGI и тикету
  49. Качаем справочник ценных бумаг
  50. Получаем список операций
  51. Все не так просто (план и факт)
  52. Читают сейчас
  53. Редакторский дайджест
  54. Похожие публикации
  55. Что недоговаривают Тинькофф Инвестиции. Вытаскиваем все данные по портфелю через API в большую таблицу Excel
  56. Пользователи массово жалуются на сбой в приложениях «Тинькофф» и «Тинькофф Инвестиции»
  57. Отслеживаем состояние своего портфеля у брокера «Тинькофф Инвестиции» через Google Таблицы
  58. Курсы
  59. Минуточку внимания
  60. Комментарии 63

REST-протокол

Ограничение количества запросов

Ресурс Количество запросов для пользователя Количество запросов на IP Интервал ограничения
/sandbox 120 1000 1 минута
/portfolio 120 1000 1 минута
/market 240 500 1 минута
/orders 100 1000 1 минута
/orders/limit-order 100 1000 1 минута
/orders/market-order 100 1000 1 минута
/orders/cancel 50 1000 1 минута
/operations 120 1000 1 минута

При превышении лимита запросов возвращается ошибка 429 Error: Too Many Requests

Ограничение количества запросов от Московской Биржи (MOEX)

  • Среднее допустимое количество действий в секунду 150 запросов в течение 5 минут
  • Среднее допустимое количество сообщений об ошибке в секунду 10 в течение 5 минут

Под запросами в биржу подразумевается выставление и отмена заявок

Генерация

REST API использует OpenAPI 3.0.0, для генерации клиентов необходимо использовать новую версию swagger-gen.

Источник

Протокол

Streaming market-data в качестве протокола транспорта использует WebSocket.

Ограничения

  • Доступно 6 TCP-соединений на одного пользователя.

candle:subscribe

Подписка на свечи

Параметр Тип Обязательность Описание
event string + Название события
time string + Время в формате RFC3339Nano
payload object + Структура свечи
payload.o double + Цена открытия
payload.c double + Цена закрытия
payload.h double + Наибольшая цена
payload.l double + Наименьшая цена
payload.v double + Объем торгов
payload.time string + Время в формате RFC3339
payload.interval string + Interval
payload.figi string + FIGI

candle:unsubscribe

Отписка от свечей

orderbook:subscribe

Подписка на стакан

Параметр Тип Обязательность Описание
event string + Название события
time string + Время в формате RFC3339Nano
payload object + Структура со стаканом
payload.depth int + Глубина стакана
payload.bids array[double,double] + Массив [Цена, количество] предложений цены
payload.asks array[double,double] + Массив [Цена, количество] запросов цены
payload.figi string + FIGI

orderbook:unsubscribe

Отписка от стакана

instrument_info:subscribe

Подписка на информацию об инструменте

Параметр Тип Обязательность Описание
event string + Название события
time string + Время в формате RFC3339Nano
payload object + Структура с информацией по инструменту
payload.trade_status string + Статус торгов
payload.min_price_increment double + Шаг цены
payload.lot double + Лот
payload.accrued_interest double НКД. Возвращается только для бондов
payload.limit_up double Верхняя граница заявки. Возвращается только для RTS инструментов
payload.limit_down double Нижняя граница заявки. Возвращается только для RTS инструментов
payload.figi string + FIGI

instrument_info:unsubscribe

Отписка от информации об инструменте

Сообщения об ошибке

К любому запросу можно добавить необязательное поле request_id, которое будет использовано в сообщении об ошибке

Источник

Хотелось бы знать об ограничениях API до того как тебя забанят. Поддержка не в курсе #313

Comments

nleo commented Aug 5, 2020




The text was updated successfully, but these errors were encountered:

nleo commented Aug 5, 2020

Т.е. проблема в том, что о всём том, что написанно в скринах люди могут узнать только после того как нарушат правила. Поддержка всегда заявляет что ограничений никаких нет и можно выставлять сколько угодно и каких угодно заявок.

NikitaMelnikov commented Aug 5, 2020

Спасибо за фидбек, добавим у себя описание ограничений на бирже.
Подскажите, а по TEUR, TUSD вы через OpenApi выставляли заявки?

mlshvdv commented Aug 5, 2020

@nleo а расскажите, пожалуйста, подробнее о ситуации? Чтобы сообществу иметь в виду с какими ограничениями и в следствии чего вы столкнулись )

yurvonScreamo commented Aug 5, 2020

@nleo а расскажите, пожалуйста, подробнее о ситуации? Чтобы сообществу иметь в виду с какими ограничениями и в следствии чего вы столкнулись )

неприличное большое количество заявок, вот из-за чего это произошло (10-14к в день по одной и той же бумаге)

Fatal1ty commented Aug 5, 2020

Спасибо за фидбек, добавим у себя описание ограничений на бирже.

Можете назвать сроки добавления описания ограничений?

ProgrammingLife commented Aug 5, 2020

Ещё формулировка странная какая-то

Среднее допустимое количество действий в секунду . равное 150 на протяжении 5 минут

Это сколько же действий в секунду? Т.е. можно 150 действий отшпарить в последнюю секунду из 5 минут или столько действий не поместится в «Среднее допустимое количество действий в секунду»?

NikitaMelnikov commented Aug 6, 2020

NikitaMelnikov commented Aug 6, 2020

@ProgrammingLife в последнюю секунду/минуту не получится из-за ограничений OpenApi

betslus1 commented Aug 7, 2020 •

@nleo а расскажите, пожалуйста, подробнее о ситуации? Чтобы сообществу иметь в виду с какими ограничениями и в следствии чего вы столкнулись )

неприличное большое количество заявок, вот из-за чего это произошло (10-14к в день по одной и той же бумаге)

А если по разным бумагам? т.е. добавляем к ограничению 120 RPM в минуту от тинькова, 150 request / 5 min in MOEX?

По СПБ бирже как дела?

Что значит количество бумаг менее 100. Т.е. если заявок более 100 по MOEX то лимиты другие?

felixrap commented Aug 7, 2020

@nleo а расскажите, пожалуйста, подробнее о ситуации? Чтобы сообществу иметь в виду с какими ограничениями и в следствии чего вы столкнулись )

неприличное большое количество заявок, вот из-за чего это произошло (10-14к в день по одной и той же бумаге)

Выходит, что на минутах торговать тут не получится? Даже не учитывая комиссию Тинькова. А если 120 запросов на 120 разных бумаг, получается что за сессию можно сделать 50к+ запросов.

nonamegithub commented Aug 9, 2020

Дык вроде все ясно из фрагментов представленной переписки. Комиссия со сделки выходила меньше 0,01 и не могла быть удержана с него брокером, соответственно. Он и поверил в себя — решил, что теперь он самый умный человек на планете. За это и забанили.

IvanAgafonov commented Aug 11, 2020 •

@nonamegithub Как такое получилось? Он ведь торговал TUSD и TEUR, а там не может быть такой маленькой комиссии даже при минимальном лоте, или нет? Я в курсе, что сейчас много домашних инвесторов, которые гоняют фонды от тинькофф по несколько миллионов штук за день, потому что там нету комиссии и слабое движение, но комиссии то нет по правилам брокера, в чем тогда проблема.

betslus1 commented Aug 11, 2020

Мне всегда казалось комиссия округляется вверх?
т.е. 0.000001 по факту будет 0.01? (кроме фондов Т)

NikitaMelnikov commented Aug 12, 2020

TRUB, TUSD и TEUR отключены в openapi, соответственно вопрос а как торговали то собственно 🙂

nonamegithub commented Aug 12, 2020

Currency rounding attack, классика жанра. Боюсь, не поделится товарищ с нами секретом.

luckman commented Aug 27, 2020 •

Подозреваю, что там в округлениях дело.
Сейчас в TGLD кто-то подобным занимается.

(На картинке вверху средняя цена исполнения, хотя лимитная заявка сделана по цене 0,0812)
5 лотов стоят 0,406 — округляется в 0,41

nleo commented Aug 31, 2020

@NikitaMelnikov он торговал скриптами в браузере 🙂

nonamegithub commented Aug 31, 2020

О, чистосердечное признание ?!
Зачет, дружище! Я рассматривал версию с патченным .apk
Но это тоже красиво.

nleo commented Aug 31, 2020

@nonamegithub все три ситуации происходили не со мной, я просто много в каких чатах сижу, многое вижу)

Сам я обычного бота без HFT планирую

nonamegithub commented Aug 31, 2020

С существующими ограничениями Tinkoff OpenAPI по количеству запросов orders в 120/мин об HFT можно забыть раз и навсегда. Следовательно на ситуацию из скриншота № 1 попасть практически нереально. Парни писали, что ловили 429 Error: Too Many Requests.

felixrap commented Aug 31, 2020

С существующими ограничениями Tinkoff OpenAPI по количеству запросов orders в 120/мин об HFT можно забыть раз и навсегда. Следовательно на ситуацию из скриншота № 1 попасть практически нереально. Парни писали, что ловили 429 Error: Too Many Requests.

Вы ещё не учитываете комиссию. Если взять тот же сбер, то, чтобы по сделке выйти в ноль и отбить комиссию (0.0025%), нужно выиграть разницу в цене копеек 12-14. И только потом, всё что выше этого — будет вашим профитом.

NikitaMelnikov commented Sep 3, 2020

@nonamegithub не только ограничениями openapi, но еще и биржи

nonamegithub commented Sep 3, 2020

А вот с этого момента поподробнее, пожалуйста. Бирже MOEX не нравятся запросы со средней скоростью 150 шт./сек на протяжении 5-ти минут (см. 1 скриншот). Первым и единственным заслоном в таком случае будет только Tinkoff Api со своим ограничением в 120 заявок в минуту. Нет, разве?

Fatal1ty commented Sep 3, 2020 •

Бирже MOEX не нравятся запросы со средней скоростью 150 шт./сек на протяжении 5-ти минут

Как я понял из документации, там ограничение 150 запросов в 5 минут, то есть, если делать rate limiter по минутам, то выходит 30 запросов в минуту. Так ведь?

nonamegithub commented Sep 3, 2020

Нет, не так) Цитирую дословно из скриншота № 1: «среднее допустимое количество действий в секунду. равное 150 на протяжении 5 минут». Это, в принципе, вполне похоже на правду, Не удивлюсь, если парни с Тинькова, что-то сами не так поняли, и зарезали нас по самое не хочу. Не скажу про заявки, но в асинхроне спокойно могу запросить котировки десятка инструментов за секунду и менее, даже через Tinkoff Api. Главное за лимит в 120/мин не выйти.

nleo commented Sep 3, 2020 •

Я тоже по MOEX читаю, что можно сделать 5х60х150=45000 действий за пять минут, хоть все 45000 в первую минуту, или может даже в первую секунду?)

Коряво конечно они написали

nonamegithub commented Sep 3, 2020

Да и документация от Tinkoff подтверждает то же самое: Среднее допустимое количество действий в секунду 150 запросов в течение 5 минут.
Давайте требовать увеличения лимитов на порядок)

Источник

API Тиньков.Инвестиции. Первые шаги

Практически с первых дней я стал клиентом Тиньков.Инвестиции.

И с этого же момента меня терзают смутные сомнения — отражает ли личный кабинет объективную реальность?

Дело в том, что я покупаю ценные бумаги, номинированные в долларах, но в ЛК цены всех активов отображаются в долларах, а итоговая стоимость портфеля в рублях.

И мне непонятно, это доллар вырос или я такой результативный инвестор?

А как же комиссии, налоги и прочие дивиденды?

Вот бы взять все мои сделки и расписать по ФИФО, как в складском учете… А сверху положить полученные дивиденды, а потом вычесть налоги.

Вот тогда я и увижу понятный мне результат.

Оказалось, у Тинькова есть API, которое позволяет писать торговых роботов (мне это совсем не интересно), а также загружать данные по своему портфелю и операциям.

У этого API есть официальное описание, но мне не все было понятно, пришлось разбираться.
Результаты этих разборок представляю вашему вниманию.

Получение токена и установка библиотеки

Перед началом работы нужно установить библиотеку и получить токен.

Цитирую официальную инструкцию по получению токена:

  1. Зайдите в свой аккаунт на tinkoff.ru
  2. Перейдите в раздел инвестиций
  3. Перейдите в настройки
  4. Функция «Подтверждение сделок кодом» должна быть отключена
  5. Выпустите токен OpenApi для биржи и Sandbox. Возможно система попросит вас авторизоваться еще раз, не беспокойтесь, это необходимо для подключения робота к торговой платформе.
  6. Скопируйте токен и сохраните, токен отображается только один раз, просмотреть его позже не получится, тем не менее вы можете выпускать неограниченное количество токенов.

На момент написания статью токен выдавался на странице www.tinkoff.ru/invest/settings, кнопка в нижней части страницы.

С токеном для песочницы у меня возникали ошибки, поэтому я начал экспериментировать с боевой версией. Чего и вам желаю (Осторожно: не купите-продайте случайно что-то лишнее).

Авторизация

Эти две строки делают все, что нам нужно.

Дальше работаем с переменной client.

Что у нас в портфеле

Получим содержимое нашего вашего портфеля:

Посмотрим основные данные первого элемента:

В моем случае это:

value — Цена бумаги
balance — Кличество бумаг в портфеле, value и currency — их денежное выражение.

figi — Financial Instrument Global Identifier (Финансовый Глобальный Идентификатор инструмента)
ticker — Тикер актива.

По этим данным мы можем узнать человекочитаемое название актива.

Для данного запроса нам это не нужно (см. поле name), но в других случаях пригодится.

Получаем название бумаги по FIGI и тикету

Эта API-функция у меня работает как надо. Видим, что ‘BBG000BWPXQ8’ -> ‘British American Tobacco’.

А вот поиск названия актива по тикеру у меня не работает :(((

Разработчики предложили обновить библиотеку, но даже после этого не взлетело.

Качаем справочник ценных бумаг

Впрочем, я решил этот вопрос кардинально. Скачал у Тинькова полный справочник торгуемых активов:

получил
Как видим, figi и name там есть. Для моих целей — более чем достаточно.

Получаем список операций

А вот самое интересное — получить список моих операций. В операции (в моем случае) попадают следующие действия:

  • PayIn — Пополнение брокерского счета
  • PayOut — Вывод денег
  • BuyCard — Покупка с карты
  • Sell — Продажа
  • BrokerCommission — Комиссия брокера
  • Dividend — Выплата дивидендов
  • Tax — Налоги
  • TaxDividend- Налоги c дивидендов
  • ServiceCommission — Комиссия за обслуживание

Код для выгрузки портфеля:

Посмотрим, что получилось. В моем случае, представляет интерес этот элемент Вот что он собой являет
Нас интересуют поля:

  • date — дата сделки
  • figi — код актива
  • operation_type — тип операции
  • payment — сумма операции. У налогов или комиссий указана именно она. price при этом None
  • price — цена одной бумаги
  • quantity — плановое количество бумаг
  • trades — реальные биржевые сделки

Сразу возник вопрос — зачем нам какие-то trades, если есть price и quantity?

Все не так просто (план и факт)

Как я понял, в quantity указано то количество бумаг, которые я хотел купить. А то, что фактически куплено, лежит в trades[i].quantity.

Т.е. если хотите обратится к фактическим сделкам, нужно перебрать то, что лежит в trades.

В ряде случаев, там None — например, для налогов или вводов/выводов средств.

Чтобы получить настоящие цифры, нужно смотреть и в сделки, и в биржевые операции:

Читают сейчас

Редакторский дайджест

Присылаем лучшие статьи раз в месяц

Скоро на этот адрес придет письмо. Подтвердите подписку, если всё в силе.

Похожие публикации

Что недоговаривают Тинькофф Инвестиции. Вытаскиваем все данные по портфелю через API в большую таблицу Excel

Пользователи массово жалуются на сбой в приложениях «Тинькофф» и «Тинькофф Инвестиции»

Отслеживаем состояние своего портфеля у брокера «Тинькофф Инвестиции» через Google Таблицы

Курсы

AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Минуточку внимания

Комментарии 63

Оказалось, у Тинькова есть API, которое позволяет писать торговых роботов (мне это совсем не интересно)

А вот мне, наоборот, оказалось интересно. Начал возиться с этим чуть больше недели назад. Написал программу, которая сигнализирует о необычных состояниях на рынке, дальнейшие решения я уже принимал вручную. В принципе, понравилось.

Главная проблема — API очень простой, но одновременно и очень сырой. Часто тормозит и глючит. Поиграться — нормально, но если торговать профессионально, то есть варианты и получше.

Был бы рад ссылкам

Специализированные брокеры. Полноценно пока не интересовался этой темой, поэтому ссылок не дам.

Там в квике есть lua, на которой худо бедно можно накорябать робота, графики с индивидуальными индикаторами, или шлюз в другие миры.
Но квик что-то подтормаживает, знающие люди говорят, для htf надо брать плазу2 и колокейшн у брокера.

знающие люди говорят, для htf надо брать плазу2 и колокейшн у брокера

Рано или поздно пытливый программистский ум все равно захочет хоть немного HFT — бота с реакцией в несколько секунд. О миллисекундах, к сожалению, речи не идёт — это удел кровавого энтерпрайса и крупных игроков.

Я имею в виду тормоза самого Тинькоффа как сервиса. В обычном режиме там тоже всё исполняется в момент, но в периоды высокой активности на бирже, когда самое лучшее время делать деньги, он встаёт колом.

Но в целом я Т не особо за это ругаю: у него изначально была другая направленность — не на профессиональных трейдеров, а просто на желающих пощупать возможность заработка на инвестициях в долгосроке. API для торговли они предоставили совсем недавно.

Ну вот представьте: накупили вы этих плазов, поставили колокейшн в золотом корпусе, запустили скрипты и ждете. А на другом конце интернета сидят условные Мамут с Усмановым, смотрят на экраны своих HFT и ржут над вами.

Почему ржут? А потому что пока скрипит ваша плаза в колокейшне, у них уже миллиончик+миллиончик+миллиончик…

А в режиме read-only через API Тинькофф можно считать только свои позиции?

Имел ввиду получение собственных открытых позиций — цена покупки, дата, количество.
Без возможности торговли. Для синхронизации со своими сервисами по учету.

Кто-нибудь знает — Тинькофф единственный брокер, которые имеет своё открытое апи?
В первую очередь интересен только просмотр позиций без возможностей торговли.

В IB и так нет проблем с экспортом отчетов.
Проблема с рос. брокерами — нет единой формы, они периодически меняются, а сбербанк (бывший тройка диалог) — так в плане отчетов вообще ловить нечего — невозможно даже определить начальную цену позиции.

И оно открыто? А кто кроме Тинькова имеет открытое апи?

Тинькофф Инвестиции, ITI Capital (АО «ИК «Ай Ти Инвест»).
А знаете ещё кто имеет апи?

А после слияния с Фридом Финанс апи сохранилось?

Вот тут становится непонятно, что вы подразумеваете под «Открытым АПИ».

Ну для меня это значит, что имеется подробная документация по протоколу и возможность написания собственных клиентов, а не только плагинов и скриптов для квика.

Я хотел бы через API получать свои открытые позиции в режиме только чтения.

И мне непонятно, это доллар вырос или я такой результативный инвестор?

Я себе написал замену Excel для учёта сделок.
Всё считает. Можно посмотреть состояние портфеля на любую дату. Главное все сделки в систему завести… Можно отчёт брокера импортировать. Зацените кто хочет, https://izi-invest.ru

Относительно «а итоговая стоимость портфеля в рублях» — у Тинькофф есть переключатель (в мобильных приложениях на значок рубля нажать, если не путаю), можно и в долларах смотреть

Вах, не прошло и полгода, что называется…

Когда я, будучи их клиентом, спросил о кусочке API для всего-то ежедневного получения курса евродоллара, меня первую неделю не могли понять вообще, вторую отвечали безопасники (упс? я вообще-то технарей спрашивал) разных уровней и задавали острожные, хоть и дурацкие на взгляд программиста, вопросы, а на третью посоветовали… парсить их главную страницу, где выводится курс…
Передовой банк, что уж тут.

Приветствую, коллега. Так вышло, что почти одновременно с вами я начал вынашивать идею о написании своего клиента для OpenAPI на Ruby. Как раз сегодня я зарелизил свою поделку, консольный клиент для вывода портфолио брокерского счёта.

Моя задача — сделать консольную утилиту для просмотра полной итоговой суммы и процентов моего портфеля. Однако, столкнулся с несколькими недостатками данного API.

1. Отсутствие итоговой суммы и процентов доходности в API. Хотя бы в приближённом виде. А это то, ради чего я вообще начал писать код.
2. Список позиций на счёте вроде хорош, но в нём не хватает процентов доходности и оценочной стоимости каждой позиции. Пришлось писать кучу кода для вычисления процентов.
3. Каждая позиция в своей валюте, это вроде понятно и правильно. Но когда я собрался посчитать общую стоимость, это вылилось в нетривиальную задачу. Оказывается в API нет биржевого курса долларов/евро. Пришлось считать так: брать данные своих активов доллар и евро и через сумму и доходность высчитывать курс к рублю. Потом я прохожу по списку позиций и каждую позицию умножаю на курс к рублю, чтобы получить рублёвый итог.

По итогу несмотря на кучу неточных вычислений я получил довольно точные цифры, отличающиеся от приложения на доли процентов. И мне порой даже кажется, что мои данные чуть точнее, поскольку я сам вывел все формулы и сам по ним считаю свои денежки 🙂

Во избежание ошибок float-вычислений, использую BigDecimal — этакий float с гарантированной десятичной точностью. То есть складывая 1.1 + 1.2 получится 2.3, а не 2.2999999999999.

API в целом рабочее, но немного бесполезненькое. Иногда замирает, иногда некоторые поля приходят нулевые, пару раз ловил 500. Может через вебсокеты получится что-то интересное добыть.

Я курс доллара тоже у Тинькова беру

cd2 = datetime.now(tz=timezone(‘Europe/Moscow’))
cd1 = cd2 — timedelta(days=3)
cur = client.market.market_candles_get(‘BBG0013HGFT4’, cd1, cd2, ‘day’)

if len(cur.payload.candles) == 0:
print(»)
else:
print(cur.payload.candles[len(cur.payload.candles) — 1])

Это инструмент USD000UTSTOM — курс с поставкой валюты «завтра», но меня устраивает.

Источник

Читайте также:  Рампа для соединения двух газовых баллонов 551
Оцените статью