Début rapide: connectez-vous à FXMacroData avec Node.js banner image

By Language

Quick Start Guides

Début rapide: connectez-vous à FXMacroData avec Node.js

Mettez à jour et exécutez FXMacroData en quelques minutes. Couvre l'API de récupération intégrée, les modèles asynchrones/attente, les demandes multi-indicateurs et un script prêt à l'emploi pour extraire les données de la banque centrale.

Également disponible en English

L'API REST FXMacroData est conçue pour être consommée à partir de n'importe quel langage pouvant faire une requête HTTP GET. Node.js est livré avec un fetch Cette application est disponible depuis la version 18 et plus, donc il n'y a rien d'extrême à installer pour une utilisation de base juste votre clé API et quelques lignes de JavaScript.

Ce que vous allez construire

Un script Node.js autonome qui s'authentifie contre l'API REST FXMacroData, récupère en parallèle les données de taux de politique et d'inflation pour plusieurs devises du G10 et imprime une table de résumé propre sur la console prête à être utilisée dans n'importe quel backend, fonction sans serveur ou pipeline d'automatisation.

Pré-requis

  • Node.js 18 ou ultérieur v18 a introduit le système mondial fetch API; v20+ est recommandé pour la production
  • Npm (compris avec Node.js) seulement nécessaire si vous choisissez d'ajouter des paquets optionnels
  • Une clé d'API FXMacroData inscrivez-vous à / souscrivez et copiez votre clé du tableau de bord

Vérifiez votre version Node.js:

node --version   # should print v18.x.x or later

Étape 1 Stockez votre clé API en toute sécurité

Ne jamais coder une clé API dans des fichiers sources qui pourraient être engagés pour le contrôle de version.

Sur Linux / macOS, ajoutez à votre profil de shell (~/.bashrc ou ... ~/.zshrc):

export FXMD_API_KEY="your_actual_api_key_here"

Dans Windows (PowerShell):

$env:FXMD_API_KEY = "your_actual_api_key_here"

Pour les projets Node.js, un .env le dossier avec le - Je ne sais pas. Le système de gestion des données est une alternative populaire voir l'étape 6 pour cette configuration.

Étape 2 Comprendre la forme de l'API

Chaque indicateur FXMacroData suit le même schéma, ce qui facilite la construction d'un assistant de récupération générique.

GET https://fxmacrodata.com/api/v1/announcements/{currency}/{indicator}?api_key=YOUR_API_KEY

La réponse est JSON avec un niveau supérieur data Chaque élément porte un dateUn chiffre . val, et (pour la plupart des indicateurs) un announcement_datetime qui indique la seconde où la valeur a été libérée:

{
  "data": [
    { "date": "2025-03-19", "val": 4.25, "announcement_datetime": "2025-03-19T18:00:00Z" },
    { "date": "2025-01-29", "val": 4.25, "announcement_datetime": "2025-01-29T19:00:00Z" },
    { "date": "2024-12-18", "val": 4.25, "announcement_datetime": "2024-12-18T19:00:00Z" }
  ]
}

Cette structure propre et cohérente ne nécessite presque aucune transformation avant d'être utilisée dans la logique d'entreprise, les bases de données ou les API en aval.

Étape 3 Votre premier appel téléphonique

Créez un fichier appelé fxmd.js Ceci récupère le taux directeur de la Réserve fédérale américaine pour les deux dernières années en utilisant le code intégré de Node.js fetchJe suis désolé .

// fxmd.js  —  requires Node.js 18+
const API_KEY = process.env.FXMD_API_KEY;
const BASE    = "https://fxmacrodata.com/api/v1";

async function getIndicator(currency, indicator, startDate) {
  const url = new URL(`${BASE}/announcements/${currency}/${indicator}`);
  url.searchParams.set("api_key", API_KEY);
  if (startDate) url.searchParams.set("start", startDate);

  const res = await fetch(url.toString());
  if (!res.ok) {
    throw new Error(`API error ${res.status}: ${await res.text()}`);
  }
  const json = await res.json();
  return json.data ?? [];
}

// Fetch the Fed policy rate
const data = await getIndicator("usd", "policy_rate", "2023-01-01");
console.log(`Latest USD policy rate: ${data[0]?.val}% on ${data[0]?.date}`);

Je le fais .

FXMD_API_KEY=your_key node fxmd.js

Le plus haut niveau attend l'exemple ci-dessus utilise le niveau supérieur awaitÇa marche dans ... .mjs les fichiers ou quand ? "type": "module" est installé dans votre package.jsonPour les modules CommonJS, enveloppez les appels dans un async La fonction est définie par le système de commande et appelée immédiatement (voir l'exemple complet à l'étape 5).

Étape 4 Récupérer plusieurs indicateurs en parallèle

Promise.all Il est donc possible de faire une recherche sur une douzaine d'indicateurs en même temps, ce qui prend à peu près le même temps que d'en faire une seule.

const CURRENCIES  = ["usd", "eur", "gbp", "aud", "jpy"];
const INDICATORS  = ["policy_rate", "inflation"];
const START       = "2024-01-01";

// Build a flat list of [currency, indicator] pairs
const pairs = CURRENCIES.flatMap(c => INDICATORS.map(i => [c, i]));

// Fire all requests in parallel
const results = await Promise.all(
  pairs.map(([currency, indicator]) =>
    getIndicator(currency, indicator, START)
      .then(data => ({ currency, indicator, latest: data[0] ?? null }))
      .catch(err => ({ currency, indicator, latest: null, error: err.message }))
  )
);

// Print a quick summary
for (const row of results) {
  if (row.error) {
    console.log(`${row.currency.toUpperCase()} ${row.indicator}: ERROR — ${row.error}`);
  } else if (row.latest) {
    console.log(
      `${row.currency.toUpperCase()} ${row.indicator}: ${row.latest.val} (${row.latest.date})`
    );
  }
}

Le .catch utile lors de l'exécution de tâches nocturnes où des données partielles sont encore exploitables.

Étape 5 Scénario prêt à la production

Ci-dessous, un script complet compatible avec CommonJS avec une gestion correcte des erreurs, des listes de devises et d'indicateurs configurables et une sortie formatée pour l'enregistrement ou le traitement en aval:

// macro-snapshot.js  —  CommonJS, Node.js 18+
"use strict";

const API_KEY = process.env.FXMD_API_KEY;
const BASE    = "https://fxmacrodata.com/api/v1";

if (!API_KEY) {
  console.error("Error: FXMD_API_KEY environment variable is not set.");
  process.exit(1);
}

// ── Configuration ──────────────────────────────────────────────────────────
const CURRENCIES = ["usd", "eur", "gbp", "cad", "jpy", "aud", "nzd", "chf"];
const INDICATORS = ["policy_rate", "inflation", "unemployment"];
const START_DATE = "2024-01-01";
// ───────────────────────────────────────────────────────────────────────────

async function getIndicator(currency, indicator, startDate) {
  const url = new URL(`${BASE}/announcements/${currency}/${indicator}`);
  url.searchParams.set("api_key", API_KEY);
  if (startDate) url.searchParams.set("start", startDate);

  const res = await fetch(url.toString());
  if (!res.ok) {
    const body = await res.text().catch(() => "");
    throw new Error(`HTTP ${res.status}${body ? ": " + body.slice(0, 120) : ""}`);
  }
  const json = await res.json();
  return Array.isArray(json.data) ? json.data : [];
}

async function main() {
  const pairs = CURRENCIES.flatMap(c => INDICATORS.map(i => [c, i]));

  const results = await Promise.all(
    pairs.map(async ([currency, indicator]) => {
      try {
        const data = await getIndicator(currency, indicator, START_DATE);
        return { currency, indicator, latest: data[0] ?? null, error: null };
      } catch (err) {
        return { currency, indicator, latest: null, error: err.message };
      }
    })
  );

  // Group by currency for readable output
  const byCurrency = {};
  for (const row of results) {
    if (!byCurrency[row.currency]) byCurrency[row.currency] = [];
    byCurrency[row.currency].push(row);
  }

  console.log("\n=== FXMacroData Macro Snapshot ===\n");
  for (const [currency, rows] of Object.entries(byCurrency)) {
    console.log(`  ${currency.toUpperCase()}`);
    for (const row of rows) {
      if (row.error) {
        console.log(`    ${row.indicator.padEnd(20)} — error: ${row.error}`);
      } else if (row.latest) {
        console.log(
          `    ${row.indicator.padEnd(20)} ${String(row.latest.val).padStart(8)}  (${row.latest.date})`
        );
      } else {
        console.log(`    ${row.indicator.padEnd(20)} — no data`);
      }
    }
    console.log();
  }
}

main().catch(err => {
  console.error("Fatal:", err.message);
  process.exit(1);
});

Exécutez le script:

FXMD_API_KEY=your_key node macro-snapshot.js

Produit d'échantillonnage:

=== FXMacroData Macro Snapshot ===

  USD
    policy_rate             4.25  (2025-03-19)
    inflation               2.40  (2025-04-10)
    unemployment            4.20  (2025-04-04)

  EUR
    policy_rate             2.40  (2025-04-17)
    inflation               2.20  (2025-04-16)
    unemployment            6.10  (2025-03-31)

  GBP
    policy_rate             4.50  (2025-03-20)
    inflation               2.60  (2025-03-26)
    unemployment            4.40  (2025-04-15)
  ...

Étape 6 Utilisation de la technologie pour le développement local

Lors de la construction d'un projet Node.js plus grand, il est plus pratique de garder votre clé API dans un .env le fichier et le charger automatiquement avec le - Je ne sais pas. - Le paquet:

npm install dotenv

Créez un .env fichier dans votre racine de projet (ajoutez-le à .gitignore immédiatement):

FXMD_API_KEY=your_actual_api_key_here

Ajoutez une ligne au début du script:

require("dotenv").config();   // CommonJS
// or
import "dotenv/config";       // ES module

Le reste du scénario est: process.env.FXMD_API_KEY exactement comme avant pas besoin de changer.

En production (Cloud Functions, AWS Lambda, Vercel, Render, etc.) sont également disponibles dans le jeu. FXMD_API_KEY Il est utilisé comme une variable d'environnement sécurisé par le biais du gestionnaire de secrets de la plateforme. .env fichier au contrôle source.

Étape 7 Consultez le catalogue complet des indicateurs

Le snapshot macro ci-dessus couvre trois indicateurs, mais FXMacroData expose plus de 80 séries temporelles dans 14 grands blocs de devises. getIndicator quelques exemples de valeur élevée pour les traders FX:

  • Taux réels soustraire inflation de policy_rate La différence de taux entre les deux devises est un facteur clé de la direction des changes à moyen terme. Documents relatifs aux taux directeurs en USD pour les détails sur les critères de jugement.
  • Données sur le travail Je suis désolé . unemploymentJe suis désolé . non_farm_payrolls, et average_hourly_earnings (USD) donner des signaux précoces sur les fonctions de réaction des banques centrales.
  • Le sentiment Je suis désolé . consumer_confidenceJe suis désolé . pmi, et business_confidence Les taux de change sont plus élevés que les taux de référence et peuvent précéder les mouvements de devises avant qu'ils ne soient pris en compte dans les décisions de taux.
  • Flux commerciaux Je suis désolé . trade_balanceJe suis désolé . exports, et imports Les prix des produits de base et des devises (AUD, NZD, CAD) sont liés aux variations des conditions de négociation.

Consultez le catalogue complet pour n'importe quelle devise à https://fxmacrodata.com/api/v1/catalogue/{currency}?api_key=YOUR_API_KEY, ou explorez les documents interactifs à les données sur les données api-docsJe suis désolé .

Résumé

Vous avez maintenant tout ce dont vous avez besoin pour consommer FXMacroData à partir de Node.js:

  • Un générique . getIndicator(currency, indicator, startDate) l'aide qui gère la vérification d'authentification et d'erreur
  • Les demandes parallèles de multiples indicateurs via Promise.all avec isolation d'erreur par demande
  • Un script prêt à la production que vous pouvez programmer, déployer dans une fonction sans serveur ou intégrer dans un backend Node.js existant
  • Gestion sécurisée des clés API via des variables d'environnement ou dotenv

Les prochaines étapes naturelles: planifier le script instantané avec un travail cron ou un programme de tâches comme n8n, poussez les résultats dans une base de données, ou les alimentez dans un algorithme de trading. La même structure JSON propre que le script lit fonctionne de la même manière que vous créez un tableau de bord React, une API Express ou un déclencheur de fonction Cloud.

Pour plus de guides spécifiques à chaque langue, voir Des guides de démarrage rapide les étapes de Python et R couvrent le même ensemble d'indicateurs avec des outils spécifiques à l'écosystème pour l'analyse et la visualisation.

Blogroll