July 28

API MOEX Еще раз о том, как получать данные с MOEX в Excel. Получаем данные котировок по акциям и дивидендных отсечек.

https://t.me/PS_crutch

Про акции:

Про ОФЗ тут

Без глубоких повествований приведу формулы, статей на эту тему написано великое множество.

1. Получить котировку на текущую дату:

=ФИЛЬТР.XML(ВЕБСЛУЖБА(СЦЕПИТЬ("https: .moex.com/iss/engines/stock/mark ets/shares/boards/TQBR/securities/";A9;".xml?

iss.meta=off&iss.only=marketdata&securities.columns=LAST"));" document d ata rows row/@LAST")

Где A9 ячейка с тикером

Вид получаемых данных в Excel

LAST берем отсюда:

Вид XML страницы в браузере

Или можем подставлять режим торгов

=ПОДСТАВИТЬ(@ФИЛЬТР.XML(ВЕБСЛУЖБА("https: iss.moex.com/iss/engines/stock/ markets/shares/securities/"&A2&".xml? iss.meta=off&iss.only=marketdata&marketdata.columns=SECID,BOARDID,LAST");" document data rows row[@BOARDID='"&M22&"']/@LAST");".";",")

Где A2 это тикер

M22 режим торгов (например TQBR)

Пример запроса в браузере:

https: iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securiti es/sngsp.xml?

iss.dp=comma&iss.meta=off&iss.only=marketdata&marketdata.columns=SECID,LAS T

Вид XML страницы в браузере

2. Получить наименование инструмента

ФИЛЬТР.XML ВЕБСЛУЖБА "https://iss.moex.com/iss/engines/stock/markets/sh ares/boards/TQBR/securities.xml?

iss.meta=off&iss.only=securities&securities.columns=SECID,SECNAME");"//docume nt//data//rows//row[@SECID '"&A2&"']/ SECNAME")

Получим что-то вроде:

Вид полученных данных в ячейках Excel

3. Получить данные по выплатам дивидендов

A2 тикер инструмента

Получаем даты фиксации

=@ФИЛЬТР.XML(ВЕБСЛУЖБА("http: iss.moex.com/iss/securities/"&A 2&"/dividen ds.xml? iss.meta=off");" document data rows row["&СТРОКА()&"]/@registrycloseda te")

Получаем размер дивиденда

=@ФИЛЬТР.XML( ПОДСТАВИТЬ(

ПОДСТАВИТЬ(ВЕБСЛУЖБА("http: iss.moex.com/iss/securities/"&A 2&"/dividends .xml?

iss.meta=off");".";",");"1,0";"1.0");" document data rows row["&СТРОКА ()&"]/@value")

Получится что- то вроде этого:

Даты фиксации и размер дивиденда для TATNP

4. Получить исторические данные по котировке

=ПОДСТАВИТЬ(@

ФИЛЬТР.XML(ВЕБСЛУЖБА("https: iss.moex.com/iss/history/engines/stock/marke ts/shares/boards/TQBR/securities.xm?

liss.meta=off&iss.only=history&history.columns=SECID,CLOSE&start=200&date= "&H2&",concatenate");" document data rows row[@SECID='"&A2&"']/@CLOSE" );".";",")

Нужно иметь в виду, что API MOEX выдает по 100 строк, и от периода к периоду ваш тикер может входить либо в первую, либо во вторую сотню выдаваемых тикеров, поскольку состав торгующихся компаний меняется с течением времени.

В PoSh мне удалось решить эту проблему, и я могу получить весь список на дату целиком, как это сделать в Excel я пока не думал.

Для TATNP я указал start=200

A2 это тикер.

H2 дата на которую мы получаем котировку, имеет вид ГГГГ ММ ДД. При этом надо помнить, что указанная дата должна быть торговым днем, не выходным, праздничным и пр.

CLOSE получаем котировку на закрытие.

Для браузера можно сформулировать запрос так:

https: iss.moex.com/iss/history/engines/stock/markets/shares/boards/TQBR/ securities.xm?

liss.meta=off&iss.only=history&history.columns=SECID,CLOSE&start=100&date=

2023-11-10,concatenate

Вид полученных данных в браузере

При помощи этих простых инструментов мы можем рассчитать доходности к котировкам и стоимости покупки, и изменения выплат год к году:

Пример таблицы с расчетами

Поиграться с визуализацией данных:

Вставка диаграммы средствами Excel

Пример графика доходностей

Пример графика изменений выплат дивидендов год к году

Использованы источники:

https://dzen.ru/a/XzE3Y6VBkHBOdNBG

https://habr.com/ru/articles/498268/

Получение данных API MOEX в PowerShell. #moex #api #powershell #posh #ps #excel