July 28, 2024

API MOEX Еще раз о том, как получать данные с MOEX в Excel. Получаем данные по ОФЗ, купон, НКД, дату погашения.

https://t.me/PS_crutch

Про ОФЗ:

По котировкам акций здесь.

Опишу формулы, которые вы можете использовать в excel:

Получить наименование ОФЗ и дату экспирации:

=@ФИЛЬТР.XML(ВЕБСЛУЖБА("https: iss.moex.com/iss/engines/stock/markets/bon ds/boards/TQOB/securities.xml?

iss.meta=off&iss.only=securities&securities.columns=SECID,SECNAME,COUPONPE RCENT,MATDATE");" document data rows row[@SECID='"&B3&"']/@SECNAME")

B3 ячейка с инструментом

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

Можно получить короткое наименование:

=ПОДСТАВИТЬ(@ФИЛЬТР.XML(ВЕБСЛУЖБА("https: iss.moex.com/iss/engines/stock/ markets/bonds/boards/TQOB/securities.xml?

iss.meta=off&iss.only=securities&securities.columns=SECID,NEXTCOUPON,ACCRU EDINT,PREVPRICE,COUPONVALUE,SHORTNAME,MATDATE");" document data rows r ow[@SECID='"&A2&"']/@SHORTNAME");".";",")

A2 ячейка с инструментом

НКД:

=ПОДСТАВИТЬ(@ФИЛЬТР.XML(ВЕБСЛУЖБА("https: iss.moex.com/iss/engines/stock/ markets/bonds/boards/TQOB/securities.xml?

iss.meta=off&iss.only=securities&securities.columns=SECID,NEXTCOUPON,ACCRU EDINT,PREVPRICE,COUPONVALUE,SHORTNAME,MATDATE");" document data rows r ow[@SECID='"&A2&"']/@ACCRUEDINT");".";",")

Дата выплаты следующего купона:

=@ФИЛЬТР.XML(ВЕБСЛУЖБА("https: iss.moex.com/iss/engines/stock/markets/bon ds/boards/TQOB/securities.xml?

iss.meta=off&iss.only=securities&securities.columns=SECID,NEXTCOUPON,COUPO NVALUE");" document data rows row[@SECID='"&A2&"']/@NEXTCOUPON")

Купон:

=ПОДСТАВИТЬ(@ФИЛЬТР.XML(ВЕБСЛУЖБА("https: iss.moex.com/iss/engines/stock/ markets/bonds/boards/TQOB/securities.xml?

iss.meta=off&iss.only=securities&securities.columns=SECID,NEXTCOUPON,ACCRU EDINT,PREVPRICE,COUPONVALUE,SHORTNAME,MATDATE");" document data rows r ow[@SECID='"&A2&"']/@COUPONVALUE");".";",")

Дата погашения:

=@ФИЛЬТР.XML(ВЕБСЛУЖБА("https: iss.moex.com/iss/engines/stock/markets/bon ds/boards/TQOB/securities.xml?

iss.meta=off&iss.only=securities&securities.columns=SECID,NEXTCOUPON,COUPO NVALUE,ACCRUEDINT,MATDATE");" document data rows row[@SECID='"&A2&"']/ @MATDATE")

Цена:

=ПОДСТАВИТЬ(@ФИЛЬТР.XML(ВЕБСЛУЖБА("https: iss.moex.com/iss/engines/stock/ markets/bonds/boards/TQOB/securities.xml?

iss.meta=off&iss.only=securities&securities.columns=SECID,NEXTCOUPON,ACCRU EDINT,PREVPRICE,COUPONVALUE,SHORTNAME,MATDATE");" document data rows r ow[@SECID='"&A2&"']/@PREVPRICE");".";",")

Результирующая таблица

Цену можно запросить и так:

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

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

iss.meta=off&iss.only=securities&securities.columns=SECID,PREVADMITTEDQUOT E");" document data rows row[@SECID='"&B3&"']/@PREVADMITTEDQUOTE");"." ;",")

Но по какой то причине не всегда отображается..

Если вы сталкиваетесь с такой ситуацией, когда при подстановке такой формулы получаете кривые данные вида:

Какой то трэш с разделителями

=@ФИЛЬТР.XML(ВЕБСЛУЖБА("https: iss.moex.com/iss/engines/stock/markets/bon ds/boards/TQOB/securities.xml?

iss.meta=off&iss.only=securities&securities.columns=SECID,NEXTCOUPON,COUPO NVALUE,ACCRUEDINT");" document data rows row[@SECID='"&B2&"']/@ACCRUED

INT")

То лучше использовать либо формулу из примера выше

=ПОДСТАВИТЬ(@ФИЛЬТР.XML(ВЕБСЛУЖБА("https: iss.moex.com/iss/engines/stock/ markets/bonds/boards/TQOB/securities.xml?

iss.meta=off&iss.only=securities&securities.columns=SECID,NEXTCOUPON,ACCRU EDINT,PREVPRICE,COUPONVALUE,SHORTNAME,MATDATE");" document data rows r ow[@SECID='"&A2&"']/@ACCRUEDINT");".";",")

Либо изменить параметры разделителей excel, заменив запятую, на точку

Файл -> Параметры -> Дополнительно

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