Андрей Филиппович
Андрей Филиппович личный блог
29 апреля 2024, 19:07

Как работать с таблицами Excel. Как работают формулы?

В статье я расписываю как пользоваться Excel таблицей с подтягиванием информации из API Московской биржи.

Таблицу удобно использовать для автономного подсчёта всех данных по инвестиционному счёту. Её можно кастомизировать как душе угодно.

Поехали!

Все ссылки работают через API Московской Биржи.

Чтобы понять, что такое API проведу аналогию с рестораном. База данных московской биржи- это кухня ресторана, мы и в ресторане и в финансовом мире- клиенты. Как, что, кем готовится на кухне или в базе данных биржи нас не волнует, нам важен конечный продукт. В ресторане официант принимает от нас информацию о том, что мы хотим, передаёт на кухню, там забирает заказ и приносит нам готовый заказ. API делает тоже самое, мы ему говорим что хотим, он делает все манипуляции с базой данных мосбиржи и приносит нам готовую информацию.

Чтобы начать пользоваться таблицей Excel необходимо лишь научиться работать с API, что мы сейчас и сделаем.

Для начала распишу общие принципы, чтобы было понятно откуда берутся данные.

 

Все формулы выглядят одинаково и в них меняется всего пара деталей.

Этот урок делаю на основе прикреплённой таблицы. Если что-то не получается, то можете заглянуть в таблицу и сверить.

Для всех формул нам нужно 2 главных компонента. Это ISIN бумаги и её режим торгов. Все данные будь то название компании, величина купона или дата оферты опираются на них.

isin мы вписываем сами, а вот режим торгов проще всего узнавать через формулу.

Так выглядит формула по получению режима торгов облигации Контрол Лизинг выпуск 2:

=ФИЛЬТР.XML(ВЕБСЛУЖБА(«iss.moex.com/iss/engines/stock/markets/bonds/securities/RU000A1086N2/securities.xml?iss.meta=off&iss.only=marketdata&marketdata.columns=BOARDID»);"//document//data//rows//row/@BOARDID")

Если вставить её в ячейку Excel, то после нажатия на Enter вам выдаст текст “TQCB”. TQCB- это режим торгов в котором торгуются облигации Контрол Лизинга. На скриншоте под цифрой 1 выделен фрагмент куда я вставил формулу, а под цифрой 2 показано, что в ячейке B2 появилась надпись TQCB.

Как работать с таблицами Excel. Как работают формулы?

Не пугайтесь, далее всё расписано подробнее

Функция состоит из 2 частей:

  • Связка из двух формул ФИЛЬТР.XML + ВЕБСЛУЖБА
  • Ссылка

По поводу связки формул вообще не заморачивайтесь, она не меняется, а все действия происходят внутри ссылки.

Взгляните на ссылку:

iss.moex.com/iss/engines/stock/markets/bonds/securities/RU000A1086N2/securities.xml?iss.meta=off&iss.only=marketdata&marketdata.columns=BOARDID

Прежде всего это рабочая ссылка и если перейти по ней, то попадёте на страницу где вам будет показан код с ответом на наш запрос. Мы хотели получить режим торгов облигации RU000A1086N2 и получили.

На скриншоте выделил фрагмент кода, где нам отдаётся нужная информация.

Как работать с таблицами Excel. Как работают формулы?

То есть формула Excel лишь обрабатывает ссылку, которая ведёт на специальный раздел Московской Биржи с точечной информацией и отдаёт её в виде текста в ячейке Excel.

Перейдём к следующей ячейке в таблице и узнаем название эмитента через запрос к API

Формула выглядит следующим образом:

=ФИЛЬТР.XML(ВЕБСЛУЖБА("https://iss.moex.com/iss/engines/stock/markets/bonds/boards/"&B2&"/securities/"&A2&"/securities.xml?iss.meta=off&iss.only=securities&securities.columns=SECNAME");"//document//data//rows//row/@SECNAME")

 

Сначала разберём фрагменты "&B2&" и "&A2&". В таком виде выглядят ссылки на другие ячейки. Как вы могли догадаться, ссылки ведут на необходимые нам ISIN и режим торгов. Это нужно, чтобы далее можно было просто протянуть ячейку и каждый раз не вписывать новые данные.

Если бы нужно было получить ссылку, которая ведёт на страницу в интернете, то она выглядела бы так:

https://iss.moex.com/iss/engines/stock/markets/bonds/boards/TQCB/securities/RU000A1086N2/securities.xml?iss.meta=off&iss.only=securities&securities.columns=SECNAME

Вместо ссылок у нас стоит режим торгов и isin бумаги

На скриншоте я показал как это выглядит в Excel


Как работать с таблицами Excel. Как работают формулы?


Теперь разберём как нам необходимо менять формулу, чтобы получать всё, что нам необходимо

Формулу можно представить вот в таком виде:

iss.moex.com/iss/engines/stock/markets/bonds/boards/РЕЖИМТОРГОВ/securities/ИДЕНТИФИКАТОР/securities.xml?iss.meta=off&iss.only=РАЗДЕЛ&РАЗДЕЛ.columns=ДАННЫЕ

С режимом торгов и идентификатором(ISIN) мы разобрались, разберёмся и с РАЗДЕЛ и ДАННЫЕ

Разделы и данные находятся тут

Это специальный список для работы с API Мосбиржи. В нём можно найти название нужных вам данных, посмотреть как они называются в API и в каком разделе располагаются.

На скриншоте отметил что нам нужно смотреть, если мы хотим получить краткое наименование ценной бумаги.

Как работать с таблицами Excel. Как работают формулы?

В области 1 указано, что в формулу были добавлены нужные данные и раздел, а в области 2 мы видим сокращенное наименование эмитента.

Как работать с таблицами Excel. Как работают формулы?

Небольшое отступление по всей формуле, а не только ссылке. ДАННЫЕ необходимо подставлять не только в ссылке, но и в конце формулы, как указано в примере ниже:

  • =ФИЛЬТР.XML(ВЕБСЛУЖБА(«iss.moex.com/iss/engines/stock/markets/bonds/boards/РЕЖИМТОРГОВ/securities/ИДЕНТИФИКАТОР/securities.xml?iss.meta=off&iss.only=РАЗДЕЛ&РАЗДЕЛ.columns=ДАННЫЕ»);"//document//data//rows//row/@ДАННЫЕ")

Как видите, ничего сложного.

Для лучшего понимания ниже распишу все формулы в таблице и откуда они берутся.

Вот так выглядит формула для подтягивания доходности купонов по облигациям в процентах:

=ФИЛЬТР.XML(ВЕБСЛУЖБА("https://iss.moex.com/iss/engines/stock/markets/bonds/boards/"&B2&"/securities/"&A2&"/securities.xml?iss.meta=off&iss.only=securities&securities.columns=COUPONPERCENT");"//document//data//rows//row/@COUPONPERCENT")

Видим, что раздел securities, а наименование COUPONPERCENT


Как работать с таблицами Excel. Как работают формулы?



В списке от Московской биржи есть и другие разделы, например, marketdata. В ней можно найти разную информацию, касающуюся торгов на бирже. Так, LAST показывает нам цену закрытия облигации на предыдущий день торгов.

Как работать с таблицами Excel. Как работают формулы?


И формула выглядит следующим образом:

=ФИЛЬТР.XML(ВЕБСЛУЖБА(«iss.moex.com/iss/engines/stock/markets/bonds/boards/»&B2&"/securities/"&A2&"/securities.xml?iss.meta=off&iss.only=marketdata&marketdata.columns=LAST");"//document//data//rows//row/@LAST)

На скриншоте выделил где вставлена эта формула, и что в этой ячейке отображается текущая цена облигации Контрол Лизинг.

Как работать с таблицами Excel. Как работают формулы?

Теперь вы самостоятельно сможете пользоваться таблицей и находить необходимые формулы для гибкой настройки.

Самому кажется, что написано, возможно, слишком сложно, поэтому, если будут вопросы, пишите их в комментариях. Постараюсь ответить на все.

Также не забывайте про лайки и подписку на канал 👍

Больше всего постов я пишу в своём телеграм канале: https://t.me/filippovich_money





20 Комментариев
  • Активный Инвестор
    29 апреля 2024, 19:47
    А чем это лучше, чем вытащить все нужные данные из Квика через ДДЕ-сервер?
    • Nekto Finkelmaer
      30 апреля 2024, 02:54
      Активный Инвестор, например тем, что нет DDE на андроиде. Я все в JS пишу, что бы смотреть где захочу.
  • IliaM
    29 апреля 2024, 20:19
    лучше с LibreOffice. Excel не кошерно…
  • vsbar
    29 апреля 2024, 21:49
    из Google sheets сработает?
  • Young Hispaniola
    30 апреля 2024, 04:43
    бгг… формулы работают по математике то бгг :))
  • IliaM
    02 мая 2024, 11:29
    Запрос типа "=ФИЛЬТР.XML(ВЕБСЛУЖБА(«iss.moex.com/iss/engines/stock/markets/shares/securities/SNGSP/securities.xml?iss.meta=off&iss.only=marketdata&marketdata.columns=BOARDID»);"//document//data//rows//row/@BOARDID")" для рынка акций выдает аж 3 строки.
    Дополнительный фильтр нужен.
      • IliaM
        02 мая 2024, 12:17
        Андрей Филиппович, по рынку ОТС интересно что можно вытащить оттуда.
  • Геннадий Цветков
    07 мая 2024, 09:35
    Этот LAST будет с 15-ти минутной задержкой
    • Your bunny wrote
      07 мая 2024, 23:46
      Геннадий Цветков, да, а первые 15 минут после открытия дня вообще без значений.
  • Your bunny wrote
    07 мая 2024, 23:33

    Может кому будет полезно: у меня мат. формулы в табличке не фурычат без модификации разделителя целой и дробной частей.

    Т.к. системное значение разделителя у меня — запятая, а API MOEX возвращает с точкой (например LAST=«308.35»). Поэтому, надо либо менять системное значение разделителя, либо использовать замену в формуле:

    =ПОДСТАВИТЬ(ФИЛЬТР.XML(ВЕБСЛУЖБА(«iss.moex.com/iss/engines/stock/markets/shares/securities/»&A17&".xml?iss.meta=off&iss.only=marketdata&marketdata.columns=SECID,BOARDID,LAST");"//document//data//rows//row[@BOARDID='"&B17&"']/@LAST");".";",")

    где "&A17&" — SBER, а "&B17&" = TQBR

    • alex474111
      10 мая 2024, 19:28
      Your bunny wrote, Спасибо. В LibreOffice Ваш метод помог.
  • Кирилл Крамаров
    13 мая 2024, 17:11
    Подскажите как решили вопрос:
    1. Облигации с переменным доходом RUONIA +% — как что указываете вы? может как идея для каждой акции писать формулу (тянуть с официальной ставкой на текущий день + % который эмитент дает сверху)

    2. Криво тянется купон. Проверял на сайте вся информация есть, а формула затягиевает дичь какуюто

    3. НКД тоже некоректные данные подгружает

    4. и цена бумаги в % некоторые бумаги не хочет видеть цену. 

    в чем может быть причина, как вылечить?

    • Алексей Плесков
      15 мая 2024, 10:10
      Кирилл Крамаров, 2-4 пункты лечатся сменой разделителя в настройках Excel: Файл>> Параметры>> Дополнительно>> Использовать системные разделители. Надо поменять в ячейке знак запятой на знак точки >>OK
  • Fellw
    25 июня 2024, 17:04
    Добрый день, искал — но не смог разобраться в вопросе, почему для LQDT определяется некорректная цена, не 1,----, а непонятная сумма.
  • Sol4rinn
    31 июля 2024, 10:38
    Приветствую. Есть возможность автоматизировать получение данных от АПИ Мосбиржи? То есть в открытом документе цены по формулам в строках автоматически обновляются, например, раз в минуту? Сейчас приходится заходить в каждую ячейку (в портфеле больше 40 строк с позициями) и прощелкивать Enter для каждой, чтобы обновить данные.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн