В предыдущем видео я обещал следующее посвятить методам покупки ценных бумаг (акций, облигаций, валюты) на бирже через Open API Тинькофф Инвестиций и языка программирования Python и сегодня я расскажу и покажу как это можно делать. Я покажу методы и структуры запросов для формирования рыночных и лимитных заявок через API и Питон. А также ещё раз коснусь других методов API (operations, portfolio). И заодно использую Google Sheets API в реальной задаче.
Однако, так получается, что значительная часть сегодняшнего разговора будет о разочарованиях от Open API Тинькофф Инвестиций. В первую очередь речь о практически полной бесполезности Песочницы (а я возлагал на неё большие надежды), да и в целом я обнаружил крайне печальный недостаток в Open API Тиньков Инвестиций, который, на мой субъективный взгляд, ставит жирный крест на перспективах алготрейдинга через этот API. Но обо всем по порядку.
Рыночная заявка через Open API Тинькофф Инвестиций
Напоминаю что я работаю с API через неофициальный SDK от @daxartio. Весь запрос укладывается в две строчки кода (при условии уже сформированного клиента)
1 2 3 4 5 6 7 8 |
def __market_order(self, direction : tinvest.OperationType, lots : int, figi : str): """ Рыночная заявка https://tinkoff.github.io/invest-openapi/swagger-ui/#/orders/post_orders_market_order """ request = tinvest.MarketOrderRequest(lots=lots, operation=direction) resp = self.get_sync_client().post_orders_market_order(figi, request) return resp |
Лимитная заявка на Python
Лимитная заявка отличается не значительно
1 2 3 4 5 6 7 8 |
def __limit_order(self, direction : tinvest.OperationType, price : float, lots : int, figi : str): """ https://tinkoff.github.io/invest-openapi/swagger-ui/#/orders/post_orders_limit_order В текущей версии Open API вообще нет Stop Loss / Take Profit """ request = tinvest.LimitOrderRequest(lots=lots, operation=direction, price=Decimal(price)) resp = self.get_sync_client().post_orders_limit_order(figi, request) return resp |
Собственно это все что нужно знать о совершении сделок через Open API. Есть ещё метод отмены заявки и получение списка открытых заявок. Но это все не сложно. Куда интереснее про недостатки Open API.
В API Тинькофф Инвестиций нет Stop Loss и Take Profit
Да, да, вы не ослышались — этих важнейших инструментов в API нет ни в каком виде. То есть совсем. Как такое вообще может быть я представляю с трудом. Я писал советников на MQL4 в далеком 2007 году и там это было. А у брокера #1 в 2021 году их нет.
Да можно что-то придумать (подписку на бумагу например, может какие встречные заявки), но сильно сомневаюсь что это все может быть рабочим на низких таймфреймах на волатильных инструментах. В любом случае контроль уровней на клиенте это дикий бред и так быть не должно.
Песочница ничего не знает про рынок
Все рыночные заявки через /orders/market-order в Песочнице выполняются по фиксированной цене в 100 рублей в полном объеме моментально (wtf??? но факт). Т.е. этим методом в Песочнице пользоваться не имеет смысла в принципе, то есть абсолютно.
Лимитные заявки /orders/limit-order исполняются по любой выставленной вами в качества лимита цене моментально и в любом объеме (чтоооо????). Т.е. в Песочнице можно купить дохулиард лотов Теслы за рубль и продать за два. Лимитная заявка — это отложенная, в первую очередь, заявка, а срабатывает сразу независимо ни от чего. Ну как так то! В чем, в чем блин был смысл такой Песочницы вообще!!!…
Да можно что-то придумать создать псевдо рыночные заявки (запрашивать стакан и ставить лимитную по стакану, прикидываясь рыночной), но это не стратегия.
Одним словом забудьте о Песочнице вообще — в текущем её виде в ней смысл только потестить уходимость запросов из кода и ничего больше.
Подробнее обо всем этом в видео
Код из видео, как обычно в репозитории в ветке с номером 2.
https://github.com/Denis070/azzyt-tinvest-algotrading/tree/2-action
Что думаете об этой дичи? Давайте обсудим в комментариях к видео и заранее спасибо за лайки ;)