32 lines
984 B
JavaScript
32 lines
984 B
JavaScript
const yahooFinance = require('yahoo-finance2').default;
|
|
|
|
async function getCurrentPrice(ticker) {
|
|
const quote = await yahooFinance.quote(ticker);
|
|
return quote.regularMarketPrice;
|
|
}
|
|
|
|
async function getHistoricalPrices(ticker, range) {
|
|
const now = new Date();
|
|
let days;
|
|
switch (range) {
|
|
case 'daily': days = 1; break;
|
|
case 'weekly': days = 7; break;
|
|
case 'monthly': days = 30; break;
|
|
case '3m': days = 90; break;
|
|
case '6m': days = 180; break;
|
|
case '1y': days = 365; break;
|
|
case '3y': days = 365 * 3; break;
|
|
case '5y': days = 365 * 5; break;
|
|
default: days = 30;
|
|
}
|
|
const from = new Date(now.getTime() - days * 24 * 60 * 60 * 1000);
|
|
const options = { period1: from, period2: now, interval: '1d' };
|
|
const result = await yahooFinance.historical(ticker, options);
|
|
// Return array of { date, price }
|
|
return result.map(item => ({ date: item.date, price: item.close }));
|
|
}
|
|
|
|
module.exports = {
|
|
getCurrentPrice,
|
|
getHistoricalPrices,
|
|
}; |