DRBUZZ
DRBUZZ личный блог
09 января 2019, 18:17

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

Раз тут можно про скрипты и это сам Тимофей Мартынов всем подписчикам канала 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 Московской биржи, как ими распоряжаться и какие поля данных читать можете решить сами.

Дерзайте!

14 Комментариев
  • Тимофей Мартынов
    09 января 2019, 18:20
    а как функцию moexTickerLast в гугл докс вставить?
      • googlioner
        10 января 2019, 09:38
        DRBUZZ, Круто, спасибо!

        Так это можно легко и быстро сделать интерактивный портфель
      • ANTI_Finsov
        10 января 2019, 11:46
        DRBUZZ, я правильно понимаю, что данные всё таки он с 15 минутной задержкой берёт?
  • Игорь Долгов
    09 января 2019, 19:49
    в 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")
    
  • Dmitryy
    10 января 2019, 12:04

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

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

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

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

      • Dmitryy
        10 января 2019, 14:15
        DRBUZZ, вы правы, SNGS и не преф вообще не видит. Но думаю должен быть костыль, надо гуглить.

  • Емельянов Иван
    22 февраля 2020, 17:35
    DRBUZZ, не подскажите как данный скрипт использовать в Excel? Буду очень признателен!
  • Михаил Шардин
    23 февраля 2020, 07:32

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

  • Федоров Никита
    11 мая 2021, 13:12
    Народ что то не могу разобраться. Как получить через скрипт режим торгов. Как получить котировку я понял.
    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 это тикер акции. Так вот вопрос как получить в эту функцию режим торгов? Хотелось бы указывать только тикер инструмента.
  • Федоров Никита
    11 мая 2021, 15:46
    Все разобрался. Спасибо за скрипт.

    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
    
     
     
     }
    

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн