Автоматический импорт стоимости акций в Microsoft Excel

В данном руководстве мы рассмотрим получение стоимости ценных бумаг на Московской бирже в Microsoft Excel. Чтобы разобраться в материале вам нужно уметь вводить и редактировать формулы, т.е. знания чуть выше минимальных.

Итоговый результат будет выглядеть примерно так, выделенные красным значения подставляются автоматически с помощью API Московской биржи:

Шаблон формулы выглядит так:

=ФИЛЬТР.XML(ВЕБСЛУЖБА(СЦЕПИТЬ("https://www.moex.com/iss/engines/stock/markets/XXX/boards/YYY/securities/";ZZZ;".xml?iss.meta=off&iss.only=marketdata&securities.columns=LAST"));"//document//data//rows//row/@LAST")

Под каждую ценную бумагу формула должна быть отредактирована.

XXX — тип ценной бумаги:

  • bonds — облигации
  • shares — российские ценные бумаги за исключением облигаций
  • foreignshares — иностранные ценные бумаги

YYY — идентификатор режима торгов.
ZZZ — тикер (код) ценной бумаги. Важно понимать, что тикер это не ISIN, хотя иногда они и совпадают. Если вы будете вставлять в формулу ISIN, то иногда она не будет работать.

Теперь давайте разбираться, где брать YYY и ZZZ для нашей формулы.

Их можно найти на сайте Московской биржи — moex.com. На примере ниже приведены данные для акций Газпрома.

Также можно узнать нужные нам данные через запрос к API. Введите а адресную строку браузера:

https://iss.moex.com/iss/securities.xml?q=ПОИСКОВЫЙ_ЗАПРОС&iss.meta=off&securities.columns=name,emitent_inn,isin,secid,primary_boardid

В качестве поискового запроса можно использовать ISIN, тикер, название и т.п. Рекомендуем использовать именно ISIN, т.к. введя запрос по типу «Газпром» можно получить более одного результата.

secid="GAZP" — тикер, ZZZ для нашей формулы
primary_boardid="TQBR" — идентификатор режима торгов, YYY для нашей формулы.

В итоге формула будет выглядеть так:

=ФИЛЬТР.XML(ВЕБСЛУЖБА(СЦЕПИТЬ("https://www.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities/";"GAZP";".xml?iss.meta=off&iss.only=marketdata&securities.columns=LAST"));"//document//data//rows//row/@LAST")

Обратите внимание, что в формуле тикер нужно писать в кавычках, а другие две переменные без.

Для удобства тикер можно вынести в отдельную ячейку, в нашем примере это B2. В этом случае использовать кавычки не нужно, т.е. вместо "GAZP" пишем B2, а в ячейку B2 вводим GAZP уже без кавычек.

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

Известные проблемы:

  • формула может не работать в очень старых версиях Excel
  • поисковый запрос к API может некорректно отображаться (белый экран) в браузере Firefox

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


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *