Исторические данные индекса Московской Биржи (IMOEX) в Google Sheets
Michael SmirnovПравильный канал о Таблицах (Google Sheets): @google_sheets
Чат канала: @google_spreadsheets_chat
Здравствуйте, товарищи!
Небольшая инструкция на скорую руку о том, как достать исторические данные индекса московской биржи.
Про всё, что можно получить от московской биржи в виде 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
Правильный канал о Таблицах (Google Sheets): @google_sheets
Чат канала: @google_spreadsheets_chat