Пишем генератор рандомных акций Мосбиржи на JavaScript

от автора

Идея появилась, после того как случайно увидел подобный генератор для американской биржи NASDAQ, где автор bash скриптом скачивает с FTP сервера сводный список американских бумаг и трансформирует его в JSON, состоящий из одних тикеров, а затем при помощи фреймворка bootstrap и чистого JavaScript выводит на экран рандомный биржевой тикер, одновременно давая ссылку на популярный ресурс Yahoo! Finance.

«Магия» платформы CodePen для Московской биржи

Код был адаптирован для российских реалий и помимо получения списка бумаг с Мосбиржи был сделан расчет доходности за последние n лет.

Дополнительный сервер не потребовался, потому что API Мосбиржи может делать выдачу сразу в формате JSON.

Что нужно для работы генератора случайных акций?

  1. Брать информацию с биржи о существующих «идентификаторах режима торгов» (boardid) Мосбиржи.
    //информация о торгуемых акциях на Московской бирже url = 'https://iss.moex.com/iss/engines/stock/markets/shares/boards/'
  2. Брать полный список бумаг для некоторых boardid на Мосбирже.
    boardid = 'TQBR' //идентификатор режима торгов url = 'https://iss.moex.com/iss/engines/stock/markets/shares/boards/'+ boardid +'/securities.json?iss.meta=off&iss.only=securities&securities.columns=SECID,SECNAME'
  3. Сверяться со сводной статистикой бумаг на Московской бирже.
  4. Узнавать текущую цену для конкретной ценной бумаги.
    boardid = 'TQBR' //идентификатор режима торгов url = 'http://iss.moex.com/iss/engines/stock/markets/shares/boards/'+ boardid +'/securities.json?iss.meta=off&iss.only=securities&securities.columns=SECID,PREVADMITTEDQUOTE'
  5. Получать цену n лет назад на конкретную дату. Для этого в API Мосбиржи передаём boardid, SECID и дату, например:
    — boardid = TQBR
    — SECID = SBER
    — date = 2015-01-10
    .
    boardid = 'TQBR' // идентификатор режима торгов SECID = 'SBER' // тикер date = '2015-01-10' // дата url = 'http://iss.moex.com/iss/history/engines/stock/markets/shares/boards/'+ boardid +'/securities/'+ SECID +'.json?iss.meta=off&iss.only=history&history.columns=SECID,TRADEDATE,CLOSE&limit=1&from=' + date
  6. Сравнивать вчерашнюю цену актива и цену 5 лет назад, чтобы узнать доходность.
    curStock = 'AFKS' dateNow = '2020-03-06' datePre = '2015-03-06' fetch(getCost(curStock, datePre)).then(result => {     return (result.json()) }).then(res => {     let costPre = res.history.data[0][2];     return (costPre) }).then(costPre => {     fetch(getCost(curStock, dateNow)).then(result => {         return (result.json())     }).then(res => {         let costNow = res.history.data[0][2];         console.log(costPre);         console.log(costNow);         console.log(parseInt((costNow * 100) / costPre, 10) - 100)     }) })  function getCost(id, date) {     let url = `http://iss.moex.com/iss/history/engines/stock/markets/shares/boards/TQBR/securities/${id}.json?iss.meta=off&iss.only=history&history.columns=SECID,TRADEDATE,CLOSE&limit=1&from=${date}`     return url; }

К коду не предъявлялось больших требований, важно было то, что он работает и выполняет свою задачу.


Гифка с демонстрацией работы генератора рандомных акций Мосбиржи на JavaScript

Почему-то API Мосбиржи выдает исторические данные только начиная с июня 2014 года, то есть не удается получить более ранние данные через запрос.

Полный код на GitHub и CodePen.

Итог

Генератор случайных акций с Московской биржи работает и выдает не только случайные бумаги, но и считает доходность за настраиваемый интервал времени.

Автор: Михаил Шардин.
Код: Александр Палачёв.

3 апреля 2020 г.

ссылка на оригинал статьи https://habr.com/ru/post/495324/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *