How to Use All FXMacroData API Endpoints: A Complete Guide banner image

Implementation

How-To Guides

How to Use All FXMacroData API Endpoints: A Complete Guide

A step-by-step walkthrough of every public endpoint in the FXMacroData API — from announcement series and release calendar to COT positioning, commodities, forex rates, and GraphQL batching.

Également disponible en English

À la fin de ce guide, vous aurez des exemples de travail pour chaque point d'extrémité public de l'API FXMacroData , de la série d'annonces et du calendrier de sortie au positionnement COT, aux prix des métaux précieux, aux taux de change et à l'interface GraphQL afin de pouvoir choisir le bon outil pour tout flux de travail de données macro.

Pré-requis

  • Un compte FXMacroData Le code de l'entreprise est le code de la société.
  • Une clé API professionnelle pour l'accès aux terminaux payants et non USD (les demandes USD sont gratuites sur la plupart des terminaux)
  • curl pour les exemples de ligne de commande, ou Python 3.9+ avec le requests bibliothèque
  • Familiarité de base avec les API REST et les réponses JSON
Tableau de référence rapide
Famille de points de terminaison Route Autre
Les annonces /api/v1/annonces/{monnaie}/{indicateur} USD gratuit · Pro pour les autres
Calendrier de sortie /api/v1/calendrier/{monnaie} Je suis libre.
Catalogue des données Les données sont fournies par les autorités compétentes. Je suis libre.
Positionnement du COT /api/v1/cot/{monnaie} USD gratuit · Pro pour les autres
Les métaux /api/v1/matières premières/{indicateur} La clé Pro est toujours nécessaire.
Taux de change Je suis un homme de parole. Je suis libre.
Sessions de marché /api/v1/market_sessions Les séances de marché sont des séances d'information Je suis libre.
GraphQL /api/v1/graphql Les données sont fournies par le système de mesure USD + catalogue gratuit · Pro pour les autres

Étape 1 Annonces: séries d'indicateurs historiques

Le point d'arrivée des annonces est le cœur de FXMacroData. Il renvoie une série de temps normalisée et timestampée pour tout indicateur macroéconomique pris en charge. Chaque ligne contient la date d'observation, la valeur publiée et l'horodatage exact Unix de la publication officielle , ce qui vous donne une précision de deuxième niveau pour la recherche basée sur les événements et le backtesting.

Les requêtes USD fonctionnent sans clé API. Pour toute autre devise, ajoutez votre clé comme paramètre de requête. start_date Je suis désolé . end_date (AAAA-MM-DD) pour réduire la fenêtre; le paramètre par défaut est les 365 derniers jours.

# USD inflation series — no key needed
curl "https://fxmacrodata.com/api/v1/announcements/usd/inflation"

# AUD policy rate — Pro key required
curl "https://fxmacrodata.com/api/v1/announcements/aud/policy_rate?api_key=YOUR_API_KEY"

# EUR GDP with a custom date range
curl "https://fxmacrodata.com/api/v1/announcements/eur/gdp?start_date=2024-01-01&end_date=2026-03-01&api_key=YOUR_API_KEY"
{
  "currency": "USD",
  "indicator": "inflation",
  "has_official_forecast": false,
  "start_date": "2025-03-01",
  "end_date": "2026-03-30",
  "data": [
    {
      "date": "2026-02-01",
      "val": 2.8,
      "announcement_datetime": 1741082400,
      "pct_change": -0.5,
      "pct_change_12m": -6.7
    }
  ]
}

Le announcement_datetime Le champ est un horodatage Unix (secondes, UTC) pour le moment exact où les données ont été publiées officiellement. Utilisez-le pour l'alignement des études d'événements et pour éviter les biais de prospection dans les backtests. Parcourez les globules d'indicateur disponibles pour n'importe quelle devise avec le catalogue de données (étape 3) ou à Les données de l'APIJe suis désolé .


Étape 2 Calendrier de sortie: prochaines dates d'annonce

Le calendrier de fin de période renvoie les horodatages d'annonce UTC programmés pour chaque macro-version à venir pour une devise donnée. Utilisez-le pour planifier une récupération ciblée qui se déclenche lorsque de nouvelles données sont publiées plutôt que de procéder à un sondage en continu à un intervalle fixe.

Aucune clé API n'est requise. Filtrez vers un indicateur spécifique avec l'option indicator Paramètre de requête: le code de la monnaie spéciale COMM renvoie le calendrier de libération de la marchandise.

# All upcoming releases for USD
curl "https://fxmacrodata.com/api/v1/calendar/usd"

# Filter to a single indicator
curl "https://fxmacrodata.com/api/v1/calendar/usd?indicator=non_farm_payrolls"

# Commodity release schedule
curl "https://fxmacrodata.com/api/v1/calendar/COMM"
{
  "currency": "USD",
  "indicator": "non_farm_payrolls",
  "data": [
    {
      "release": "non_farm_payrolls",
      "announcement_datetime": 1746540600,
      "requires_api_key": false
    }
  ]
}

Convertissez l'horodatage en une heure UTC lisible par l'homme avec datetime.fromtimestamp(ts, tz=timezone.utc) Dans Python ou ? new Date(ts * 1000).toISOString() Pour un schéma de planification complet, voir Comment utiliser l'API du calendrier de sortie pour planifier les récupérations d'indicateursJe suis désolé .


Étape 3 Catalogue des données: découvrir les indicateurs disponibles

Avant d'écrire un code ciblant un indicateur spécifique, consultez le catalogue pour confirmer ce qui est disponible pour une devise. La réponse correspond à chaque slug d'indicateur avec son nom, son unité, sa fréquence de publication et si la banque centrale publie une prévision officielle pour elle.

# List all indicators for EUR — no key required
curl "https://fxmacrodata.com/api/v1/data_catalogue/eur"

# Include routing and auth discovery metadata per indicator
curl "https://fxmacrodata.com/api/v1/data_catalogue/usd?include_capabilities=true"
{
  "gdp": {
    "name": "GDP Growth",
    "unit": "%QoQ",
    "frequency": "Quarterly",
    "has_official_forecast": false
  },
  "inflation": {
    "name": "Inflation (CPI)",
    "unit": "%YoY",
    "frequency": "Monthly",
    "has_official_forecast": false
  },
  "policy_rate": {
    "name": "Policy Rate",
    "unit": "%",
    "frequency": "Meeting",
    "has_official_forecast": true
  }
}

Les clés de niveau supérieur dans la réponse sont les mêmes {indicator} Les devises prises en charge sont les suivantes: USD, EUR, GBP, JPY, AUD, CAD, CHF, NZD, CNY, SGD, SEK, DKK, PLN et BRL. include_coverage=true Pour obtenir une grille de disponibilité de devises croisées en une seule réponse.


Étape 4 Positionnement des produits de la COT: données spéculatives sur les contrats à terme

Le critère d'évaluation de l'engagement des traders fournit des données hebdomadaires de positionnement de la CFTC pour les contrats à terme sur devises. Il montre la répartition totale des intérêts ouverts entre les participants non commerciaux (spéculatifs), commercialement (hedger) et non déclarés un indicateur de référence largement suivi pour les renversements de tendance des devises et le positionnement encombré.

Les devises prises en charge sont: USD, EUR, GBP, JPY, AUD, CAD, CHF, NZD. USD est gratuit; toutes les autres nécessitent une clé Pro.

# USD COT history — free
curl "https://fxmacrodata.com/api/v1/cot/usd"

# EUR COT with a custom date range
curl "https://fxmacrodata.com/api/v1/cot/eur?start_date=2025-01-01&api_key=YOUR_API_KEY"
{
  "currency": "EUR",
  "instrument": "EURO FX - CHICAGO MERCANTILE EXCHANGE",
  "fx_overlay": { "pair": "EUR/USD" },
  "start_date": "2025-01-07",
  "end_date": "2026-03-25",
  "data": [
    {
      "date": "2026-03-18",
      "announcement_datetime": 1742493000,
      "open_interest": 812345,
      "noncommercial_long": 185000,
      "noncommercial_short": 92000,
      "noncommercial_net": 93000,
      "commercial_long": 203000,
      "commercial_short": 310000,
      "commercial_net": -107000,
      "nonreportable_long": 21000,
      "nonreportable_short": 9000
    }
  ]
}

Le noncommercial_net Le taux de change est le plus souvent utilisé pour les traders de devises. announcement_datetime Pour le contexte de la paire EUR, voir le Taux de référence en eurosJe suis désolé .


Étape 5 Métaux: prix de l'or, de l"argent et du platine

Le point d'extrémité des métaux renvoie des séries de prix quotidiennes pour les métaux précieux provenant de la Monnaie royale (fixes de la LBMA). Ces séries sont utiles comme intrants macro-actifs, en particulier pour suivre les flux de refuge sûr et la dynamique liée au dollar.

Une clé API professionnelle est toujours requise pour ce point final. goldJe suis désolé . silverJe suis désolé . platinumJe suis désolé .

# Gold LBMA PM Fix daily prices
curl "https://fxmacrodata.com/api/v1/commodities/gold?api_key=YOUR_API_KEY"

# Silver with a date range
curl "https://fxmacrodata.com/api/v1/commodities/silver?start_date=2025-01-01&api_key=YOUR_API_KEY"

# Platinum spot
curl "https://fxmacrodata.com/api/v1/commodities/platinum?api_key=YOUR_API_KEY"
{
  "currency": "COMM",
  "indicator": "gold",
  "has_official_forecast": false,
  "start_date": "2025-03-30",
  "end_date": "2026-03-30",
  "data": [
    {
      "date": "2026-03-28",
      "val": 2870.00,
      "pct_change": 1.2,
      "pct_change_12m": 30.1
    }
  ]
}

La forme de la réponse est identique à l'endpoint des annonces, vous pouvez donc réutiliser le même code d'analyse. announcement_datetime C' est ça . null Il est utilisé pour les séries de prix quotidiennes et n'est rempli que pour les événements officiels de publication mensuelle.


Étape 6 Taux de change: séries de prix au comptant quotidiennes

Le point de départ forex renvoie des données quotidiennes sur le taux de change OHLC pour toute paire de devises prise en charge. Aucune clé API n'est requise. Utilisez-le pour aligner les versions des indicateurs macro avec le taux d'échange contemporain pour les flux de travail de backtesting ou de visualisation de graphiques.

La base de passage et la citation sont des segments de chemin séparés (par exemple /forex/eur/usd Pour l'EUR/USD , il faut ajouter des superpositions d'indicateurs techniques avec le indicators paramètre de requête.

# EUR/USD daily rates — no key required
curl "https://fxmacrodata.com/api/v1/forex/eur/usd"

# AUD/JPY with a custom date range
curl "https://fxmacrodata.com/api/v1/forex/aud/jpy?start_date=2025-01-01"

# GBP/USD with technical indicators overlaid
curl "https://fxmacrodata.com/api/v1/forex/gbp/usd?indicators=sma_20,rsi_14"
{
  "base": "EUR",
  "quote": "USD",
  "start_date": "2025-03-30",
  "end_date": "2026-03-30",
  "data": [
    {
      "date": "2026-03-28",
      "close": 1.0832,
      "open": 1.0821,
      "high": 1.0867,
      "low": 1.0798
    }
  ]
}

Étape 7 Sessions de marché: état de la session en temps réel

Le point de terminaison des sessions de marché renvoie l'état d'ouverture/close actuel pour les quatre principales sessions de change Sydney, Tokyo, Londres et New York ainsi que les fenêtres de chevauchement actives. Aucune clé API n'est requise. Utilisez-le pour passer l'automatisation sensible au temps aux fenêters de liquidité maximale ou pour annoter des graphiques avec les limites de session.

# Real-time snapshot — no key required
curl "https://fxmacrodata.com/api/v1/market_sessions"

# Historical snapshot for scheduling or testing
curl "https://fxmacrodata.com/api/v1/market_sessions?at=2026-03-28T12:00:00Z"
{
  "now_utc": "2026-03-30T08:47:00Z",
  "now_unix": 1743324420,
  "is_market_day": true,
  "sessions": [
    {
      "name": "London",
      "is_open": true,
      "seconds_to_close": 25200,
      "currencies": ["EUR", "GBP", "CHF"],
      "open_utc": "2026-03-30T07:00:00Z",
      "close_utc": "2026-03-30T15:00:00Z"
    }
  ],
  "overlaps": [
    {
      "name": "London / New York",
      "is_active": false,
      "priority": "high",
      "start_utc": "2026-03-30T12:00:00Z",
      "end_utc": "2026-03-30T16:00:00Z",
      "notable_pairs": ["EUR/USD", "GBP/USD", "USD/CHF"],
      "duration_hours": 4
    }
  ]
}

Le chevauchement Londres/New York est la fenêtre de liquidité la plus élevée de la journée de négociation et c'est à ce moment que les macro-libérations provoquent le plus souvent les plus gros mouvements au comptant. is_market_day: false Il est également possible de prévoir des horaires de travail pour les week-ends et les jours fériés.


Étape 8 GraphQL: batch plusieurs requêtes dans une seule demande

FXMacroData expose un point de terminaison GraphQL qui reflète exactement la surface REST les mêmes règles d'authentification, les mêmes noms de champ, les même données mais vous permet de déclarer uniquement les champs dont vous avez besoin et de combiner plusieurs requêtes en un seul aller-retour HTTP. et Taux directeur de la livre sterling et Un calendrier de sortie AUD, c'est un POST au lieu de trois GET.

Envoyez un POST Je suis là . https://fxmacrodata.com/api/v1/graphql avec un corps JSON contenant un query Les champs racine disponibles sont announcementsJe suis désolé . dataCatalogue, et calendarJe suis désolé .

# Single free USD query — no key required
curl -s -X POST "https://fxmacrodata.com/api/v1/graphql" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "{ announcements(currency: \"USD\", indicator: \"inflation\") { currency indicator data { date val pctChange } } }"
  }'

# Batched: EUR inflation + GBP policy rate in one request
curl -s -X POST "https://fxmacrodata.com/api/v1/graphql?api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "query { eurCPI: announcements(currency: \"EUR\", indicator: \"inflation\") { data { date val } } gbpRate: announcements(currency: \"GBP\", indicator: \"policy_rate\") { data { date val } } }"
  }'
{
  "data": {
    "eurCPI":  { "data": [{ "date": "2026-02-28", "val": 2.3 }] },
    "gbpRate": { "data": [{ "date": "2026-03-20", "val": 4.5 }] }
  }
}
Un conseil: Utilisez des alias de requête (comme eurCPI: Pour éviter les conflits de nom de champ lors de la mise en lots multiples announcements Chaque alias devient une clé séparée dans le data objet de réponse.

GraphQL renvoie HTTP 200 même lorsqu'un champ de requête échoue des erreurs apparaissent dans un champ de niveau supérieur errors Pour une mise en œuvre complète de Python et JavaScript avec manipulation d'erreurs et modèles de batch, voir Comment faire une requête FXMacroData via GraphQLJe suis désolé .


Étape 10 Flux de travail Python de bout en bout

L'extrait ci-dessous rassemble les modèles les plus courants en séquence: découvrez les indicateurs disponibles, vérifiez la prochaine version prévue, récupérez deux séries d'indicateurs dans une seule demande GraphQL, puis vérifie conditionnellement l'état de la session du marché avant de router la sortie.

import requests
from datetime import datetime, timezone

BASE = "https://fxmacrodata.com/api/v1"
API_KEY = "YOUR_API_KEY"


def params(require_key: bool = True) -> dict:
    return {"api_key": API_KEY} if require_key else {}


# 1. Discover available indicators for AUD (free)
catalogue = requests.get(f"{BASE}/data_catalogue/aud", params=params(False), timeout=10)
catalogue.raise_for_status()
print("AUD indicators:", list(catalogue.json().keys())[:5])

# 2. Check the next USD non-farm payrolls release timestamp (free)
cal = requests.get(f"{BASE}/calendar/usd", params={"indicator": "non_farm_payrolls"}, timeout=10)
cal.raise_for_status()
events = cal.json().get("data", [])
if events:
    ts = events[0]["announcement_datetime"]
    dt = datetime.fromtimestamp(ts, tz=timezone.utc)
    print(f"Next NFP release: {dt.strftime('%Y-%m-%d %H:%M UTC')}")

# 3. Fetch EUR inflation + AUD policy rate in one GraphQL request (Pro key)
gql_query = """
query {
  eurCPI: announcements(currency: "EUR", indicator: "inflation") {
    data { date val pctChange }
  }
  audRate: announcements(currency: "AUD", indicator: "policy_rate") {
    data { date val }
  }
}
"""
resp = requests.post(
    f"{BASE}/graphql",
    params={"api_key": API_KEY},
    json={"query": gql_query},
    timeout=15,
)
resp.raise_for_status()
payload = resp.json()
if "errors" in payload:
    raise RuntimeError(payload["errors"])
data = payload["data"]

eur_latest = data["eurCPI"]["data"][-1]
aud_latest = data["audRate"]["data"][-1]
print(f"EUR CPI  {eur_latest['date']}: {eur_latest['val']}%")
print(f"AUD Rate {aud_latest['date']}: {aud_latest['val']}%")

# 4. Check market sessions before triggering a trade alert (free)
sessions_resp = requests.get(f"{BASE}/market_sessions", timeout=10)
sessions_resp.raise_for_status()
session_data = sessions_resp.json()

if session_data["is_market_day"]:
    for overlap in session_data.get("overlaps", []):
        if overlap["is_active"] and overlap["priority"] == "high":
            print(f"High-liquidity window active: {overlap['name']}")
else:
    print("Market closed — skipping alert")

Ce que vous avez accompli

  • ✓ Retrouver des séries d'indicateurs historiques avec des horodatages de sortie précis Les annonces point final
  • ✓ Les calendriers de sortie à venir sont consultés par le Calendrier de sortie point final
  • ✓ Les slugs disponibles pour chaque devise avec le ✓ Catalogue des données point final
  • ✓ Retrouver le positionnement des contrats à terme spéculatifs à partir du Le COT point final
  • ✓ Tiré des séries de prix des métaux précieux Les métaux point final
  • ✓ Alignement des données macro avec les taux au comptant Taux de change point final
  • ✓ Vérifiez l'état de la session en direct depuis le Sessions de marché point final
  • ✓ Les requêtes de plusieurs indicateurs sont regroupées en un seul aller-retour avec le GraphQL point final

Ce que vous pouvez construire ensuite

Vous avez maintenant des exemples de travail pour chaque point de terminaison public dans l'API FXMacroData. Quelques prochaines étapes naturelles:

  • Remplacer les appels REST séquentiels par le batching GraphQL. Partout où vous faites trois ou plusieurs demandes GET indépendantes, un seul GraphQL POST peut les remplacer. Comment faire une requête FXMacroData via GraphQLJe suis désolé .
  • Positionnement COT de couche sur les différentiels de taux. Combinez le net spéculatif du point final de la COT avec la série des taux directeurs pour créer un signal macro composite dans l'univers monétaire du G8.
  • Aligner les prix des métaux avec les émissions de devises. Associer l'or du point final des métaux à la série d'annonces AUD ou USD pour suivre les corrélations entre le refuge et le dollar au fil du temps.

L'équipe FXMacroData

Blogroll