Файлы к уроку: Файлы доступны только спонсорам канала. Оформите спонсорскую подписку всего за 49 — 149 рублей, если хотите получить максимум от обучения. Стать спонсором канала: https://www.youtube.com/channel/UCwAru3vDmH-IdYtwK7JWN4w/join
В этом уроке мы научимся получать прямо в Excel котировки разных ценных бумаг с сайта Московской биржи.
Московская биржа предоставляет возможность скачивать котировки и другую информацию по ценным бумагам при помощи специальных ссылок.
Если мы введем такую ссылку в Power Query, создав запрос из интернета, то получим интересующие нас котировки прямо в Excel.
Вот ссылка на сайте Московской биржи https://iss.moex.com/iss/reference/ На этой странице вы можете увидеть какую именно информацию вы можете получить с сайта Московской биржи. Котировками дело не ограничивается.
Все ссылки конструируются примерно по одному шаблону. В этом примере мы разберем получение котировок при помощи Power Query, но если вам нужна какая-то другая информация, то вы по аналогии сможете создать похожую ссылку.
Наша ссылка будет выглядеть так — https://iss.moex.com/iss/history/engines/stock/markets/shares/securities/SBER/securities.xml
В том месте, где написано SBER нужно вставить тикер интересующей вас ценной бумаги. Далее, развернув таблицу, вы получите таблицу с котировками, но только 100 строк. Это максимальное количество, которое позволено выгружать. Нам нужно что-то придумать, чтобы выгружать больше строк.
Что делать, чтобы получить много строк? Нужно использовать параметр start. Мы создадим столбец с числами с инкрементом 100 и в каждой строке будем запрашивать информация по ссылке.
Код запроса будет выглядеть так:
let
Источник =
List.Numbers(1, 40, 100),
Таблица =
Table.FromList(Источник, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
Столбец_Пользовательская =
Table.AddColumn(
Таблица,
"Пользовательская",
each Xml.Tables(
Web.Contents(
"https://iss.moex.com/iss/history/engines/stock/markets/shares/securities/SBER/securities.xml?start="&Text.From([Column1])
)
){0}[Table]{0}[rows]{0}[row]
),
Удалить_Column1 =
Table.SelectColumns(Столбец_Пользовательская,{"Пользовательская"}),
Развернуть_Пользовательская =
Table.ExpandTableColumn(
Удалить_Column1,
"Пользовательская",
{
"Attribute:BOARDID",
"Attribute:TRADEDATE",
"Attribute:SHORTNAME",
"Attribute:SECID",
"Attribute:NUMTRADES",
"Attribute:VALUE",
"Attribute:OPEN",
"Attribute:LOW",
"Attribute:HIGH",
"Attribute:LEGALCLOSEPRICE",
"Attribute:WAPRICE",
"Attribute:CLOSE",
"Attribute:VOLUME",
"Attribute:MARKETPRICE2",
"Attribute:MARKETPRICE3",
"Attribute:ADMITTEDQUOTE",
"Attribute:MP2VALTRD",
"Attribute:MARKETPRICE3TRADESVALUE",
"Attribute:ADMITTEDVALUE",
"Attribute:WAVAL"
}
),
Переименовать_Все =
Table.TransformColumnNames(Развернуть_Пользовательская, each Text.AfterDelimiter(_, ":"))
in
Переименовать_Все