Всем привет! Производя учет финансов в своей 1С-ке, я часто задавался вопросом – как мне учитывать стоимость ценных бумаг? С депозитами, банковскими счетами, наличностью проблем нет – все всегда известно и актуально, но вот с инвестициями мне всегда приходилось делать срез на какую-то дату. Грубо говоря, через минуту у меня стоимость активов могла стать больше или меньше, а от этого страдала достоверность отображаемой информации.
Внимание! Эта статья – не тянет на руководство, а лишь отображает текущую картину моих достижений при разработке собственной базы. Все материалы берутся из открытых источников, анализируются и применяются для решения своих задач.
Недавно я наткнулся на такую вещь, как TINKOFF INVEST API, которая позволяет делать запросы к инструментам сервиса Тинькофф Инвестиции. У меня как раз ценные бумаги размещаются на этой площадке, так что я очень обрадовался и принялся изучать API. Первой задачей было – организовать получение стоимости своего портфеля. К моему удивлению, это оказалось довольно просто.
Начало
Для начала я организовал возможность удобного взаимодействия 1С с HTTP. Для этого я добавил КоннекторHTTP – Коннектор – библиотека для работы с HTTP запросами. Библиотека берет на себя всю рутину работы с HTTP запросами. Буквально в одну строку можно получать данные, отправлять, не заботясь о необходимости конструирования URL, кодирования данных и т.п.
Далее в личном кабинете Тинькофф-Инвестиции я выпустил токен, который понадобится для получения сведений из своего инвестиционного счета. Я выпустил токен только для чтения, так как возможности API широкие и позволяют в том числе осуществлять торговлю своими активами, но я пока решил только брать информацию.

Так выглядит моя обработка для получения стоимости портфеля. На данный момент я научился извлекать стоимость акций, стоимость облигаций, общую стоимость портфеля, а так же веду работу над отображением конкретных активов. Здесь я пока смог вывести только figi своих активов. Метод получения портфеля по счету называется GetPortfolio. Тело ответа включает в себя следующие поля:
Поле | Тип | Описание |
---|---|---|
total_amount_shares | MoneyValue | Общая стоимость акций в портфеле. |
total_amount_bonds | MoneyValue | Общая стоимость облигаций в портфеле. |
total_amount_etf | MoneyValue | Общая стоимость фондов в портфеле. |
total_amount_currencies | MoneyValue | Общая стоимость валют в портфеле. |
total_amount_futures | MoneyValue | Общая стоимость фьючерсов в портфеле. |
expected_yield | Quotation | Текущая относительная доходность портфеля, в %. |
positions | Массив объектов PortfolioPosition | Список позиций портфеля. |
account_id | string | Идентификатор счёта пользователя. |
total_amount_options | MoneyValue | Общая стоимость опционов в портфеле. |
total_amount_sp | MoneyValue | Общая стоимость структурных нот в портфеле. |
total_amount_portfolio | MoneyValue | Общая стоимость портфеля. |
virtual_positions | Массив объектов VirtualPortfolioPosition | Массив виртуальных позиций портфеля. |
Интересующий меня параметр positions – это массив PortfolioPosition, у которого имеются следующие поля:
Поле | Тип | Описание |
---|---|---|
figi | string | Figi-идентификатора инструмента. |
instrument_type | string | Тип инструмента. |
quantity | Quotation | Количество инструмента в портфеле в штуках. |
average_position_price | MoneyValue | Средневзвешенная цена позиции. Возможна задержка до секунды для пересчёта. |
expected_yield | Quotation | Текущая рассчитанная доходность позиции. |
current_nkd | MoneyValue | Текущий НКД. |
average_position_price_pt | Quotation | Deprecated Средняя цена позиции в пунктах (для фьючерсов). Возможна задержка до секунды для пересчёта. |
current_price | MoneyValue | Текущая цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. |
average_position_price_fifo | MoneyValue | Средняя цена позиции по методу FIFO. Возможна задержка до секунды для пересчёта. |
quantity_lots | Quotation | Deprecated Количество лотов в портфеле. |
blocked | bool | Заблокировано на бирже. |
blocked_lots | Quotation | Количество бумаг, заблокированных выставленными заявками. |
position_uid | string | position_uid-идентификатора инструмента |
instrument_uid | string | instrument_uid-идентификатора инструмента |
var_margin | MoneyValue | Вариационная маржа |
expected_yield_fifo | Quotation | Текущая рассчитанная доходность позиции. |
Figi-идентификатор инструмента имеет тип данных строка и его я легко смог вывести в таблицу, но вот следующий параметр “тип инструмента”, несмотря на то, что имеет тоже строковый тип данных, в таблицу уже не заносится. Пока я с этим разобраться не могу. А уж числовые параметры имеют составные типы данных и чтобы добраться до чисел нужно делать запрос вплоть до “units”.

0 Responses to “Интеграция 1С с TINKOFF INVEST API и API МОСБИРЖИ: первые рабочие наброски”