Al final de esta guía, tendrá ejemplos de trabajo para cada punto final público en la API FXMacroData desde la serie de anuncios y el calendario de lanzamiento hasta el posicionamiento de COT, los precios de los metales preciosos, las tasas de cambio y la interfaz GraphQL para que pueda elegir la herramienta adecuada para cualquier flujo de trabajo de datos macro.
Los requisitos previos
- Una cuenta de FXMacroData El nombre de la empresa es:
- Una clave API profesional para el acceso a puntos finales no USD y pagados (las solicitudes USD son gratuitas en la mayoría de los puntos finales)
curlpara los ejemplos de línea de comandos, o Python 3.9+ con elrequestsbiblioteca- Familiaridad básica con las API REST y las respuestas JSON
| Familia de puntos finales | Ruta de las operaciones | El autor |
|---|---|---|
| Anuncios | /api/v1/anuncios/{valuta}/{indicador} | USD gratis · Pro para otros |
| Calendario de lanzamiento | /api/v1/calendario/{moneda} | Es libre. |
| Catálogo de datos | /api/v1/data_catalogue/{valuta} Las operaciones de las entidades de crédito se ejecutan en el marco de la política monetaria de la Unión Europea. | Es libre. |
| Posicionamiento del COT | /api/v1/cot/{moneda} | USD gratis · Pro para otros |
| Los metales | /api/v1/productos básicos/{indicador} | Siempre se requiere la llave Pro |
| Las tasas de cambio | /api/v1/forex/{base}/{cita} El precio de las acciones es el precio de los activos. | Es libre. |
| Sesiones de mercado | /api/v1/market_session (Sesiones de mercado) | Es libre. |
| GraphQL (cuadro de las instrucciones) | /api/v1/graphql el número de personas que han sido afectadas por el accidente | USD + catálogo libre · Pro para otros |
Etapa 1 Anuncios: series de indicadores históricos
El punto final de anuncios es el núcleo de FXMacroData. Devuelve una serie de tiempo normalizada y timestamped para cualquier indicador macroeconómico compatible. Cada fila contiene la fecha de observación, el valor lanzado y la marca de tiempo exacta de Unix de la publicación oficial , lo que le da una precisión de segundo nivel para la investigación basada en eventos y backtesting.
Las solicitudes de USD funcionan sin una clave de API. Para cualquier otra moneda, añada su clave como parámetro de consulta. start_date ¿ Qué ? end_date (AAAA-MM-DD) para reducir la ventana; el valor predeterminado es los últimos 365 días.
# 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
}
]
}
El announcement_datetime field is a Unix timestamp (seconds, UTC) for the exact moment the data was officially published. Use it for event study alignment and to avoid look-ahead bias in backtests. Browse available indicator slugs for any currency with the data catalogue (Step 3) or at Documento de datos de la API- ¿ Qué ?
Paso 2 Calendario de publicación: próximos tiempos de anuncio
El punto final del calendario devuelve las marcas de tiempo de anuncio UTC programadas para cada próxima versión macro para una moneda determinada.
No se requiere una clave API. indicator Parámetro de consulta: el código de moneda especial COMM devuelve el calendario de liberación de la mercancía.
# 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
}
]
}
Convierta la marca de tiempo a una hora UTC legible por el hombre con datetime.fromtimestamp(ts, tz=timezone.utc) en Python o en new Date(ts * 1000).toISOString() Para un patrón de programación completo, vea Cómo utilizar la API de calendario de lanzamiento para programar las búsquedas de indicadores- ¿ Qué ?
Paso 3 Catálogo de datos: descubrir los indicadores disponibles
Antes de escribir un código que se dirija a un indicador específico, consulta el catálogo para confirmar lo que está disponible para una moneda. La respuesta asigna cada caracol de indicador a su nombre legible para el ser humano, unidad, frecuencia de liberación y si el banco central publica una previsión oficial para él.
# 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
}
}
Las claves de nivel superior en la respuesta son exactamente {indicator} Las monedas soportadas incluyen USD, EUR, GBP, JPY, AUD, CAD, CHF, NZD, CNY, SGD, SEK, DKK, PLN y BRL. Pasar include_coverage=true Para obtener una red de disponibilidad de divisas cruzadas en una sola respuesta.
Paso 4 Posicionamiento de la COT: datos especulativos de futuros
El punto final de Commitment of Traders proporciona datos semanales de posicionamiento de la CFTC para contratos de futuros de divisas. Muestra el interés total abierto dividido entre participantes no comerciales (especulativos), comerciales (hedger) y no sujetos a notificación un indicador líder ampliamente rastreado para las reversiones de tendencia de divis as y el posicionamento lleno.
Monedas soportadas: USD, EUR, GBP, JPY, AUD, CAD, CHF, NZD. El USD es gratuito; todas las demás requieren una clave 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
}
]
}
El noncommercial_net El índice de posicionamiento más utilizado para los operadores de divisas es el de la línea de posiciones (long menos short especulativo). announcement_datetime for the Friday 3:30 PM ET CFTC publication. For EUR pair context see the Documento sobre las tasas de interés de política monetaria en euros- ¿ Qué ?
Paso 5 Metales: precios del oro, la plata y el platino
El punto final de metales devuelve series diarias de precios de meta les de la Real Casa de la Moneda (fijas de la LBMA). Estas series son útiles como entradas macro entre activos, especialmente para rastrear los flujos de refugio seguro y la dinámica vinculada al USD.
Para este punto final siempre se requiere una clave API profesional. gold¿ Qué ? silver¿ Qué ? platinum- ¿ Qué ?
# 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 forma de respuesta es idéntica al punto final de los anuncios, por lo que puede reutilizar el mismo código de análisis. announcement_datetime Es ... null para las series de precios diarias y sólo se completa para los eventos oficiales de publicación mensual.
Paso 6 Costos de cambio: series de precios al contado diarias
El punto final de forex devuelve datos diarios de tasa de spot OHLC para cualquier par de divisas soportado. No se requiere una clave API. Úsala para alinear las versiones de indicadores macro con el tipo de cambio contemporáneo para flujos de trabajo de backtesting o visualización de gráficos.
Base de paso y cotización como segmentos de trayectoria separados (por ejemplo, /forex/eur/usd Para el EUR/USD , añadir superposiciones de indicadores técnicos con el indicators Parámetro de consulta.
# 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
}
]
}
Paso 7 Sesiones de mercado: estado de la sesión en tiempo real
El punto final de las sesiones de mercado devuelve el estado de apertura/cierre actual para las cuatro sesiones principales de FX Sydney, Tokio, Londres y Nueva York junto con las ventanas de superposición activas. No se requiere una clave API. Úsala para gatear la automatización sensible al tiempo a las ventanillas de máxima liquidez o para anotar gráficos con límites de sesión.
# 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
}
]
}
La superposición Londres/Nueva York es la ventana de mayor liquidez del día de negociación y es cuando las liberaciones macro más frecuentemente causan los movimientos al contado más grandes. is_market_day: false Los usuarios de los servicios de seguridad social pueden evitar la automatización los fines de semana y los días festivos.
Paso 8 GraphQL: batch de varias consultas en una sola solicitud
FXMacroData expone un punto final de GraphQL que refleja la superficie REST exactamente las mismas reglas de autenticación, los mismos nombres de campo, los mismas datos pero le permite declarar sólo los campos que necesita y combinar varias consultas en un solo viaje de ida y vuelta HTTP. y Tasa de interés de la libra esterlina y un calendario de liberación de AUD, que es un POST en lugar de tres GETs.
Envía un POST ¿ Qué ? https://fxmacrodata.com/api/v1/graphql con un cuerpo JSON que contiene un query Los campos de raíz disponibles son announcements¿ Qué ? dataCatalogue, y calendar- ¿ Qué ?
# 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 }] }
}
}
eurCPI: para evitar conflictos de nombres de campos cuando se realizan lotes múltiples announcements Cada alias se convierte en una clave separada en el data Objeto de respuesta.
GraphQL devuelve HTTP 200 incluso cuando un campo de consulta falla los errores aparecen en un nivel superior errors Para una implementación completa de Python y JavaScript con manejo de errores y patrones de batch, vea Cómo consultar FXMacroData a través de GraphQL- ¿ Qué ?
Paso 10 Flujo de trabajo de extremo a extremo de Python
El siguiente fragmento reúne los patrones más comunes en secuencia: descubre los indicadores disponibles, comprueba el próximo lanzamiento programado, recupera dos series de indicadores en una sola solicitud de GraphQL y luego comprueba condicionalmente el estado de la sesión de mercado antes de enrutar la salida.
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")
Lo que has logrado
- ✓ Se han obtenido series de indicadores históricos con marcas de fecha de publicación precisas de los Anuncios punto final
- ✓ Consultado los próximos calendarios de lanzamiento de la ✓ Calendario de lanzamiento punto final
- ✓ Las cuotas de los indicadores disponibles por moneda con el ✓ Catálogo de datos punto final
- ✓ Posicionamiento de futuros especulativos obtenidos de la ✓ El COT punto final
- ✓ Se extrajeron las series de precios de los metales preciosos de la Los metales punto final
- ✓ Alineación de los datos macro con los tipos al contado de los Las tasas de cambio punto final
- ✓ Verificado el estado de la sesión en vivo desde el Sesiones de mercado punto final
- ✓ Consultas por lotes de múltiples indicadores en un solo viaje de ida y vuelta con el GraphQL (cuadro de las instrucciones) punto final
Lo que puedes construir a continuación
Ahora tiene ejemplos de trabajo para cada punto final público en la API FXMacroData.
- Reemplazar las llamadas REST secuenciales con el batch de GraphQL. En cualquier lugar que haga tres o más solicitudes independientes GET, un único GraphQL POST puede reemplazarlos. Cómo consultar FXMacroData a través de GraphQL- ¿ Qué ?
- Posicionamiento de la capa COT sobre los diferenciales de velocidad. Combinar la red especulativa del punto final de la COT con las series de tipos de interés para construir una señal macro compuesta en todo el universo monetario del G8.
- Alinear los precios de los metales con las liberaciones de divisas. Para realizar un seguimiento de las correlaciones entre el refugio seguro y el dólar a lo largo del tiempo, emparejar el oro del punto final de los metales con la serie de anuncios del AUD o USD.
El equipo de FXMacroData