Исторические данные индекса Московской Биржи (IMOEX) в Google Sheets
Статья Михаила Смирнова, написанная для канала t.me/google_sheets
Чат канала: t.me/google_spreadsheets_chat
Другие статьи Миши, написанные для нашего канала: t.me/google_sheets/1203
Здравствуйте, товарищи!
Небольшая инструкция на скорую руку о том, как достать исторические данные индекса московской биржи.

Про всё, что можно получить от московской биржи в виде XML (на самом деле ещё HTML, JSON, CSV), читаем тут:
https://iss.moex.com/iss/reference/
Далее конкретный примере про индекс самой биржи (IMOEX). Для других инструментов — читайте описание (выше) и адаптируйте.
Смотрим, какие есть торговые системы (нужная — stock):
https://iss.moex.com/iss/engines.xml

В нужной системе смотрим, какие есть рынки (нужный — index):
https://iss.moex.com/iss/engines/stock/markets.xml

Смотрим режимы торгов (SNDX):
https://iss.moex.com/iss/engines/stock/markets/index/boards.xml

Заметили, как то, что в квадратных скобках ([engine], например) мы меняем на найденное в справочниках?

Идём дальше. Какие есть инструменты? (IMOEX — первый)
https://iss.moex.com/iss/engines/stock/markets/index/boards/SNDX/securities.xml

Данные по указанному инструменту на выбранном режиме торгов (это мы просто из любопытства смотрим):
https://iss.moex.com/iss/engines/stock/markets/index/boards/SNDX/securities/IMOEX

Все сделки (за сегодня):
https://iss.moex.com/iss/engines/stock/markets/index/boards/SNDX/securities/IMOEX/trades

Ок. Теперь к историческим данным (в ссылках добавляется history).
Какие даты доступны?
https://iss.moex.com/iss/history/engines/stock/markets/index/boards/SNDX/securities/IMOEX/dates

Попробуем достать за прошлую неделю (с 21.06.2021 по 27.06.2021):

А теперь ничего лишнего, оставим только нужные колонки (дата и последнее значение, вам, может, что-то другое будет нужно, не забываем, что это пример, а не руководство на все случаи жизни):

Ещё документация, где можно про iss.meta=off, history.columns=... почитать:
https://fs.moex.com/files/6523
Ну, и разбираем эти данные Google Sheets:
=IMPORTXML("https://iss.moex.com/iss/history/engines/stock/markets/index/boards/SNDX/securities/IMOEX.xml?from=2021-06-21&till=2021-06-27&iss.meta=off&iss.only=history&history.columns=TRADEDATE,CLOSE"; "//row/@*")

Чтобы разделить на колонки и при этом не делать два запроса, достаточно завернуть результат импорта во WRAPROWS(...; 2):
=WRAPROWS(IMPORTXML("https://iss.moex.com/iss/history/engines/stock/markets/index/boards/SNDX/securities/IMOEX.xml?from=2021-06-21&till=2021-06-27&iss.meta=off&iss.only=history&history.columns=TRADEDATE,CLOSE"; "//row/@*"); 2)

На этом всё. Спасибо за внимание.
Cсылки
Функции Google Sheets
XPath
В интернете полно информации об использовании XPath. Больше экспериментируйте, чтобы разобраться.
- Туториал от W3C - XPath Tutorial (англ.)
- Есть достаточно материалов на русском языке: поиск xpath в яндексе
- Полезно посмотреть, что есть на Stack Overflow с тегом xpath
Московская Биржа
- https://www.moex.com/
- ISS Queries — https://iss.moex.com/iss/reference/
- Руководство разработчика ISS v.1.4 — https://fs.moex.com/files/6523
Статья Михаила Смирнова, написанная для канала t.me/google_sheets
Чат канала: t.me/google_spreadsheets_chat
Другие статьи Миши, написанные для нашего канала: t.me/google_sheets/1203