Форум поддержки пользователей LibreOffice, Apache OpenOffice

Главная категория => Макросы => Тема начата: Mak от 26 августа 2021, 08:56

Название: Получение данных с Мосбиржи
Отправлено: Mak от 26 августа 2021, 08:56
Добрый день,
Хочу сделать скрипты для вытягивания данных с Мосбиржи.
Может быть кто-то уже делал или знает где есть?
(чтобы свой велосипед не изобретать)
Название: Re: Получение данных с Мосбиржи
Отправлено: sokol92 от 26 августа 2021, 12:36
Сначала нужно определиться, какой информационный продукт (https://www.moex.com/ru/products/personal) биржи Вы собираетесь использовать.
Название: Re: Получение данных с Мосбиржи
Отправлено: Mak от 26 августа 2021, 13:18
Интерфейс ISS
Описание - https://iss.moex.com/iss/reference/

Получение состава индекса Мосбиржи:
https://iss.moex.com/iss/statistics/engines/stock/markets/index/analytics/IMOEX.json?iss.meta=off&limitt=100

Запрос данных по нескольким бумагам, типа:
https://iss.moex.com/iss/securities/GMKN.json?iss.meta=off
https://iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.json?iss.meta=off&iss.only=securities
https://iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.json?iss.meta=off&iss.only=marketdata
https://iss.moex.com/iss/engines/stock/markets/shares/securities/GMKN/candles.json?iss.meta=off&iss.reverse=true&interval=4&from=2021-01-01
(json в запросах можно заменить на xml)

В общем описания и данные за вчера по разным бумагам.
Можно и текущие данные (они идут с задержкой), но это уже не особо актуально.
Исторические данные по кварталам или месяцам за последний год.

Цель - отслеживать состояние своего портфеля.

Можно это делать формулами в ячейках, но это неудобно, громоздко, и сайт Мосбиржи не любит, когда его сильно нагружают запросами. Поэтому хотелось бы это сделать в виде скриптов - несколько функций для вывода отдельных параметров бумаги, у функций параметр - тикер бумаги (типа "GMKN").
Название: Re: Получение данных с Мосбиржи
Отправлено: sokol92 от 26 августа 2021, 15:24
Это, вероятно, к герпетологам. На форуме есть большие любители Python.  :)
Название: Re: Получение данных с Мосбиржи
Отправлено: Mak от 26 августа 2021, 15:45
Хорошо,
а как хотя бы импортировать данные с сайта без скриптов, например такие
https://iss.moex.com/iss/statistics/engines/stock/markets/index/analytics/IMOEX.xml?iss.meta=off&limitt=100

Как-то можно вроде бы, но порылся по менюшкам и не нашел.
Название: Re: Получение данных с Мосбиржи
Отправлено: Mak от 26 августа 2021, 16:52
Похоже это слишком громоздкое решение.
Попробую формулами, только разделю загрузку с сайта и парсинг,
чтобы меньше запросов на сайт было.
Название: Re: Получение данных с Мосбиржи
Отправлено: rami от 26 августа 2021, 18:05
Цитата: sokol92 от 26 августа 2021, 15:24
Это, вероятно, к герпетологам. На форуме есть большие любители Python.  :)
С помощью Basic можно делать почти что всё, а с Python всё остальное.


Данные с "причудами" (пробелы в именах), но обработать можно, смотрите:
Название: Re: Получение данных с Мосбиржи
Отправлено: sokol92 от 26 августа 2021, 21:00
@rami, здравствуйте, спасибо за содержательный пример.
XML можно обрабатывать и "честно". :)
В условиях примера @rami:
Sub GetValuta2
  Dim xDoc, xRows, xAttribs, xAttrib, i As Long, j As Long
  xDoc=GetXDocByUri(URL)
 
  ' Разбираем XML стандартными средствами
  xRows=xDoc.getElementsByTagName("row")  ' список тегов row
  For i=0 To xRows.Length-1
    xAttribs=xRows.item(i).Attributes
    For j=0 To xAttribs.Length-1
      xAttrib=xAttribs.item(j)
      Select Case xAttrib.Name
        ' Обработка атрибутов как в функции GetValuta
        Case "tradedate"   ' получаем Дату. Значение: xAttrib.Value
        ' Обработка других атрибутов
      End Select
    Next j
  Next i
  ' Обработка XDoc завершена.
End Sub

' Returns XDocument by Uri
Function GetXDocByUri(ByVal Uri As String) As Object
  GetXDocByUri=createUnoService("com.sun.star.xml.dom.DocumentBuilder").parseURI(Uri)
End Function
Название: Re: Получение данных с Мосбиржи
Отправлено: rami от 27 августа 2021, 08:22
@sokol92, здравствуйте. Ваш вариант лучше подходит для работы с XML и для данного случая. Мой вариант более универсальный для любого текста.
Название: Re: Получение данных с Мосбиржи
Отправлено: economist от 27 августа 2021, 09:55
У Мосбиржи есть API и обертка под Python https://pypi.org/project/apimoex/

Большие данные логично обрабатывать в Pandas и возвращать в Calc, тонны кода есть в Сети.

Pandas  дружится с LibreOffice Calc по данному мануалу: https://forumooo.ru/index.php/topic,8696.0.html
Название: Re: Получение данных с Мосбиржи
Отправлено: Mak от 27 августа 2021, 10:57
Спасибо!
Почитаю, попробую разобраться.
Название: Re: Получение данных с Мосбиржи
Отправлено: Mak от 27 августа 2021, 14:59
Пока остановился просто на формулах, без скриптов.
Разделил обработку на две фазы - запрос данных с Мосбиржи и отдельно парсинг по полям.
Полей много, а запросов немного.

Если кому интересно будет, см. вложение.