UnembossedName
UnembossedName личный блог
28 мая 2019, 11:15

Получение котировок и других параметров нашего рынка в google spreadsheets

Для смартлабовца иногда важно вести какие-либо вычисления по бумагам в режиме лайв.
Да, есть DDE в Квике, но у меня например нет такой возможности на работе. А в гуглспредшитс можно заглянуть прямо с телефона. Гораздо мобильнее получается.

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

Итак, у нас есть открытые данные Мосбиржи в виде древовидной структуры, которые лежат по адресу https://iss.moex.com/iss/engines/

Если тыркнуть по ссылке, увидим список основных площадок.

Как с этим работать

Допустим, нам нужны котировки какой-нибудь ОФЗ, например 26222.
Облигации — это у нас фондовый рынок или stock 
Открываем ссылку https://iss.moex.com/iss/engines/stock/markets/ там мы увидим все субрынки фондового рынка. Нам нужны bonds
Идем по адресу https://iss.moex.com/iss/engines/stock/markets/bonds, видим список площадок с различными режимами 
ОФЗ у нас соответствуют режиму «Т+: Облигации — безадрес.» или TQOB
Чтобы посмотрет все данные об облигациях https://iss.moex.com/iss/engines/stock/markets/bonds/boards/tqob/securities.xml
Вот отсюда мы и будем дергать данные с помощью функции с помощью функции IMPORTXML, которая позволяет искать по этому xml-документу с помощью языка XPath

Вот способы получить некоторые поля
Получение котировок и других параметров нашего рынка в google spreadsheets

Надеюсь схема понятна.
Можно например вывести все цены 
=IMPORTXML(«iss.moex.com/iss/engines/stock/markets/bonds/boards/TQOB/securities.xml», "//row/@MARKETPRICE")

Результат заполнит N ячеек вниз

Получение котировок и других параметров нашего рынка в google spreadsheets


P.S. Внимание!

Мне уже 2 человека пожаловались, что «не работает». Дело в том, что из-за того, что данные с iss.moex.com импортируются с точками в качестве разделителей для вычислений я переключил региональные настройки своей таблицы на американские. Поэтому, например, разделитель между аргументами функций таблиц изменился с точки запятой на запятую.
Переключить настройки можно в меню Файл->Настройки таблицы->Общие->Региональные настройки
Ну или можно использовать в качестве разделителя аргументов функций точку с запятой (тогда правда у вас могут быть сложности с дополнительными вычислениями, так как дробные числа не будут трактоваться как числа, поэтому рекомендую первый вариант)
49 Комментариев
  • а есть способ вытягивать данные со страниц смартлаба?
    smart-lab.ru/q/NKNC/f/y/
      • UnembossedName, а расширение Scraper для браузера Chrome пригодится?
          • UnembossedName, а разве будет привязка гугл-таблицы к браузеру?
            это расширение просто облегчает выковыривание нужных данных из страницы
            или я не прав?
              • UnembossedName,
                а у вас задача просто распарсить/конвертировать данные в таблицу.

                дык если на сайте в таблице меняются какие-то циферки — то эти изменения тоже попадут гугл-таблицу
  • DanVi
    29 мая 2019, 04:06
    UnembossedName, Спасибо за информацию. У меня почему-то после .xml, (запятая) не работает, а с ; (с точкой запятой всё нормально). Не подскажите, как фильтры поставить, чтобы например импортировать ТОЛЬКО облигации с постоянным купонном? А цену закрытия, как вытащить?
      • DanVi
        30 мая 2019, 02:06
        UnembossedName, Спасибо, так и сделал, через сводную таблицу, а потом с помощью функции SORT отсортировал по дате гашения. По другому, не смог заставить сортировать по дате.
          • DanVi
            30 мая 2019, 07:28
            UnembossedName, Согласен. Еще раз спасибо за идею. Случаем не подскажите, можно ли таким же способом котировки акций с мосбиржы вытащить?
              • DanVi
                30 мая 2019, 09:00
                UnembossedName, это понятно, где взять. перефразирую вопрос. не понятно как выдернуть определенную акцию и цену закрытия. как составить запрос.
  • Turbo Pascal
    29 мая 2019, 09:03
    Чтобы не менять региональные настройки, можно подменить точку на запятую на лету.

    =REPLACE(IMPORTXML(«iss.moex.com/iss/engines/stock/markets/bonds/boards/tqob/securities.xml»;"//row[@SECID="«SU26212RMFS9»"]/@MARKETPRICE");FIND(".";IMPORTXML(«iss.moex.com/iss/engines/stock/markets/bonds/boards/tqob/securities.xml»;"//row[@SECID="«SU26212RMFS9»"]/@MARKETPRICE"));1;",")
    • DanVi
      30 мая 2019, 08:34
      Turbo Pascal, У меня, к сожалению не получилось.




      • Turbo Pascal
        30 мая 2019, 09:01
        DanVi, 

        «http://» поставьте перед обоими запросами. Тут преобпразует в ссылки, и эти символы пропадают.
  • Кактус
    30 мая 2019, 08:41
    А когда вы доходности ПИФов анализировали, тоже откуда-то xml-файлы аналогично брали? Можете ссылку привести?
  • DanVi
    31 мая 2019, 01:57
    Возможно кому нибуть пригодится:

    =IMPORTXML(«iss.moex.com/iss/engines/stock/markets/shares/boards/tqbr/securities.xml», "//row[@SECID="«SBER»"]/@SHORTNAME")
  • Andrey Alekseev
    30 июня 2019, 15:29
    Как часто обновляются котировки при таком импорте?
      • Andrey Alekseev
        01 июля 2019, 10:19
        UnembossedName, нет, я не хочу аналог котировок из терминала. Мне надо было просто узнать задержку их обновления. Спасибо за информацию!
  • telectron
    30 октября 2019, 15:55

    Спасибо, ОФЗ просто отлично парсит!

    А вот если хочется корпы, то печалька :( При попытке импорта ...bonds/boards/EQOB/securities.xml гуглотаблицы выдают Resource at url contents exceeded maximum size.

  • CrazyTrain
    06 декабря 2019, 20:45
    Спасибо за информацию! А есть где таким же образом достать наши ETF: SBMX, FXRB, VTBA и т.д.?
  • DIVIGRAM ИНВЕСТИЦИИ
    08 декабря 2019, 12:06
    Как можно получить данные по EPS похожим запросом например из ссылки:

    https://finance.yahoo.com/quote/TRNFP.ME?p=TRNFP.ME&.tsrc=fin-srch
  • Максим Филенко
    30 июля 2020, 17:20
    Доброго дня! Подскажите, может знаете, как c moex забрать историю курсов валют? Желательно в разрезе open, low, up, close?
  • Максим Филенко
    30 июля 2020, 19:01
     Странно, но формула =IMPORTHTML(«iss.moex.com/iss/history/engines/currency/markets/selt/boards/cets/securities/USD000UTSTOM.HTML?from=2020-02-15&till=2020-02-25»; «table»; 0) не видит данных. При этом в браузере все отражается нормально
  • Максим Филенко
    30 июля 2020, 19:17
     нет, все таки загрузился по ссылке: =IMPORTHTML(«iss.moex.com/iss/history/engines/currency/markets/selt/boards/cets/securities/USD000UTSTOM/marketdata.html?from=2020-07-15&till=2020-07-29», «table», 0)
    Похоже, что проблема с кэшэм была 
  • Максим Филенко
    08 августа 2020, 07:49
    Доброго дня! Случаем не в курсе, как можно загнать результаты импорта в кэш, чтобы использовать их при вычислениях на различных листах и не запускать на каждой ячейке новый импорт?

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

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