Блог им. ArtemKuznecov_45f

Получение котировок акций в Excel

До недавнего времени получал котировки в таблицы Google с помощью формулы
=IMPORTxml(«iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.xml?iss.meta=off&iss.only=securities&securities.columns=SECID,PREVADMITTEDQUOTE», concatenate("//row[@SECID='",A2,"']/@PREVADMITTEDQUOTE"))

Сейчас она перестала работать.

Кто-нибудь может подсказать, как исправить формулу, чтобы она работала сейчас?
★14
60 комментариев
Какое отношение Excel имеет к таблице Google?
Где все-таки расположена неработающая формула? В каком табличном редакторе?
Что творится в ячейке А2?

Много, в общем, вопросов.
Алексей Федоров, а в Excel такие же формулы, если не ошибаюсь.

В A2 находится название тикера.
avatar
они в iss какую то трансформацию провели, что на днях все перестало работать. Надо ссылки перестраивать. Еще не разбирался
avatar
Андрей К,  в (бондовом, по крайней мере) споте все по-старому (в части структуры url-ов), и все старые баги с расчетными параметрами, увы, на своих местах
avatar
flextrader, у нас все послетало нафиг из специфичной инфы. Но свечи работают стабильно ) решил уже на выхах позаниматься.
avatar
iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.xml?iss.dp=comma&iss.meta=off&iss.only=marketdata&marketdata.columns=SECID,LAST
avatar
Доктор Ливси, не работает или что-то не туда пишу
avatar
Доктор Ливси, Замените в своей формуле URL на мой и поменяйте парсинг в формуле concatenate("//row[@SECID='",A2,"']/@PREVADMITTEDQUOTE" на concatenate("//row[@SECID='",A2,"']/@LAST" И имейте ввиду, что мосбиржа выдает котировки с задержкой примерно 15 мин. для запросов без платной подписки.
avatar
Доктор Ливси, так и делал. Только Loading пишет и всё.
avatar
Доктор Ливси, а можете файл на гугл диск выложить с примером?
avatar
Доктор Ливси, =importxml("https://iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.xml?iss.dp=comma&iss.meta=off&iss.only=marketdata&marketdata.columns=SECID,LAST";"//document//data//rows//row[@SECID='AFKS']/@LAST")
avatar
Доктор Ливси, друзья, выложите файл с примером плс а ?  уже неск человек просят.
avatar
Доктор Ливси, перепробовал все формулы, везде пишет ошибка синтаксическая. Только в вашей формуле выводит значение. Но как только меняю на название тикера на ячейку, снова пишет ошибку(Нет данных для импорта). Где ошибка в формуле? Пробовал вписывать ячейку и с запятыми и с кавычками...
=importxml(«iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.xml?iss.dp=comma&iss.meta=off&iss.only=marketdata&marketdata.columns=SECID,LAST»;"//document//data//rows//row[@SECID='C4']/@LAST")
avatar
gorushek, добрый день.

=FILTERXML(WEBSERVICE(«iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.xml?iss.dp=comma&iss.meta=off&iss.only=marketdata&marketdata.columns=SECID,LAST»),"//document//data//rows//row[@SECID='"&C4&"']/@LAST")
avatar
Доктор Ливси, к сожалению, теперь синтаксическая ошибка… А в настройках гугл таблиц ничего не надо настроить?
avatar
gorushek, 

Это была формула для MS Excel.
Для Гугла так:

=IMPORTXML(«iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.xml?iss.dp=comma&iss.meta=off&iss.only=marketdata&marketdata.columns=SECID,LAST»;"//document//data//rows//row[@SECID='"&C4&"']/@LAST")

avatar

Доктор Ливси, снова синтаксическая ошибка.

Изменил кавычки два штриха, теперь это — Ошибка Ссылка iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.xml?iss.dp=comma&iss.meta=off&iss.only=marketdata&marketdata.columns=SECID,LAST недействительна

Как будто проблема настройках гугла...

avatar
Доктор Ливси, Здесь для проверки указан тикер AFKS, работает. Поменяйте у себя на подстановку тикера из требуемой ячейки.
avatar
Доктор Ливси, хмм… Работает только в новой таблице.
avatar
Доктор Ливси, Спасибо большое, очень помогли.
avatar
hdd, а можете файл на гугл диск выложить с примером?
avatar
тупо, конечно, но вставлю свои пять копеек. у меня excel после обновы перестал адрес показывать как «A2». Вместо этого теперь красуется «R2C1», может дело в названии?
avatar
Akreg, я читал, что надо PREVADMITTEDQUOTE заменить на PREVLEGALCLOSEPRICE. Но у меня не срабатывает.
avatar
Akreg, стиль ссылок в параметрах поменяйте. Галку снять надо
avatar
Заметил, что у вас в ссылке https, а у меня http. Я менял в свое время, помогало, попробуйте
avatar
=IMPORTxml(«iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.xml?iss.meta=off&iss.only=marketdata&marketdata.columns=SECID,LAST», СЦЕПИТЬ("//row[@SECID='",B15,"']/@LAST"))

у меня все работает!
у меня тоже через раз грузятся данные. 
Если кому нужно, могу выложить вечером пример для LibreOffice Calc — у меня все работает — получение котировок с Мосбиржи по API бесплатному.
avatar
Alexide, скажите, а можно как-то автоматом выгружать данные по открытым позициям юров/физов в ексель, те, которые ещё каждые 5 минут обновляются? Что надо вообще прописать?
avatar
Xomyak147, это вроде платный сервис Мосбиржи. Бесплатно они только вчерашние данные показывают. Я не умею извлекать такие данные.
avatar
Alexide, не, это бесплатные данные, просто проходите регистрацию и они доступны будут
avatar
Alexide, Конечно выкладывайте! У меня Либре Офис на линуксе 
avatar
можно попросить код для получения котировки золота? 
=IMPORTXML(«iss.moex.com/iss/engines/currency/markets/selt/securities/GLDRUB_TOM.xml», "/document/data[@id="«marketdata»"]/rows/row[@BOARDID=«CETS»]/@LAST")
Так пробовал не получается
avatar
Дмитрий Sh, =ПОДСТАВИТЬ(@ ФИЛЬТР.XML(ВЕБСЛУЖБА(«iss.moex.com/iss/engines/currency/markets/selt/securities/GLDRUB_TOM.xml?iss.dp=comma&iss.meta=off&iss.only=marketdata&marketdata.columns=LAST»);"//document//data//rows//row/@LAST");".";",")
Алексей Заказников, Подскажи, пожалуйста, код для получения курса евро и доллара.
в приведенном выше коде пробовал менять GLDRUB_TOM на USDRUB_TOM, не получается
avatar
=ПОДСТАВИТЬ( ФИЛЬТР.XML(ВЕБСЛУЖБА(«iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.xml?iss.dp=comma&iss.meta=off&iss.only=marketdata&marketdata.columns=SECID,LAST»);"//document//data//rows//row[@SECID='SBER']/@LAST");".";",")

Вот этот код для ячейки LibreOffice Calc возвращает котировку для Сбербанка например.

! Только двойные кавычки елочкой (вокруг URL внутри( замените на обычные двойные кавычки, иначе работать не будет

avatar
Alexide, =ПОДСТАВИТЬ(ФИЛЬТР.XML(ВЕБСЛУЖБА(«iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.xml?iss.dp=comma&iss.meta=off&iss.only=marketdata&marketdata.columns=SECID,LAST»);"//document//data//rows//row[@secid='C2']/@last");".";",") Не работает не подскажешь почему?
avatar

Maxim Snitko, уточню — этот скрипт только для LibreOffice (для Excel вероятно нужна поправка).
2. Скопируйте еще раз аккуратно весь текст в моей цитате выше, каждый символ.
3. Кавычки елочкой замените на обычные двойные кавычки. Без этой правки работать не будет. Это Смартлаб исказил текст.
4. Еще вероятно появится всплывающая подсказка где-то вверху LibreOffice где нужно кликнуть и разрешить загрузку скрипта с внешнего сайта (Мосбиржи).

avatar

Да что за WTF? Ежедневно вношу какие-то изменения в ссылки в Google Sheets. Начинает работать, на след день открываешь рабочий файл, — опять ошибки. Че происходит-то
 

 

avatar
Гугл таблицы: ранее работало =importxml(«iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.xml?iss.dp=comma&iss.meta=off&iss.only=marketdata&marketdata.columns=SECID,LAST»,"//document//data//rows//row[@SECID='",C5,"']/@LAST")
где С5 это Тикер.
Коллеги, перепробовал, что выше написали — не получается!
Выложите пожалуйста рабочую гугл таблицу, с рабочей формулой!
avatar
Гена Петров, подскажите от чего зависит как выводится в ячейке значение? По Вашему скрипту отображается или через точку, или через запятую. Рандомно для разных эмитентов. Но дальнейшее вычисление суммы в первом случае не высчитывается — ошибку показывает, во втором — нормальный расчет.

Максим Малахов, нужно ли что еще настроить в гугл таблице для получения котировок? 

Вставил в ячейку, пишет Ошибка синтаксическая

avatar

Для таблиц Google:
=ImportXML(CONCATENATE("https://www.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities/",C5,".xml?iss.meta=off&iss.only=marketdata&securities.columns=LAST"),"/document/data/rows/row/@LAST")

где С5 — это тикер.

Для Excel:
=ФИЛЬТР.XML(ВЕБСЛУЖБА(СЦЕПИТЬ("https://www.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities/";C5;".xml?iss.meta=off&iss.only=marketdata&securities.columns=LAST"));"//document//data//rows//row/@LAST")

avatar
Дайте совет, как сделать, чтобы котировки в экселе обновлялись автоматически? Приходится нажимать F2+Enter. Параметр автоматического расчета для формул включен.
Значение в ячейке такое: =ПОДСТАВИТЬ( ФИЛЬТР.XML(ВЕБСЛУЖБА(«iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.xml?iss.dp=comma&iss.meta=off&iss.only=marketdata&marketdata.columns=SECID,LAST»);"//document//data//rows//row[@SECID='SBER']/@LAST");".";",")
Гугл-таблица:
сегодня до 10-00 мск не работало, а потом заработало:
=ImportXML(CONCATENATE(«www.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities/»,C6,".xml?iss.meta=off&iss.only=marketdata&securities.columns=LAST"),"/document/data/rows/row/@LAST")
и
=importxml(«iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.xml?iss.dp=comma&iss.meta=off&iss.only=marketdata&marketdata.columns=SECID,LAST»,"//document//data//rows//row[@SECID='YNDX']/@LAST")
avatar
А можно попросить (буду крайне благодарен), как сделать запрос из Эксель на получение котировки по натуральному газу например NGK3
avatar
Здравствуйте у меня в exel работает эта формула для получения котировок облигаций: 
=ФИЛЬТР.XML(ВЕБСЛУЖБА(СЦЕПИТЬ(«www.moex.com/iss/engines/stock/markets/bonds/boards/TQOB/securities/»;E4;".xml?iss.meta=off&iss.only=marketdata&securities.columns=LAST"));"//document//data//rows//row/@LAST")  Подскажите пожалуйста формулу для получения НКД?
avatar
ВСЕ САМ РАЗОБРАЛСЯ ПОМОЩЬ НЕ НУЖНА ВОТ ФОРМУЛА НКД    =ФИЛЬТР.XML(ВЕБСЛУЖБА(«www.moex.com/iss/engines/stock/markets/bonds/boards/TQOB/securities/»&E4&"/securities.xml?iss.meta=off&iss.only=securities&securities.columns=SECID,ACCRUEDINT");"//document//data//rows//row/@ACCRUEDINT")
avatar
Пришлите пожалуйста актуальную формулу. И нужно ли настроить сами гугл таблицы?

avatar
Все формулы пробовал на форуме. Пишет синтаксическая ошибка… Что не так?

avatar
Подскажите, получаю по облигациям в excel доходность (EFFECTIVEYIELD), НКД (ACCRUEDINT) из 20 облигаций в некоторых (не системно) вместо НКД, например 30,58 выдает 42256. Тоже самое с доходностью. Открываю по прописанной в excel ссылке XML, там все правильно, а в excel пятизначные числа. 
avatar
morsm, здравствуйте, столкнулся с такой же проблемой по облигациям доходность нормально не выводиться как я понял если после точки меньше двух знаков то выводиться какая-то чушь, получилось разобраться?
avatar
Nik, добрый день, нет, даже не знаю куда копать
avatar
morsm, нашел решение у одного доброго человека который свой файл выложил в общи доступ. Решение: 

Файл -> Параметры -> Дополнительно -> убрать галочку с «Использовать системные разделители».
Если не поможет, то поменяйте в этом параметре точку на запятую или наоборот.

avatar
Nik, Это из за того что используется запятая в системе, а надо чтоб использовалась точка как разделитель.
avatar
Nik, Спасибо большое, помогло замена на точку как разделитель. Только excel пользуюсь и по работе. Можно забыть поменять ). Пробую в гугл таблицах.
avatar

теги блога Артём Кузнецов

....все тэги



UPDONW
Новый дизайн