API Тиньков.Инвестиции. Первые шаги
Практически с первых дней я стал клиентом Тиньков.Инвестиции.
И с этого же момента меня терзают смутные сомнения — отражает ли личный кабинет объективную реальность?
Дело в том, что я покупаю ценные бумаги, номинированные в долларах, но в ЛК цены всех активов отображаются в долларах, а итоговая стоимость портфеля в рублях.
И мне непонятно, это доллар вырос или я такой результативный инвестор?
А как же комиссии, налоги и прочие дивиденды?
Вот бы взять все мои сделки и расписать по ФИФО, как в складском учете… А сверху положить полученные дивиденды, а потом вычесть налоги.
Вот тогда я и увижу понятный мне результат.
Оказалось, у Тинькова есть API, которое позволяет писать торговых роботов (мне это совсем не интересно), а также загружать данные по своему портфелю и операциям.
У этого API есть официальное описание, но мне не все было понятно, пришлось разбираться.
Результаты этих разборок представляю вашему вниманию.
Получение токена и установка библиотеки
Перед началом работы нужно установить библиотеку и получить токен.
Цитирую официальную инструкцию по получению токена:
Авторизация
Эти две строки делают все, что нам нужно.
Дальше работаем с переменной client.
Что у нас в портфеле
Получим содержимое нашего вашего портфеля:
Посмотрим основные данные первого элемента:
value — Цена бумаги
balance — Кличество бумаг в портфеле, value и currency — их денежное выражение.
figi — Financial Instrument Global Identifier (Финансовый Глобальный Идентификатор инструмента)
ticker — Тикер актива.
По этим данным мы можем узнать человекочитаемое название актива.
Для данного запроса нам это не нужно (см. поле name), но в других случаях пригодится.
Получаем название бумаги по FIGI и тикету
А вот поиск названия актива по тикеру у меня не работает :(((
Разработчики предложили обновить библиотеку, но даже после этого не взлетело.
Качаем справочник ценных бумаг
Впрочем, я решил этот вопрос кардинально. Скачал у Тинькова полный справочник торгуемых активов:
получил
Как видим, figi и name там есть. Для моих целей — более чем достаточно.
Получаем список операций
А вот самое интересное — получить список моих операций. В операции (в моем случае) попадают следующие действия:
Посмотрим, что получилось. В моем случае, представляет интерес этот элемент Вот что он собой являет
Нас интересуют поля:
Все не так просто (план и факт)
Как я понял, в quantity указано то количество бумаг, которые я хотел купить. А то, что фактически куплено, лежит в trades[i].quantity.
Т.е. если хотите обратится к фактическим сделкам, нужно перебрать то, что лежит в trades.
В ряде случаев, там None — например, для налогов или вводов/выводов средств.
Чтобы получить настоящие цифры, нужно смотреть и в сделки, и в биржевые операции:
Блог компании Тинькофф Инвестиции | Мы запустили Open API для создания торговых роботов в Тинькофф Инвестициях
Мы запустили сервис Open API (открытый программный интерфейс) для алготрейдеров, который позволит написать роботов и настроить автоматическую торговлю на биржах.
Через Open API алготрейдеры смогут:
— выставлять и отменять лимитные заявки;
— через стриминг (в режиме уведомлений) по стакану, бумагам на бирже и свечам получать информацию о фондовом рынке;
— запрограммировать интерфейс Тинькофф Инвестиций так, чтобы мгновенно реагировать на резкое колебание стоимости акций и автоматически выставлять заявку на их покупку или продажу, причем сразу на то количество лотов, которое нужно.
Как работает?
У алготрейдеров есть единый API и единый брокерский счет для торгов ценными бумагами с крупнейших мировых бирж. Открывать отдельные счета для торговли на каждой из бирж не нужно. На сервисе используется простой и понятный протокол для программирования: лаконичные инструкции, актуальная документация с оптимальным набором опций, удобные библиотеки (Java, Scala).
Как начать?
Сервис доступен всем клиентам бесплатно. Устанавливать отдельный терминал на компьютер не нужно. Для работы с Open API необходимо получить токен через личный кабинет, после чего можно писать код. Свои стратегии трейдеры смогут проверять на специальном демосчете без риска потерять деньги.
TINKOFF-INVEST. Разработка торгового робота на JAVA. Часть 1
Введение
Количество физических лиц, имеющих брокерские счета на Московской бирже, за июль 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 – библиотека парсинга сторонних сайтов для получения дополнительной информации (календари, отчеты, графики выплаты дивидендов, и т.п.);
TELEGRAM API – отправка сообщений, интерфейс для управления.
Как я упоминал ранее, данный список не будем принимать за константу, все может измениться в ходе реализации проекта и получения обратной связи от читателей. Гибкий подход.
Гибкий подход (Agile)
Что будет из себя представлять готовый продукт? Какие требования мы выставляем к приложению? Эти вопросы задет себе каждый владелец продукта, менеджер, архитектор, тимлид или разработчик. И иногда случается так, что общая концепция вроде бы и понятна, но нет никакой конкретики, и что делать? В этом случае на помощь могут прийти, так называемые, «гибкие» (Agile) методологиями разработки, де-факто данный подход стал одним из отраслевых стандартов проектного управления и разработки программного обеспечения. Если коротко, то суть заключается в том, что заказчик может внести новые требования на любом этапе реализации проекта. Насколько этот метод универсален можно и нужно спорить.
Моя профессиональная область – это разработка программного обеспечения для банков, где Agile, с легкой подачи Германа Оскаревича прописался всерьез, и похоже, надолго. Если читатель спросит мое личное отношение к данному явлению, то скажу, что словом «Agile» хорошо прикрывать недостаток вовлеченности заинтересованных лиц при подготовке к реализации проекта, а именно формировании требований и проектирования. Agile’ом вполне обоснованно можно замаскировать любой бардак, в том числе, творящийся в головах участников команды :).
Как вы поняли, концепция обрисована крупными мазками. Я говорю: «перед нами», ожидая, что аудитория хабра поможет с формулированием требований к системе и в выборе оптимальных инструментов для реализации задуманных идей. Если есть мысли по теме статьи или конструктивная критика, пишите в комментариях, ваше мнение окажет неоценимую поддержку в развитии проекта.
На этом про Agile все, если вы зашли только ради этого, то ничего интересного для вас, увы, в данной статье больше не будет.
Подготовительный этап
Только тот, кто тщательно подготовился, имеет возможность импровизировать. (Эрнст Ингмар Бергман – шведский режиссёр театра и кино, сценарист, писатель)
Не имея ни малейшего желания в очередной раз пересказывать то, о чем много раз говорено, приведу ссылки, по которым вы найдете исчерпывающую информацию о возможностях API, остается немного сожалеть о том, что в TINKOFF упорно не замечают, что на их ресурсах размещена ссылка на нерабочий ресурс, тревожный звоночек.
Как написать торгового робота тинькофф
Tinkoff Invest API
Автоматизируйте биржевую торговлю и ведите собственную статистику прибыльности
Документация
Анализ котировок бумаг
Через API можно загрузить как исторические котировки, так и котировки в режиме реального времени по всем бумагам
Сигналы на покупку или продажу
Торговлю по алгоритму можно автоматизировать, запрограммировав выставление сигналов
Ведение собственной системы статистики
Если не хватает существующей функциональности по анализу портфеля, то легко сделать свою собственную
Тестирование стратегий (backtesting)
Tinkoff Invest API позволит протестировать торговую гипотезу на основе исторических данных
Создание торговых роботов
При помощи Tinkoff Invest API можно создать своего торгового робота, осуществляющего полностью автоматическую торговлю по стратегии
Протестировать торговую гипотезу можно и без реальной торговли, воспользовавшись sandbox-режимом
API состоит из двух частей
REST — сервис, работающий по принципу запрос-ответ. Реализуется по
Потоковый (streaming) сервис, работающий поверх web socket и транслирующий биржевую информацию в режиме реального времени
Как начать разработку проекта?
Для начала необходимо выбрать — на каком языке будете вести разработку и выбрать один из десятка готовых SDK
Если по каким-то причинам использование готового SDK не решает ваши задачи, то можно разработать свой
Роботы для Тинькофф инвестиции
А в этой статье пройдёмся по тому как именно подключить OsEngine к торгам для Тинькофф Инвестиций, как выписывать ключи и что нужно делать в самой платформе. С картинками, шаг за шагом.
Также, выскажу своё личное мнение о том что в итоге получилось и какие хорошие и плохие стороны есть в их API и на сколько оно подходит в итоге вообще для торговли. В общем – самое интересное снизу)
Также на нашем портале Вы можете научиться алготрейдингу у профессионалов с многолетним стажем: https://o-s-a.net/training.html
Это часть известного онлайн-банка и мне лично кажется что всё у них очень круто будет в этом отношении. Они и дальше будут расти очень быстро. В общем, теперь алготрейдинг пришёл и в их дом. Пользуйтесь.
11. Делаем токен для доступа к Тинькофф инвестициям
22. Запускаем торговых роботов для Тинькофф инвестиций
33. Что думаю лично я
1. Делаем токен для доступа к Тинькофф инвестициям
Начинаем с того что нужно залогиниться на сайте тинькофф инвестиций. И далее, в личном кабинете идём в настройки:
После чего скролим страницу вниз до момента где у нас можно выписать себе токен:
Нажимаем на кнопку «Токен для торговли». Вам там придётся ещё раз ввести пароль в личном кабинете. И перед Вами появиться строка с токеном.
Вы её сохраните в файлик, он нам дальше понадобиться.
2. Запуск торговых роботов для Тинькофф инвестиций
Качаем конструктор роботов с нашего сайта: http://o-s-a.net/os-engine.html
Полистайте страницу и посмотрите видео. Попереходите по ссылочкам по папкам. Это проект с полностью открытым кодом который Вы можете использовать как угодно. Написан на языке СиШарп. Это программа полного цикла алготрейдинга. Делаем бота – тестируем – оптимизируем – запускаем в торги. Ну и не будем повторятся… Почитайте.
В общем, качаем зипку себе на ПК, распаковываем и дём вот к этому экзешнику:
Запускаем от Админа.
BotStation по стрелочке:
Далее идём в окно настроек подключений:
11) « Control » в правом меню
22) Далее Connection Servers
В графу токен вводим значение которое получали в личнок кабинете у брокера.
И уже после этого можем создавать роботов и всё вот это прочее что есть в нашей платформе:
Единственное. Поскольку из за убогости потокового сервиса мы его подключать не стали, постройку свечек Вам придётся делать из стаканов:
Если Вы вдруг не знаете что делать дальше, милости прошу на наш форум или ютуб канал:
Также, ВАЖНО. Не забывайте перевести время компьютера на Московское! Зачем? Лучше Вам не знать ей богу… Но без этого работать не будет.
3. Тинькофф Инвестиции и роботы – что думаю лично я
Удобные сервисы рулят. Лично у меня открытие брокерского счёта заняло 15 минут, вместе с переводом денег на него – вот что главное. И не даром клиентская база Тинькова растёт огромными темпами. Всё очень удобно. Ну ессно, для тех кто уже у них обслуживается.
Восхищаюсь тем подходом который он несёт в каждую область куда заходит. Везде делает прорывы. Везде его товар и сервисы лучше чем у конкурентов на порядок. Илон Маск российский, не иначе. Вот и здесь так.
Скорость входа в трейдинг быстрее чем на биржах криптовалют. Если у Вас уже есть карта – начать торговать, дело 10 – 15 минут. И это великолепно. Прямо бальзам на душу. Спасибо Олег.
Для алготрейдинга вся эта история пока дно полное. Кроме получасовиков торговать абсолютно и решительно нельзя.
Апи – маразматичное и сделано на от..бись. В натуральном смысле этого слова. Люди его делавшие вообще ни разу в жизни робота для трейдинга не видели. И вероятно даже с понятием трейдинга знакомы очень и очень поверхностно. Ибо не знают вообще какие типы данных есть на бирже и как их нужно рассылать.
Из поточных данных вообще идёт полный шлак. Ордеров нет, моих трейдов нет. Ленты сделок с.ка нет. Есть только стаканы, и то их скачивание ограничено 6стью штуками.
Время нигде нет. программисты. Как так у стакана нету таймШтампа. Какого хрена?
Короче. Потоковые данные мы полностью зарезали. Брать там нечего. И в ближайший год там всё это будет переделываться несколько раз. Тинькофф это так не оставит. Просто видать сказать некому пока. Ну ладно. Поэтому даже и начинать не стоит. Всё на чём основан наш коннектор – это запросы. Отсюда у нас задержки с получением данных и прочее. Кроме того, построение свечек только по центру стакана и только классика, ибо объёмов никто не знает, т.к. они их не дают. Такие дела.
В общем – история с АПИ для Тинькофф инвестиций абсолютно вторична и я когда смотрел на итоговый результат по коннектору плакал без остановки несколько часов. Надеюсь они в течении года это дело как-то подхилят и найдут нормального архитектора для Апи.
11) Отличный сервис для людей. 10 домохозяек из 10 я им ставлю.
22) Для алготрейдеров – ад и садомазохизм.
33) На стаканах соответственно вообще нельзя ничего торговать.
44) Быстрые алгоритмы тоже.
55) Много сделок выставлять нельзя.
66) Сервисы прямого доступа отсутствуют(плаза / ASTS / Fast / Twime ). Или есть, но я не увидел.
77) Готовьтесь к тому что они будут Api переделывать и будут проблемы с нашей уже стороны, т.к. мгновенно мы ничего не правим)
88) Торгуем получасовик
99) Собираем свечи из центра стакана
110) Много инструментов не торгуем одновременно
111) Ждём фиксов со строны Тинькофф Инвестиций, чтобы они озаботились судьбой программистов.
Всем удачных алгоритмов!
Уважаемые товарищи из Тинькофф Инвестиций. Будете читать) Я знаю. Наймите нормального консультанта который в этом понимает. У которого есть понимание того какие данные нужны алготрейдерам. Как их нужно давать. Как нужно устраивать подписку. Какие нужны таблицы данных. И за пару месяцев сделаете лучший сервис для алготрейдеров тоже. На том же высоком уровне как Вы уже сделали для домохозяек.