Ars Analysis
Ars Analysis личный блог
31 января 2024, 08:33

Как утащить с сайта Мосбиржи разные котировки к себе в гугл-таблицы

Нам понадобится сам сайт мосбиржи с данными по котировкам. Еще нам пригодится сайт xpather.com/
Погнали -
1. Надо где-то найти код бумаги, посмотрите у брокера в приложении, для примера — пусть мы хотим затащить в Google таблицу фонд недвижимости сбера, находим что код у СФНАрБиз7 будет RU000A1034U7. Если в приложении не видно, гляньте в отчетах, или на сайте мосбиржи есть страничка вашего актива, для этого фонда вот она www.moex.com/ru/issue.aspx?board=TQPI&code=RU000A1034U7

2. Находим данные в XML, не всегда это просто, если не удается нагуглить, то идем сюда iss.moex.com/iss/engines/stock/markets/
и пытаемся понять к какому рынку это относится, что не всегда очевидно. Допустим опытным путем определили что это в shares/securitues, добавляем к URL iss.moex.com/iss/engines/stock/markets/shares/securities/RU000A1034U7
Ну и чтобы получить XML добавим в конце xml:
iss.moex.com/iss/engines/stock/markets/shares/securities/RU000A1034U7.xml

3. Получили всё в формате XML, визуально нашли в каком разделе находится то что мы ищем и видим что это в rows, PREVPRICE=«87500» это то что нам надо

4. В таблицы Google это вставляется с помощью функции IMPORTXML. Вот её описание support.google.com/docs/answer/3093342?hl=en видим что у нее два аргумента, которые нам нужны — это url и xpath_query. URL мы уже нашли, нам нужно понять как по xml сделать нужный нам xpath. Идём на сайт xpather.com/ ,
вставляем слева наш xml  и сверху вбиваем xpath, нам не нужно ничего сложного городить как в их примере, нам просто нужно достать вложенные данные. Наш PREVPRICE лежит в разделе document-->data-->rows-->row, соответственно вбиваем /document/data/rows/row/@PREVPRICE и видим как нужное значение подсветилось в XML — мы всё правильно сделали, составим формулу для получения цены этого фонда =IMPORTXML(«iss.moex.com/iss/engines/stock/markets/shares/securities/RU000A1034U7.xml», "/document/data/rows/row/@PREVPRICE")

5. Можно опционально улучшить, сделать формулу универсальной — подставить в формулу код бумаги из другой ячейки (пусть в B45 лежит RU000A1034U7):
=IMPORTXML(«iss.moex.com/iss/engines/stock/markets/shares/securities/»&B45&".xml", "/document/data/rows/row/@PREVPRICE")

Если кто-то знает как находить xml данные на moex быстрее — пишите в комменты, может справочник где-то есть

Оставлю ссылку на телеграм канал t.me/i_will_retire там всякие полезности про FIRE, кто интересуется — добро пожаловать
21 Комментарий
  • Eldar Shaymardanov
    31 января 2024, 08:57
    Вот мне бы ленту сделок по определенному инструменту выгружать периодически. Возможно или это по дополнительной подписке?
  • Alexide
    31 января 2024, 10:01
    У меня весь портфель в таблице LibreOffice Calc (бесплатная альтернатива MS Office). Данные точно также подтягиваются с сайта Мосбиржи из XML файлов. Также подтягиваю курсы валют с сайта ЦБ.
  • Den
    31 января 2024, 16:00
    А чем вам формат CSV для импорта в таблицы или СУБД не нравится?
    Мосбиржа даже генерит в таком виде данные сильно быстрее.
    PS Для себя лично по облигациям данные вытягиваю так доходность рассчитывать. JSON у них тоже есть, но он криво построен, по сути они не парились от слова совсем и тот же CSV засунули по-быстрому внутрь оболочки от JSON (не рекомендую его использовать).
  • OYKC2005
    06 февраля 2025, 23:02
    А можно подтягивать котировки фьючерсов с сайта Мосбиржи? Есть формула?

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

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