Рубрики
Без рубрики

Как создать стоковый экран на узле js? EP3 последний эпизод

Ну, вот это третий последний урок, в котором вы и я сможете получить информацию на нашем фондовом рынке и выводить ее в вашу консоль. Теги с узлом, JavaScript, Showdev, начинающими.

Ну, вот это третий последний урок, в котором вы и я сможете получить информацию на нашем фондовом рынке и выводить ее в вашу консоль.

В предыдущих уроках мы узнали, как работать с датой, выпустите его, укажите, работает ли обмен, и все остальное, и домашнее задание было немного закончить программу, чтобы она показала нам время в США относительно нашего.

На самом деле, вот ответ. Для начала установка другого пакета:

npm install date-fns-timezone

И давайте добавим функцию, которую нам нужно сразу:

const { formatToTimeZone } = require('date-fns-timezone')

Теперь нам нужно понять, а в какой части вообще у нас нет, так что он лежит в часовой поясе Америка/Торонто, поэтому мы напишем:

const timeZone = 'America/Toronto'

const edtFormat = 'YYYY-MM-DD HH:mm:ss.SSS [GMT]Z (z)'
const edtDate = formatToTimeZone(new Date(), edtFormat, { timeZone })

console.log(edtDate)

Ну, как всегда, запустите свой скрипт, желательно, прежде чем комментировать старые линии, которые нам еще не нужно.

2020-08-05 05:28:02.261 GMT-04:00 (EDT)

Отлично, теперь у нас есть время с нашим временем. Давайте теперь выпустим время, на котором мы открываем обмен и время, которое относится к нашему текущему времени в Нью-Йорке.

Ну, это поработало? Если вдруг что-то не получилось, или вы не понимаете что-то твитнуть мне https://twitter.com/gaserd или напишите мне gaverd123@gmail.com.

Вы помните наш код, который мы прокомментировали, чтобы мы могли вывести код, который мы написали? Давайте вернем его обратно в жизнь, и добавьте что-то.

Но до этого мы напишем код, который получит данные о акциях Apple.

    const to = dateFns.format(today, format)
    today.setMonth(today.getMonth() - 3)
    const from = dateFns.format(today, format)
    const stock = 'AAPL' 

    alpaca
        .getAggregates(
            stock,
            'day',
            from,
            to
        )
        .then(data => {
            console.table(data.results)
        }).catch((e) => {
            console.log(e)
        })

Я надеюсь, что вы допустили ошибку, верно? Это ошибка из-за формата, которую мы используем для форматирования даты, замените его yyyy-mm-dd

Теперь запустите свою программу снова. Возможно, вы заметили, что вместо приставка. журнал Мы использовали Console.table.table. Это связано с более удобным восприятием большого количества данных, которые мы получаем.

Интересный момент, вы понимаете, почему мы делаем SetMonth ? Все для того, чтобы получить данные в течение 3 месяцев, каждый месяц имеет около 21 торговых дней, поэтому мы устанавливаем нашу дату до 3 месяцев назад.

Ну, теперь вы теперь можете связать код ввода с полученными данными и проверять, работает ли обмен?

Я напишу готовый код прямо сейчас, но я действительно хочу, чтобы вы попробовали это сами.

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
const date = dateFns.format(new Date(), format)
const timeZone = 'America/Toronto'

const etcFormat = 'YYYY-MM-DD HH:mm:ss.SSS [GMT]Z (z)'
const etcDate = formatToTimeZone(new Date(), etcFormat, { timeZone })

function inputStock() {
    rl.question('Input STOCK: ', (stock) => {
        let today = new Date()
        const to = dateFns.format(today, format)
        today.setMonth(today.getMonth() - 3)
        const from = dateFns.format(today, format)

        alpaca
            .getAggregates(
                stock,
                'day',
                from,
                to
            )
            .then(data => {
                const results = data.results.map(res => res.startEpochTime = dateFns.format(res.startEpochTime, format))
                console.table(data.results)
                rl.close()
                exit()
            }).catch((e) => {
                console.log(e)
                exit()
            })
    });
}

function main() {
    alpaca.getClock().then((clock) => {
        console.log(`###############################`)
        console.log(`The market is ${clock.is_open ? 'open.' : 'closed.'}`)
        alpaca.getCalendar({
            start: date,
            end: date
        }).then((calendars) => {
            console.log(`The market opened at ${calendars[0].open} and closed at ${calendars[0].close} on ${date}.`)
            console.log(`NEW YORK TIME - ${etcDate}`)
            console.log(`###############################`)
        }).then(() => {
            if (clock.is_open) {
                inputStock()
            } else {
                exit()
            }
        })
    })
}

main()

Ой, это кажется слишком большим количеством кода за раз. Но давайте попробуем понять.

Я завернул наш предыдущий код в функциях, чтобы сделать его более удобным, теперь у нас есть основная функция Главная и inputstock Функция, которая вызывает запрос, чтобы войти в название запаса, а затем выводит данные. Эта функция все еще должна быть разделена на несколько, но давайте еще не будем делать это.

Главная Функция – это точка входа к выполнению нашего скрипта, она проверяет, работает ли обмен сейчас, и если он работает, он показывает исторические данные, если она не работает, он рассказывает нам об этом.

Возможно, вы заметили другую вещь, это Выход () Это функция, которая выходит из скрипта и останавливается выполнение его.

const { exit } = require('process')

На самом деле, это все, это очень легкая версия акклимера, тогда вы можете погрузиться все больше и больше в финансовый мир и начать обрабатывать полученные данные, а также не стесняйтесь получать данные из ALPACA API в режиме реального времени.

Оригинал: “https://dev.to/gaserd/how-create-stock-screener-on-node-js-ep3-last-episode-j26”