Тинькофф инвестиции 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 Тиньков.Инвестиции. Первые шаги
  15. Получение токена и установка библиотеки
  16. Авторизация
  17. Что у нас в портфеле
  18. Получаем название бумаги по FIGI и тикету
  19. Качаем справочник ценных бумаг
  20. Получаем список операций
  21. Все не так просто (план и факт)
  22. Читают сейчас
  23. Редакторский дайджест
  24. Похожие публикации
  25. Что недоговаривают Тинькофф Инвестиции. Вытаскиваем все данные по портфелю через API в большую таблицу Excel
  26. Пользователи массово жалуются на сбой в приложениях «Тинькофф» и «Тинькофф Инвестиции»
  27. Отслеживаем состояние своего портфеля у брокера «Тинькофф Инвестиции» через Google Таблицы
  28. Курсы
  29. Минуточку внимания
  30. Комментарии 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 Тиньков.Инвестиции. Первые шаги

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

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

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

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

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

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

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

Оказалось, у Тинькова есть 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 — курс с поставкой валюты «завтра», но меня устраивает.

Источник

Читайте также:  Как инвестировать через иностранного брокера
Оцените статью