Если метод /portfolio Open API Тинькофф Инвестиций, кот. я разобрал в предыдущем видео/посте возвращает мои текущие позиции (купленные акции, облигации, валюту и т.д), то метод /operations позволяет получить информацию о завершенных операциях. Покупка/продажа бумаг, ввод/вывод денег с/на брокерский счет Тинькофф Инвестиций, а также о заявках на покупку/продажу, которые ещё не были выполнены. Этот метод необходим чтобы посчитать доходность всей инвестиционной деятельности, а не только эффективность текущего портфеля.
Подробно смотри в видео…
Видео по методу /operations Open API Тинькофф Инвестиций
Полезные ссылки
- Полный плейлист видео по работе с Open API Тинькофф Инвестиций на Python
- Все статьи под тегом Тинькофф Инвестиции у меня в блоге
- Описание метода /operations
Код примера работы с /operations Open API Тинькофф Инвестиций из видео
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
import json from datetime import datetime, timedelta, timezone import requests import tinvest as tinvest import tcs_token """ Пример работы с методом /operations Open API Тинькофф Инвестиции @author Azzrael """ def get_operations(): """ isMarginCall - при маржинальной торговле (с плечом) закрытие по маржинколу status - может быть отложенная, лимитная заявка - дублируется комиссия, но не всегда (напр. дивиденд) - не хватает тикера для визуализации бумаги - не хватает фильтров (фиги мало, хотя бы тип операции) :return: """ # авторизация https://tinkoff.github.io/invest-openapi/auth/ headers = {"Authorization": "Bearer %s" % tcs_token.real} # урл до серверов апи https://tinkoff.github.io/invest-openapi/env/ api = 'https://api-invest.tinkoff.ru/openapi/' # метод Операции https://tinkoff.github.io/invest-openapi/swagger-ui/#/operations endpoint = "operations" dt_format = lambda x : x.replace(tzinfo=timezone.utc).isoformat() data = { 'from' : dt_format((datetime.now() - timedelta(90))), 'to' : dt_format(datetime.now()), # 'figi' : 'BBG004S681B4' } resp = requests.get(api + endpoint, data, headers=headers).json() print(json.dumps(resp, ensure_ascii=False, sort_keys=True, indent=4)) return resp # get_operations() """ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ < /operations с помощью SDK tinvest """ client = tinvest.SyncClient(tcs_token.real) resp = client.get_operations( from_=(datetime.now() - timedelta(90)), to=datetime.now(), # figi='BBG004S681B4' ) # print(resp) # print(resp.payload.operations[0]) # посчитаю сколько денег я ввел на брокерский счет payed_in = [r.payment for r in resp.payload.operations if r.operation_type == tinvest.OperationTypeWithCommission.pay_in] print(payed_in) print(sum(payed_in)) |
Если у тебя есть вопросы по работе с Open API (есть проблемы, что-то пошло не так) или я что-то не раскрыл, или я в чем то не прав — смело пиши в комментариях (и лучше в комментариях к видео, помогает продвигать, что мотивирует снимать дальше). Ну и лайки/дислайки — не скупись, хочется понимать насколько то что я делаю стоит продолжать или что-то нужно изменить.
А если ты ещё не стал крутым алготрейдером в Тинькофф Инвестициях, но собираешься, то сделай это по моей ссылке. Тинькофф Инвестиции обещают мне за это акций, и контента у меня будет ещё больше…
Вячеслав 2021-07-30
Возможность: у тинькофф нет комиссии на сделки по их фондам. конкретно TRUR. Можно торговать интрадей и собирать разницу в цене без издержек.
Проблема: в OpenAPI ограничен список бумаг, на которые можно выставлять ордера. TRUR как раз нельзя торговать. Смотреть можно, торговать - нельзя. Одновременно с этим в веб интерфейсе все возможно. Я как программист понимаю, что веб также работает через какой-то API. Пробовали ли вы обойти это ограничение? Если что - это золотое дно, свяжитесь со мной по телеграмму, может вместе придумаем решение @svejak38