Блог им. drbuzz

JS cкрипт для проверки значения котировки с API Московской биржы прямо в Браузере

    • 09 января 2019, 18:17
    • |
    • DRBUZZ
  • Еще

Раз тут можно про скрипты и это сам Тимофей Мартынов всем подписчикам канала Smart-Lab в Telegram рассылает...

Предложу еще один скрипт который можно использовать для проверки последней цены котировки с Московской биржи прямо из любого современного браузера. 

Сам скрипт:

Объявление функции

async function moexTickerLast(ticker) {
  const json = await fetch('https://iss.moex.com/iss/engines/stock/markets/shares/securities/' + ticker + '.json').then(function(res) { return res.json()});
  return json.marketdata.data.filter(function(d) { return ['TQBR', 'TQTF'].indexOf(d[1]) !== -1; })[0][12];
}

Вызов функции

moexTickerLast('GAZP').then(console.log);

Что бы использовать в браузере нужно открыть браузерную JavaScript консоль объявить и использовать функцию там (см. скриншот):

JS cкрипт для проверки значения котировки с API Московской биржы прямо в Браузере



Скрипт можно использовать не только в браузере, но и например написать расширение для браузера или функцию для Excel в Google Docs

JS cкрипт для проверки значения котировки с API Московской биржы прямо в Браузере

Эта функция работает с богатыми данными API Московской биржи, как ими распоряжаться и какие поля данных читать можете решить сами.

Дерзайте!

5.7К | ★33
14 комментариев
а как функцию moexTickerLast в гугл докс вставить?

Тимофей Мартынов, Там не так тривиально как в браузере. Путь примерно такой: Инструменты>Редактор скриптов 

Язык немного для апи excel отличается.

function moexTickerLast(ticker) {
var json = UrlFetchApp.fetch('https://iss.moex.com/iss/engines/stock/markets/shares/securities/' + ticker + '.json');
return JSON.parse(json).marketdata.data.filter(function(d) { return ['TQBR', 'TQTF'].indexOf(d[1]) !== -1; })[0][12];
}


Разница в методе UrlFetchApp.fetch 

А дальше:

habr.com/post/215843/

developers.google.com/apps-script/overview

avatar
DRBUZZ, Круто, спасибо!

Так это можно легко и быстро сделать интерактивный портфель
avatar
DRBUZZ, я правильно понимаю, что данные всё таки он с 15 минутной задержкой берёт?
avatar
ANTI_Finsov, задержка присутствует 
avatar
в google-docs: инструменты -> редактор скриптов

function getPrice(ticker) {
    var response = UrlFetchApp.fetch("https://iss.moex.com/iss/engines/stock/markets/shares/securities/"+ticker+".json" );
    var w = JSON.parse(response.getContentText());
    data =w.securities.data
    for (var i = 0; i < data.length; i++) {
      if (data[i][1] == "TQBR") {
        return data[i][3]
      }
    }
  
  return 0
}

И далее используется, как обычная формула вида
=getPrice("BANEP")
avatar

В Гугл докс можно котировки без скриптов подтягивать: 
=GOOGLEFINANCE(«AAPL»; «price»)

или для мос. биржи:
=GOOGLEFINANCE(«MCX:LKOH»; «price»)

(только кавычки другие, СЛ заменил их)

А iss.moex.com дает котировки в реальном времени или там задержка 15 сек?

avatar

Dmitryy, GOOGLEFINANCE не умеет с нашими префами работать. Проверь SNGSP 

Апи биржи с задержкой, только для особых клиентов без задержки

avatar
DRBUZZ, вы правы, SNGS и не преф вообще не видит. Но думаю должен быть костыль, надо гуглить.

avatar
DRBUZZ, не подскажите как данный скрипт использовать в Excel? Буду очень признателен!
avatar

А вот вариант как Free API Мосбиржи использовать в гугл таблицах: https://habr.com/post/486716/

avatar
Взято отсюда moex api
avatar
Народ что то не могу разобраться. Как получить через скрипт режим торгов. Как получить котировку я понял.
function getA(tt,ticker) {
  var bn = "bonds";
  var sr ="shares";
  if (tt=="TQOB"){ var pr = bn}
  else if(tt=="EQOB"){ var pr = bn}
  else if(tt=="TQOD"){ var pr = bn}
  else if(tt=="TQCB"){ var pr = bn}
  else if(tt=="EQQI"){ var pr = bn}
  else if(tt=="TQIR"){ var pr = bn}
  else if(tt=="TQTF"){ var pr = sr}
  else if(tt=="TQBR"){ var pr = sr}
  else if(tt=="SNDX"){ var pr = sr}
  else if(tt=="TQIF"){ var pr = sr}
  else if(tt=="TQTD"){ var pr = sr};
    var response = UrlFetchApp.fetch("https://iss.moex.com/iss/engines/stock/markets/"+pr+"/securities/"+ticker+".json" );
    var w = JSON.parse(response.getContentText());
    data =w.securities.data
    for (var i = 0; i < data.length; i++) {
      if (data[i][1] == tt) {
        return data[i][3]
      }
    }
  
  return 0

 
 
 }

Где tt это режим торгов, а ticker это тикер акции. Так вот вопрос как получить в эту функцию режим торгов? Хотелось бы указывать только тикер инструмента.
Все разобрался. Спасибо за скрипт.

function getAA(ticker) {
    

    var response2 = UrlFetchApp.fetch("https://iss.moex.com/iss/securities/HYDR.json" );
    var tt = JSON.parse(response2.getContentText());
    var data2 =tt.boards.data
    for (var t = 0; t < data2.length; t++) {
      if (data2[t][0] == "HYDR") {
         var data2 = data2[t][1]
      }
    
    }
  var bn = "bonds";
  var sr ="shares";
  if (data2=="TQOB"){ var pr = bn}
  else if(data2=="EQOB"){ var pr = bn}
  else if(data2=="TQOD"){ var pr = bn}
  else if(data2=="TQCB"){ var pr = bn}
  else if(data2=="EQQI"){ var pr = bn}
  else if(data2=="TQIR"){ var pr = bn}
  else if(data2=="TQTF"){ var pr = sr}
  else if(data2=="TQBR"){ var pr = sr}
  else if(data2=="SNDX"){ var pr = sr}
  else if(data2=="TQIF"){ var pr = sr}
  else if(data2=="TQTD"){ var pr = sr};
    var response = UrlFetchApp.fetch("https://iss.moex.com/iss/engines/stock/markets/"+pr+"/securities/"+ticker+".json" );
    var w = JSON.parse(response.getContentText());
    data =w.securities.data
    for (var i = 0; i < data.length; i++) {
      if (data[i][1] == data2) {
        return data[i][3]
      }
    }
  
  return 0

 
 
 }

Читайте на SMART-LAB:
Фото
EUR/USD: котировки прощупывают дно в попытке возобновить рост
Европейская валюта закрыла пятницу выше уровня поддержки 1.1807, сформировав при этом свечную модель «бычье поглощение». Сигнал для покупателей...
Фото
Как изменились средние доходности облигаций (по рейтингам) за неделю?
Средние доходности облигаций в зависимости от рейтинга (бледные столбцы — доходности без сглаживания). И как они изменились за неделю....
Фото
Астра купила долю в компании у своего контролирующего акционера😢
В среду 4 февраля на сайте раскрытия вышли сущфакты от Астры о совершении сделки с заинтересованностью. Ссылки на сущфакты: ➡️ сделка с...

теги блога DRBUZZ

....все тэги



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