Инструкция, как загрузить стоимость акций в Excel через API ММВБ

8

Этот текст написан в Сообществе, в нем сохранены авторский стиль и орфография

Для учёта собственных сделок физиками, Excel наиболее подходящий и доступный вариант. Но как туда загружать данные о котировках? Интернет отвечает: Через API ММВБ.

Просмотрел несколько статей на эту тему. Но готового и простого решения так и не увидел. В основном профессионалы предлагают программировать или использовать опции доступные только в самых последних версиях MS Office. В общем, не для простых юзеров.

Путём проб и ошибок мне всё-таки удалось настроить автоматические выгрузки котировок Мосбиржи в файл Excel из пакета MS Office для дома и бизнеса 2010. Суть метода в том чтобы использовать встроенные в Excel примеры веб-запросов, но заменить адреса к которым они обращаются. В общем, прилагаю пошаговую инструкцию. Надеюсь кому-то будет полезно.

  1. Открываем Excel. Вкладка Данные — Подключения — Добавить. Можно использовать любое подключение из встроенных в Excel по умолчанию. Далее — Открыть.
  2. Встаём на новое подключение. Свойства — ИЗМЕНИТЬ ЗАПРОС. Здесь нужно заменить их ссылку в адресной строке веб-запроса на свою. Варианты ссылок на API мосбиржи смотри в конце. В свойствах можно сразу задать нормальное имя подключения и поставить галочки автозагрузки.
  3. Пуск. Проверяем что по вашей ссылке биржа выдаёт нужные данные. Если это то, что вы хотели, то жмём Импорт. Если нет — то настраиваем поля (см. в конце). Предупреждение про внешний файл игнорируем. Таким образом, нами создано новое подключение к онлайн данным.
  4. Теперь выгружаем данные из браузера на лист Excel как нормальную таблицу. Существующие подключения — Выбрать — Открыть.
  5. Указываем куда будут вставляться данные таблицы (где будет расположена верхняя левая ячейка будущей таблицы). Жмём ОК. Рекомендую использовать для каждого подключения отдельный лист. Но допускается получать и по несколько таблиц на одном листе. Зависит от того как вы потом собираетесь обрабатывать эти данные.
  6. После окончания загрузки таблицы данных, с ней можно работать с помощью функций массива ВПР и аналогичных. Тут уже всё стандартно. Чтобы обновлять данные, пользуемся соответствующей кнопкой. Цифры выгружаются с десятичной точкой. Возможно потребуется перенастроить Excel чтобы это распознавалось как число и сбросить форматирование ячеек для удобочитаемости.

Варианты ссылок для запросов к API ММВБ. Здесь приведены работающие образцы ссылок. Если вставить адрес в браузер, то увидите данные. Для выбора полей меняем набор параметров в хвосте ссылки после collunns=, перечисляя нужные столбцы через запятую.

  1. ОФЗ, Цена закрытия, Купон, Период купона: https://iss.moex.com/iss/engines/stock/markets/bonds/boards/TQOB/securities.xml?iss.meta=off&iss.only=securities&securities.columns=SECNAME,PREVPRICE,COUPONVALUE,COUPONPERIOD
  2. ОФЗ все доступные поля: https://iss.moex.com/iss/engines/stock/markets/shares/boards/tqbr/securities.xml?iss.meta=off&iss.only=securities&securities
  3. Котировки Российских акций Тикер —Цена закрытия: https://iss.moex.com/iss/engines/stock/markets/shares/boards/tqbr/securities.xml?iss.meta=off&iss.only=securities&securities.columns=SECID,SECNAME,PREVPRICE
  4. Акции — все доступные поля: https://iss.moex.com/iss/engines/stock/markets/bonds/boards/TQOB/securities.xml?iss.meta=off&iss.only=securities&securities
  • Alexander DАвтор, исправьте ссылки. У вас "ОФЗ все доступные поля" ведут на shares с бордой tqbr, хотя Гособлигации это TQOB. А на "Акции — все доступные поля" наоборот ссылка ведёт на bonds с бордой TQOB (вместо TQBR). UPD: и неплохо бы ещё поправить текст ) Например, вместо "collunns" -> "columns".4
  • Alexander DИ ещё. Стоит добавить (для читателей, которые могут не знать таких нюансов), что поле PREVPRICE - это цена последней сделки предыдущего дня. Однако не в рублях, а в процентах к номиналу. Поэтому для приведения в рубли нужно написать свою формулу, которая будет учитывать LOTVALUE (номинальную стоимость лота в валюте номинала (валюта номинала это поле FACEUNIT; в случае ОФЗ это всегда SUR)).4
  • A.P.Alexander, Это моя первая "проба пера". Конечно опечатки могут быть. Не нашёл как править уже опубликованный текст. Поэтому, если вы подготовите правильные с вашей точки зрения ссылки, то положите их отдельным комментом. Самое главное - у вас этот метод работает?0
  • Alexander DA.P., > Самое главное - у вас этот метод работает? Да, работает. Я через него затягиваю котировки по облигациям и дальше обрабатываю через google spreadsheet. Если точнее, то через Apps Script я затаскиваю данные на отдельный лист - сырые данные. Далее через VLOOKUP вытаскиваю данные на "сводный" лист. Там дополнительно рассчитываю ряд метрик, в том числе доходность с учётом срока владения бумаги и её дюрацией (duration - оставшийся срок жизни бумаги (до погашения)). Я руководствуюсь этим при покупке облигаций. Грубо говоря, нажимаю кнопку "обновить", заполняю планируемый срок владения бумагой и ещё несколько полей. Табличка рассчитывается автоматически. Далее смотрю на доходность и выбираю одну-две бумаги (в зависимости от инвестируемой суммы).2
  • A.P.Ну значит хоть кому то полезно ;-)1
  • Alexander DA.P., Уверен, ваша статья ещё пригоди́тся другим участникам ;) я сделал свою google spreadsheet таблицу в 2020 или 2021 году ;) Дальше только расширял функционал и делал тюнинг с правкой ошибок. p.s. У меня сложилось ощущение, что вы не совсем корректно поняли мой первый комментарий со ссылками. Немного переформулирую: У вас вторая ссылка ведёт на XML по акциями (хотя заголовок второй ссылки - ОФЗ). А четвёртая ссылка ведёт на XML по ОФЗ (хотя заголовок четвёртой - акции). Вы откройте сами, убедитесь.1
  • A.P.Я это увидел. Но не могу исправить. По крайней мере не нашёл как тут можно править уже опубликованный текст.2
  • АкаСпасибо, очень интересно и полезно!0