Как стать автором
Обновить

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

Время на прочтение3 мин
Количество просмотров6.5K
Идея появилась, после того как случайно увидел подобный генератор для американской биржи 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 г.
Теги:
Хабы:
Всего голосов 14: ↑13 и ↓1+12
Комментарии7

Публикации

Истории

Работа

Ближайшие события