Comments 64
Оказалось, у Тинькова есть API, которое позволяет писать торговых роботов (мне это совсем не интересно)
А вот мне, наоборот, оказалось интересно. Начал возиться с этим чуть больше недели назад. Написал программу, которая сигнализирует о необычных состояниях на рынке, дальнейшие решения я уже принимал вручную. В принципе, понравилось.
Главная проблема — API очень простой, но одновременно и очень сырой. Часто тормозит и глючит. Поиграться — нормально, но если торговать профессионально, то есть варианты и получше.
то есть варианты и получше
Был бы рад ссылкам
Специализированные брокеры. Полноценно пока не интересовался этой темой, поэтому ссылок не дам.
Там в квике есть lua, на которой худо бедно можно накорябать робота, графики с индивидуальными индикаторами, или шлюз в другие миры.
Но квик что-то подтормаживает, знающие люди говорят, для htf надо брать плазу2 и колокейшн у брокера.
знающие люди говорят, для htf надо брать плазу2 и колокейшн у брокера
Знающие люди подсказывают, что все эти колокейшены с плазой2 только самая верхушка айсберга. Железо и софт (в целом, вместе со всем) для hft тянут на сотни тысяч и миллионы долларов. Обычный сервак в колокейшене с плазой 2 был HFT примерно с десяток лет назад. Сейчас он уже никак не вытянет звание HFT в борьбе со спецжелезом, которое последние несколько лет все игроки используют для HFT.
К сожалению, HFT сейчас удел очень крупных компаний.
Рано или поздно пытливый программистский ум все равно захочет хоть немного HFT — бота с реакцией в несколько секунд. О миллисекундах, к сожалению, речи не идёт — это удел кровавого энтерпрайса и крупных игроков.
Я имею в виду тормоза самого Тинькоффа как сервиса. В обычном режиме там тоже всё исполняется в момент, но в периоды высокой активности на бирже, когда самое лучшее время делать деньги, он встаёт колом.
Но в целом я Т не особо за это ругаю: у него изначально была другая направленность — не на профессиональных трейдеров, а просто на желающих пощупать возможность заработка на инвестициях в долгосроке. API для торговли они предоставили совсем недавно.
Колкейшен, плаза, квик и прочие технологии нужны больше для надежности.
Сервер у брокера это уменьшение вляния сети на обработку запросов. Опять же повышение отклика. Хороший протокол (таже плаза) это скорость обработки ордеров.
Конечно речь идёт не о микросекундах современных HFT систем, но все же сильно лучше и надёжнее сотен, а то и тысяч миллисекунд при обработке команд через классический Rest через интернет.
Да и софт для трейдинга точат именно под такие протоколы в основном. Т.е. получаем еще и единообразие, что тоже полезно.
Почему ржут? А потому что пока скрипит ваша плаза в колокейшне, у них уже миллиончик+миллиончик+миллиончик…
По вашей логике надо после рождения сразу на кладбище ползти, ведь зачем вся эта суета, когда во круг миллионеры делают свои миллионы, а миллиардеры свои миллиарды…
Вы, если не секрет, какой темой зарабатываете на жизнь?
Не стрёмно ей заниматься, когда во круг столько успешных миллиардеров, которые, если бы они конечно знали про ваше существование, ржут над вашими потугами на их фоне? ))
Можете скинуть пример этой программы?
А в режиме read-only через API Тинькофф можно считать только свои позиции?
Кто-нибудь знает — Тинькофф единственный брокер, которые имеет своё открытое апи?
В первую очередь интересен только просмотр позиций без возможностей торговли.
И российских?
И оно открыто? А кто кроме Тинькова имеет открытое апи?
Какой вообще смысл имеет закрытое АПИ? Оно же для клиентов предназначено.
Понятно, что для подключения надо пройти регистрации и прочее. Как и у Тинькова собственно.
Без авторизации оно просто не имеет смысла.
Например iti capital имеет АПИ.
Тинькофф Инвестиции, ITI Capital (АО «ИК «Ай Ти Инвест»).
А знаете ещё кто имеет апи?
Вот тут становится непонятно, что вы подразумеваете под «Открытым АПИ».
Ну для меня это значит, что имеется подробная документация по протоколу и возможность написания собственных клиентов, а не только плагинов и скриптов для квика.
А я хочу к Питерской
Я себе написал замену Excel для учёта сделок.
Всё считает. Можно посмотреть состояние портфеля на любую дату. Главное все сделки в систему завести… Можно отчёт брокера импортировать. Зацените кто хочет, https://izi-invest.ru
Относительно "а итоговая стоимость портфеля в рублях" — у Тинькофф есть переключатель (в мобильных приложениях на значок рубля нажать, если не путаю), можно и в долларах смотреть
Оказалось, у Тинькова есть API,
Вах, не прошло и полгода, что называется…
Когда я, будучи их клиентом, спросил о кусочке API для всего-то ежедневного получения курса евродоллара, меня первую неделю не могли понять вообще, вторую отвечали безопасники (упс? я вообще-то технарей спрашивал) разных уровней и задавали острожные, хоть и дурацкие на взгляд программиста, вопросы, а на третью посоветовали… парсить их главную страницу, где выводится курс…
Передовой банк, что уж тут.
Я так недавно на безопасников БКС наткнулся. Консультировала меня брокер. Когда спросил про то, можно ли робота своего подключить к личному кабинету - было недоумение, она обещала с безопасниками поговорить на этот счёт. На следующий день звонит, говорит, что мне безопамники сказали, что атата сделают.
Кажется эти броХеры вообще не в курсах что в их банках творится...
Моя задача — сделать консольную утилиту для просмотра полной итоговой суммы и процентов моего портфеля. Однако, столкнулся с несколькими недостатками данного 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 — курс с поставкой валюты «завтра», но меня устраивает.
instr = client.market.market_search_by_figi_get('BBG0013HGFT4')
print(instr)
iss.moex.com/iss/engines/currency/markets/selt/boards/CETS/securities.json?iss.only=marketdata&marketdata.columns=SECID,LAST
(хабр ссылку порезал после запятой)
В итоге я написал рабочий модуль генератора для OpenApi 3.0, который генерит вполне себе апишечку для раста через swagger.yaml. Вот он: rust-swagger-codegen_v3
Из последнепофикшенного — исправил передачу даты в запросе.
Кстати поиграться с ним можно здесь tinkoffcreditsystems.github.io/invest-openapi/swagger-ui без всяких скачиваний непонятных библиотек…
Использовать его проще, чем это описано во всяких инструкциях. Просто посылаешь post запрос на нужный адрес с нужным заголовком и получаешь данные в json формате…
А разочаровался в том, что через команду /operations нельзя получить сведения о движениях денежных средств (ввод, вывод дс, получение дивидендов, купонов и т.д....) Из-за этого для меня этот апи перестал быть интересным.
А ещё там код бумаги выдаётся не привычный ISIN, а какой-то экзотический FIGI… Я смог через тот же апи сделать таблицу соответствия ISIN и FIGI, но как-то заморочно всё выходит…
А ещё нет ограничений по правам токена. Если выпустил токен, то он либо sandbox, который вообще ни чего не может, либо боевой, который вообще всё может (покупать, продавать), а мне нужен к примеру токен, который может только получать историю сделок, но такого нет.
ЛИФО позволяет получить налоговый вычет за счет старых бумаг, так как доход от продажи имущества бывшего во владении более 3 лет налогом не облагается. Акции в том числе.
2. У дивов налогообложение другое, поэтому сначала учесть налоги в них, потом складывать :)
По указанным в статье ссылкам информации практически нет.
Так что теперь у меня автоматизированный учет по брокерскому счету и excel-ка по ИИС. :(((
Жесть какая-то
В поддержку писал? Очевидно технически проблемы быть не должно
Сначала нужно получить Id-ы своих счетов
# Список счетов
client.user.user_accounts_get()
Ответ:
{'payload': {'accounts': [{'broker_account_id': '2000270000',
'broker_account_type': 'Tinkoff'},
{'broker_account_id': '2000490000',
'broker_account_type': 'TinkoffIis'}]},
'status': 'Ok',
'tracking_id': '04b94f70499c4630'}
Затем, запрашиваем операции по счету с типом TinkoffIis (указываем broker_account_id='2000490000') и получаем то что нужно
d2 = datetime.now(tz=timezone('Europe/Moscow'))
d1 = d2 - timedelta(days=5000)
ops = client.operations.operations_get(_from=d1.isoformat(), to=d2.isoformat(), broker_account_id='2000490000')
API Тиньков.Инвестиции. Первые шаги