Catégorie : code

  • Télécharger les cotations sur Yahoo Finance

    Attention ! l’API Yahoo Finance n’est pas officielle et peut évoluer ou s’interrompre sans préavis.

    Ci dessous un petit code javascript pour télécharger les cours quotidiens :

    async function getQuotesHistory(ticker) {
    
      //plages de données disponibles :["1d","5d","1mo","3mo","6mo","1y","2y","5y","10y","ytd","max"]
      url = `https://query1.finance.yahoo.com/v8/finance/chart/${ticker}?range=1mo&interval=1d&includePrePost=true&events=div%7Csplit%7Cearn&corsDomain=finance.yahoo.com`;
    
      // Récupère les données à partir de l'API Yahoo finance
      try{
        response = await fetch(url);
      }catch (err){
        console.log(`fetch ko :  ${ticker}`);
      }
      try {
        data = await response.json();
        // extraction des données
        const open = data.chart.result[0].indicators.quote[0].open;
        const high = data.chart.result[0].indicators.quote[0].high;
        const low = data.chart.result[0].indicators.quote[0].low;
        const close = data.chart.result[0].indicators.quote[0].close;
        const volume = data.chart.result[0].indicators.quote[0].volume;
        const dates = data.chart.result[0].timestamp.map((ts) => new Date(ts * 1000).toLocaleDateString('en-ZA'));
    
        // Boucle pour parser les données de chaque jour et les loguer dans la console 
        for (let i = 0; i < open.length; i++) {
          console.log(`${ticker};${dates[i]};${open[i]};${high[i]};${low[i]};${close[i]};${volume[i]}`);
        }
      } catch(err){
        console.log(`erreur :  ${ticker}`);
        console.log(err.message);
      }
    }
    
    getQuotesHistory('^GSPC'); //cours de l'indice SP500
    getQuotesHistory('AAPL');  //cours de l'action Apple
    getQuotesHistory('ajouter ici votre ticker');
    

    code d’appel dans le terminal pour générer un fichier .csv :

    node yfinance.js > c:\temp\cotations.csv