Как подключить робота к тинькофф инвестиции

Обновлено: 29.06.2022

Простой бот для взаимодействия с Тинькофф Инвестициями с возможностью выполнения заявок на покупку акций с заданными значениями StopLoss и TakeProfit по наступлению которых будет сделана заявка на продажу.

Стек используемых технологий

Как собрать и запустить проект

  • Нужно иметь брокерский счет в Тинькофф.Инвестиции, если есть, то получить в личном кабинете токен для авторизации (для торговли на бирже или в песочнице)
  • Зарегистрировать telegram бота и получить токен для авторизации
  • Подготовить базу данных - создать пользователя и таблицы (TODO: Следует автоматизировать этот этап)
  • В файле конфигурации application.conf задать токены для авторизации telegram-бота и в OpenApi Тинькофф.Инвестиций, и имя/пароль для подключения к базе данных
  • Запустить проект
  • Выполнение мониторинга стоимости заданных пользователем акций
  • Выполнение заявки на покупку акций по значениям StopLoss и TakeProfit
  • Уведомление пользователя через telegram о выполняемых действиях

Взаимодействие с пользователем

На данном этапе реализован способ взаимодействия через telegram(уведомления и команды), поскольку он проще и быстрее для тестирования и проверки.

  • /portfolio - Портфель
  • /etfs - Получение списка ETF
  • /currencies - Получение списка валютных пар
  • /orderbook.figi.depth - Получение стакана по FIGI
  • /cancelOrder.orderId - Отмена заявки по OrderId
  • /limitOrderBuy.figi.lots.price - Лимитная заявка на покупку
  • /limitOrderSell.figi.lots.price - Лимитная заявка на продажу
  • /marketOrderBuy.figi.lots - Рыночная заявка на покупку
  • /marketOrderSell.figi.lots - Рыночная заявка на продажу
  • /marketOrderBuy.figi.lots.stoploss.takeprofit - Рыночная заявка на покупку с указанными значениями stoploss и takeprofit . stoploss и takeprofit имеют тип Double . Например, команда /marketOrderBuy.BBG009S39JX6.10.100,01.200,02 выполнит покупку 10 лотов акций BBG009S39JX6 со значением stoploss=10.100 и takeprofit=200,02 . При этом значение stoploss не должна превышать значение текущей стоимости акции и, соответственно, значение takeprofit должна превышать текущую стоимость акции. Команда вернет информацию о покупке и id операции.
  • /activeOperations - Список активных операций
  • /stopOperations - Отменить все активные операции
  • /completedOperations - Получить список последних завершенных операций
  • /stopOperations.id - Отменить операцию по id

Под операцией подразумевается процесс подписки на отслеживание стоимости акции по figi , которая завершится по достижению значений stoploss и takeprofit или по команде stop .

Tinkoff invest api

Tinkoff invest api

Введение

Количество физических лиц, имеющих брокерские счета на Московской бирже, за июль 2021 года увеличилось на 446 тыс. человек, достигнув 13,2 млн. Ими открыто 21,6 млн брокерских счетов. В июле 2021 года сделки на бирже совершали более 1,9 млн человек. (Московская биржа)

На фоне снижения ключевой ставки и ввода налога на доходы с депозитов физических лиц, у Россиян появился нешуточный интерес к инвестициям. Не обошел данный тренд и меня, не могу назвать себя новичком в торговле на фондовом рынке, в различные периоды своей жизни мне довелось воспользоваться услугами таких брокеров, как АТОН, ВТБ, ОТКРЫТИЕ, РСХБ, и наконец, ТИНЬКОФФ.

Иррациональный выбор

Суть отношения состоятельных людей к деньгам — отнюдь не в экономии или рациональном использовании. На одной «экономии» состояния не построишь. (Дмитрий Васильевич Брейтенбихер – российский банкир и финансист)

Сравнивая тарифы брокеров, несложно прийти к заключению, что с точки зрения экономической рациональности, ТИНЬКОФФ нам совсем не бро и если вы не относите себя к премиальным клиентам (на счетах от 3 млн.), то тарифы могут заставить плакать и смеяться одновременно. Так почему многие выбирают ТИНЬКОФФ? За всю Одессу Россию говорить не буду, лично мне, программисту по специальности, было очень интересно узнать что же за зверь такой TINKOFF INVEST API и насколько он подходит для автоматизации торговли и анализа данных. Ну ведь не допотопными QUIK и MetaQuote с их конструкциями из костылей на LUA и MQL пользоваться в 21 веке?

Задачи и инструменты

Дайте маленькому мальчику молоток, и он обнаружит, что по всем окружающим предметам просто необходимо стукнуть. (Авраам Каплан – американский философ)

Самое время определиться с инструментарием. Изначально была мысль создать SPRING-проект с API, СУБД, планировщиком, и прочим. Да что идея? Большую часть из этого я реализовал, но быстро пришел к заключению, что описание готового проекта – это не совсем то, чего ждет аудитория хабра. Пришла идея идти от простого – к сложному, от малого – к великому. Публикуя информацию о проделанной работе частями, можно анализировать мнения читателей и притворять в жизнь их пожелания. И как только я сформулировал все это в голове, пришел к выводу, что я "изобрел" Agile-манифест, уж больно похоже. Об Agile и моем отношению к нему читайте чуть ниже.

TINKOFF INVEST API – получение информации, торговые операции;

POSTGRE SQL – СУБД для хранения информации;

SPRING – фреймворк для формирования API взаимодействия с внешними системами, разграничения прав доступа к ресурсам, манипулирования данными;

TA4J – библиотека для анализа данных;

JFREECHART – библиотека для построения графиков и диаграмм;

JSOUP – библиотека парсинга сторонних сайтов для получения дополнительной информации (календари, отчеты, графики выплаты дивидендов, и т.п.);

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

Гибкий подход (Agile)

Нет времени объяснять! Суй в жопу ананас! (Интернет-фольклор)

Что будет из себя представлять готовый продукт? Какие требования мы выставляем к приложению? Эти вопросы задет себе каждый владелец продукта, менеджер, архитектор, тимлид или разработчик. И иногда случается так, что общая концепция вроде бы и понятна, но нет никакой конкретики, и что делать? В этом случае на помощь могут прийти, так называемые, "гибкие" (Agile) методологиями разработки, де-факто данный подход стал одним из отраслевых стандартов проектного управления и разработки программного обеспечения. Если коротко, то суть заключается в том, что заказчик может внести новые требования на любом этапе реализации проекта. Насколько этот метод универсален можно и нужно спорить.

Моя профессиональная область – это разработка программного обеспечения для банков, где Agile, с легкой подачи Германа Оскаревича прописался всерьез, и похоже, надолго. Если читатель спросит мое личное отношение к данному явлению, то скажу, что словом "Agile" хорошо прикрывать недостаток вовлеченности заинтересованных лиц при подготовке к реализации проекта, а именно формировании требований и проектирования. Agile'ом вполне обоснованно можно замаскировать любой бардак, в том числе, творящийся в головах участников команды :).

Дочитав до этого абзаца, любители Agile , должно было, успели на меня обидеться. Не не стоит! Моя характеристика - это всего лишь выводы из личного травмирующего опыта, при этом жизнь гораздо богаче. Сходу могу привести несколько примеров, когда именно Agile позволяет решать задачи, получая ощутимое преимущество в сравнении с традиционными методами управления проектами, минимизируя при этом временные, трудовые и денежные затраты. Внедрение новых программных комплексов в существующую среду, прототипирование и проверка теорий, разработка новых продуктов с нечетко сформулированными требованиями, вывод продукта на рынок в кратчайшие сроки, в решении подобных задач использование гибких методологий может гораздо быстрее привести команду к финальному результату. Попытка же использовать Agile просто по причине инновационности подхода, сравнима с желанием сунуть в жопу ананас, не задаваясь при этом вопросом "нафига, а главное, зачем?".

Как вы поняли, концепция обрисована крупными мазками. Я говорю: "перед нами", ожидая, что аудитория хабра поможет с формулированием требований к системе и в выборе оптимальных инструментов для реализации задуманных идей. Если есть мысли по теме статьи или конструктивная критика, пишите в комментариях, ваше мнение окажет неоценимую поддержку в развитии проекта.

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

Подготовительный этап

Только тот, кто тщательно подготовился, имеет возможность импровизировать. (Эрнст Ингмар Бергман – шведский режиссёр театра и кино, сценарист, писатель)

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


Привет! На связи команда Тинькофф Инвестиций. Мы запустили новую версию программного интерфейса для алгоритмического трейдинга. Расскажем про Tinkoff Invest API и что новенького в сервисе.

Что такое Tinkoff Invest API

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

Чтобы начать работать с интерфейсом, нужны брокерский счет в Тинькофф, токен доступа и знание языка программирования. Никакого специального ПО не потребуется. У алготрейдеров есть единый API и единый брокерский счет для торгов ценными бумагами с крупнейших мировых бирж. Открывать отдельные счета для торговли на каждой из бирж не нужно. Сервис построен на современном протоколе, есть вся необходимая документация и SDK на разных языках программирования.

выгружать торговые инструменты — акции, облигации, фонды, валюты, фьючерсы — и их параметры;

выгружать историю котировок и текущие рыночные котировки;

выставлять и отменять все виды поручений — рыночные, лимитные, стопы;

просматривать текущий портфель пользователя и историю операций;

получать время работы бирж;

загружать ставки риска инструментов;

подписываться на поток событий по исполнению сделок.

Что нового в последней версии

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

Реализовали API на производительном протоколе gRPС, в числе плюсов которого строгая типизация контрактов, поддержка версионности и автоматическая генерация клиентского программного кода на большинстве языков программирования. gRPC также поддерживает потоковую передачу данных, что позволяет в рамках одного сервиса получать рыночные котировки в режиме реального времени. Для приверженцев RESTful-API реализовали proxy-swagger, а для браузерных web-приложений — шлюз gRPC-web.

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

Усилили защиту счетов за счет ключей с разным уровнем доступа. Теперь можно получить ключ для каждого отдельного счета и в режиме «только для чтения» — без возможности выставлять заявки. Это может пригодиться, например, для разработки внешних систем учета клиентских портфелей или расчета доходности торговли.

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

Увеличили качество, объемы и скорость предоставляемых рыночных котировок, а также разнообразие методов и форматы возвращаемых данных.

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

Обеспечили поддержку всех нововведений брокера, которые не были реализованы в старой версии API: мультисчета, фьючерсы, стоп-заявки.

Если вам интересно познакомиться с API поближе, залетайте на наш GitHub Invest API, смотрите документацию. А наша следующая цель — собрать витрину готовых торговых роботов на разных языках программирования, поэтому мы запустили конкурс роботов.

Tinkoff Invest Robot Contest

Ждем разработчиков с 21 апреля по 23 мая на конкурсе по разработке торгового робота для Тинькофф Инвестиций.

Задача: написать систему, которая реализует одну из торговых стратегий на бирже. Система должна работать на новом API Тинькофф Инвестиций. Ограничений по языкам нет, но предпочтительнее писать на Java, Go, Python и JavaScript.

Для участия в конкурсе зарегистрируйтесь на странице Tinkoff Invest Robot Contest и следуйте инструкциям.

Подобрать бумаги и посмотреть аналитику

  • соотношение ценных бумаг в вашем портфеле — по типам, отраслям и валюте;
  • доходность за месяц, полгода, год или с момента открытия счета;
  • статистику пополнений, выводов, выплат купонов и дивидендов.

Важно: показатели доходности из раздела «Аналитика портфеля», а также на самой вкладке «Портфель» напрямую не влияют на сумму налогов, которые необходимо заплатить с дохода от инвестиций. Подробнее про зависимость дохода и налогов

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

Если вы новичок, робот-советник поможет собрать ваш первый портфель. Для более опытных инвесторов он может стать дополнительным инструментом для поиска инвестиционных идей.

  1. Определите ваш уровень инвестиционного риска. Для этого заполните короткую анкету в приложении Тинькофф Инвестиций. Найти ее можно в разделе «Еще» → «Профиль» → «Инвестиционный профиль».
  2. Выберите валюту инвестиций. Собрать портфель можно в рублях или долларах.
  3. Выберите сумму вложений. Можно собрать портфель на сумму от 1000 до 1 000 000 ₽ или от 50 до 20 000 $.
  4. Выберите дополнительные критерии. Если собираете портфель от 30 000 ₽ или от 600 $, робот-советник предложит вам выбрать дополнительные критерии, по которым он подберет ценные бумаги. Например, собрать портфель акций с постоянными дивидендами или выбрать акции, которые положительно оценивают аналитики.
  5. Оплатите портфель с брокерского счета или дебетовой карты Тинькофф. Акции иностранных компаний тоже можно оплатить рублями, конвертация пройдет по курсу банка Тинькофф. Или вы можете заранее пополнить брокерский счет долларами и оплатить акции без конвертации. Как купить иностранные акции за рубли

В соответствии с требованиями Центробанка перед подбором портфеля робот-советник обязан определить инвестиционный профиль клиента. Инвестпрофиль учитывает уровень риска, на который готов пойти человек при вложении своих средств на фондовом рынке. В Тинькофф Инвестициях мы выделяем три типа инвестпрофилей.

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

Умеренный — клиент может делать рискованные вложения ради потенциального дополнительного дохода. Он стремится накапливать капитал и хочет вкладывать все свободные деньги.

Агрессивный — ради высокой доходности клиент готов к рискованным вложениям и согласен с тем, что этого его портфель может подешеветь в случае просадки на рынке.

Выяснив ваш инвестиционный профиль, робот-советник будет понимать, какие именно типы активов лучше всего вам подойдут. Например, он не станет предлагать консервативному инвестору покупать высоковолатильные акции роста — например, компании Tesla. Скорее всего, для такого инвестора робот-советник соберет портфель из надежных государственных облигаций и биржевых фондов.

Подписание анкеты кодом из СМС, которое необходимо сделать после определения вашего инвестпрофиля, не налагает на вас никаких юридических обязательств. Оно нужно, чтобы внутренняя система Тинькофф Инвестиций запомнила ваш статус и в дальнейшем ориентировалась на него. При этом вы всегда можете заполнить анкету заново и изменить тип своего инвестпрофиля.

Еще

Привет! В этом посте мы расскажем, что умеет наш терминал и как в нем торговать.

Зачем нужен терминал Тинькофф
Чтобы в одном окне видеть все: графики, стакан, список бумаг и другие инструменты.
В терминале мы сделали так, чтобы опытные инвесторы увидели знакомые инструменты, для новичков он был интуитивно понятен, а в целом — чтобы был простым в использовании и с полезным набором функций.

Во-вторых, вы можете отслеживать доходность и стоимость актива с момента покупки, а портфель и историю сделок — за весь период. В некоторых терминалах доходность и стоимость актива или портфеля, а также историю сделок можно смотреть только за текущий торговый день. Стоимость портфеля можно привести в долларах или евро — по биржевому ласт-прайсу.

В-третьих, данные по котировкам обновляются так же быстро, как и в других популярных торговых терминалах.

В-четвертых, этот терминал можно сделать лучше: напишите нам, что, на ваш взгляд, нам нужно доработать или добавить, изменить или убрать, чтобы работать было удобнее. Это можно сделать не выходя из терминала или в комментариях к посту, мы передадим команде разработчиков ваши идеи.

Сколько стоит
Терминал Тинькофф Инвестиций бесплатный — не нужно платить ни единожды, ни при подключении, ни абонентскую плату. Через терминал вы можете торговать с брокерского счета и ИИС, если хотя бы на одном из счетов у вас подключен тариф «Трейдер» или «Премиум».

Рассказываем, как работает терминал Тинькофф Инвестиций

В терминале 9 виджетов. Поставить виджет можно в любом месте экрана:

Чтобы информация в виджете обновлялась в зависимости от выбранного актива, можно привязать виджеты к одной группе. Выбрать группу можно по клику на квадрат в верхнем левом углу виджета.

Чтобы привязать все виджеты к одной группе, в виджетах «Инструменты» или «Портфель» кликните правой кнопкой мыши и нажмите «Привязать все виджеты». У нас на скриншоте все виджеты желтой группы привязаны к акции NLMK.

Если нужно одновременно следить за несколькими активами, откройте вкладки в терминале с помощью плюса вверху и настройте свой набор виджетов в каждой из них. Вкладки можно перемещать и переименовывать.

Инструменты.
В этом виджете можно одновременно отслеживать котировки по нескольким валютам и бумагам.

Рассказываем, как работает терминал Тинькофф Инвестиций

Когда откроете терминал в первый раз, вы увидите в этом виджете список случайных ценных бумаг и валют — добавить новые и удалить ненужные можно правой кнопкой мыши:

Рассказываем, как работает терминал Тинькофф Инвестиций

График. Выбирайте линейный или свечной тип графика и временной интервал — его можно регулировать одной кнопкой. На скриншоте:
1 — тикер бумаги;
2 — переключатель между свечным и линейный графиком;
3 — валюта, в которой торгуется бумага;
4 — группа, к которой вы привязали виджет;
5 — временной интервал;
6 — цена последней сделки;
7, 8 — кнопка и панель периода. Вы можете настроить период и передвигать его в пределах графика;
9 — поиск актива;
10 — котировки по активу.

Рассказываем, как работает терминал Тинькофф Инвестиций

Стакан. В этом виджете можно выбрать один из четырех видов стакана:

1 — классический;
2 — с отображением объема;
3 — с отображением объема бумаг от меньшего к большему;
4 — спред между ценами «бид» и «аск».

Рассказываем, как работает терминал Тинькофф Инвестиций

Заявки
В виджете «Заявка» можно выставить рыночную или лимитную заявки:

Рассказываем, как работает терминал Тинькофф Инвестиций

В виджете «Отложенная заявка» можно выставить тейк-профит, стоп-лосс, или стоп-лимит:

Рассказываем, как работает терминал Тинькофф Инвестиций

В виджете «Активные заявки» можно посмотреть активные заявки по всем бумагам и отменить их:

Рассказываем, как работает терминал Тинькофф Инвестиций

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

Рассказываем, как работает терминал Тинькофф Инвестиций

Операции. Все операции по текущему активному счету. Можно настроить по одному активу через поиск:


Что еще можно
В верхней панели терминала можно выбрать счет, с которого хотите торговать, оставить обратную связь, отключить подтверждения по СМС и добавить виджеты.

Выбор счета
Если у вас есть и брокерский счет и ИИС, вы можете переключаться между ними в этом меню:


Список изменений
Пишем, что и когда изменили в терминале:

Рассказываем, как работает терминал Тинькофф Инвестиций

Настройки
Здесь можно отключить подтверждение сделок по СМС. Подтверждение кодом нельзя отключить для вывода денег на карту и сделок размером более 300 000 рублей или 5000 долларов или евро. Еще можно настроить время сессии, чтобы вы не логинились каждый раз, когда не пользуетесь терминалом:

Рассказываем, как работает терминал Тинькофф Инвестиций

Обратная связь
Присылайте свои вопросы, комментарии и идеи, как мы можем сделать терминал Тинькофф Инвестиций удобнее:

Мы уже работаем над индикаторами, заявками и сделками на графике, параметрами и объемами торгов, объемами торгов на графике и торговлей с плечом, в том числе и торговлей в шорт. Об этом тоже напишем в этом блоге.

Читайте также: