Ну, вот это третий последний урок, в котором вы и я сможете получить информацию на нашем фондовом рынке и выводить ее в вашу консоль.
В предыдущих уроках мы узнали, как работать с датой, выпустите его, укажите, работает ли обмен, и все остальное, и домашнее задание было немного закончить программу, чтобы она показала нам время в США относительно нашего.
На самом деле, вот ответ. Для начала установка другого пакета:
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”