Live release feed
Sub-second macro releases for FX backtests
Point-in-time history
Official CPI, jobs, GDP, and central-bank events with point-in-time history.
$25/month 14-day free trial
Start Free Trial
How to Use the Release Calendar API to Schedule Indicator Fetches image
Share headline card X LinkedIn Email
Download

Implementation

How-To Guides

How to Use the Release Calendar API to Schedule Indicator Fetches

Stop polling every endpoint on a timer. Learn how to query the FXMacroData release calendar to find the exact announcement time for any indicator, then schedule a single targeted API call for that moment — in Python and JavaScript.

Disponible también en English
Share article X LinkedIn Email

Al final de esta guía tendrá un programador que utiliza el calendario de lanzamiento de producción FXMacroData para encontrar el siguiente announcement_datetime Para un indicador elegido, entonces llama a los anuncios de coincidencia punto final exactamente cuando la nueva impresión debe estar disponible.

Los requisitos previos

  • ¿ Qué ? La clave de la API de FXMacroData para las monedas distintas del USD; la programación en USD es pública
  • Python 3.9+ o Node.js 18+
  • El requests paquete para el ejemplo de Python
  • Familiaridad básica con las marcas de tiempo Unix y la programación UTC

¿Por qué el horario en lugar de la encuesta?

La encuesta cada pocos minutos es simple, pero desperdicia solicitudes e introduce un retraso evitable alrededor del segundo de lanzamiento exacto. El punto final del calendario de producción le da el próximo tiempo de publicación programado directamente, por lo que puede dormir hasta justo antes del evento y hacer una solicitud de seguimiento específica.

Flujo de trabajo básico

  1. Llama . /api/v1/calendar/{currency} con una opción . indicator El filtro.
  2. Lee las de la siguiente fila. announcement_datetime- ¿ Qué ?
  3. Duerme hasta justo antes de la hora UTC.
  4. Trae el . /api/v1/announcements/{currency}/{indicator}- ¿ Qué ?
  5. Lea la última observación de los regresados data Array, luego programa el próximo evento.

Paso 1 - Comprender la respuesta del calendario

El calendario de lanzamiento devuelve un objeto JSON con un data Cada fila incluye el slug de lanzamiento y su marca de tiempo UTC programada.

curl "https://fxmacrodata.com/api/v1/calendar/usd?indicator=inflation"

Forma de respuesta:

{
  "currency": "USD",
  "indicator": "inflation",
  "data": [
    {
      "announcement_datetime": 1773077400,
      "release": "inflation"
    }
  ]
}

Para las monedas que no sean USD, mantenga la misma ruta y añada api_key Si consulta un calendario de divisas más amplio sin un filtro de indicadores, algunas filas también pueden incluir metadatos de enrutamiento como endpoint_family ¿ Qué ? endpoint_path- ¿ Qué ?


Paso 2 - Encuentra la próxima fecha de lanzamiento

El asistente de abajo pide al calendario de producción un solo indicador y devuelve la primera marca de tiempo futura.

import time
import requests

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

def next_release(currency: str, indicator: str, api_key: str | None = None) -> float | None:
    url = f"{BASE}/calendar/{currency}"
    params = {"indicator": indicator}
    if api_key:
        params["api_key"] = api_key

    response = requests.get(url, params=params, timeout=10)
    response.raise_for_status()

    now = time.time()
    for row in response.json().get("data", []):
        ts = row.get("announcement_datetime")
        if row.get("release") == indicator and ts and float(ts) > now:
            return float(ts)
    return None

Paso 3 - Obtener los datos publicados en el momento adecuado

Cuando llegue la marca de tiempo, llame a los anuncios correspondientes punto final y lea la observación más reciente de los devueltos data - ¿Qué es eso?

def wait_and_fetch(currency: str, indicator: str, api_key: str | None = None) -> dict | None:
    release_ts = next_release(currency, indicator, api_key)
    if release_ts is None:
        print(f"No upcoming release found for {currency}/{indicator}.")
        return None

    wake_at = release_ts - 2
    time.sleep(max(0.0, wake_at - time.time()))

    url = f"{BASE}/announcements/{currency}/{indicator}"
    params = {"api_key": api_key} if api_key else {}
    response = requests.get(url, params=params, timeout=10)
    response.raise_for_status()
    return response.json()
Consejo: Despertando 1-5 segundos antes es generalmente suficiente para absorber el sesgo del reloj y la latencia de la red sin volver a la encuesta continua.

Paso 4 - Construir un bucle continuo

import time
import requests

BASE = "https://fxmacrodata.com/api/v1"
API_KEY = None
CURRENCY = "usd"
INDICATOR = "inflation"

def on_release(payload: dict) -> None:
    rows = payload.get("data", [])
    latest = rows[-1] if rows else {}
    print(
        "New release:",
        latest.get("date"),
        "value=", latest.get("val"),
        "announced_at=", latest.get("announcement_datetime"),
    )

while True:
    release_ts = next_release(CURRENCY, INDICATOR, API_KEY)
    if release_ts is None:
        print("No release found in the current calendar window. Retrying in 24 hours.")
        time.sleep(86_400)
        continue

    sleep_seconds = max(0.0, release_ts - 2 - time.time())
    print(f"Next {CURRENCY.upper()} {INDICATOR} release in {sleep_seconds / 3600:.2f}h")
    time.sleep(sleep_seconds)

    payload = wait_and_fetch(CURRENCY, INDICATOR, API_KEY)
    if payload:
        on_release(payload)

    time.sleep(5)

La breve pausa posterior a la liberación da al sistema tiempo para adelantar el evento programado antes de la siguiente consulta de calendario.


Paso 5 - Escala a varios relojes

Para seguir varios indicadores, ejecute un programador por par. Utilice las babosas de indicadores canónicos en todo el calendario y las rutas de anuncios permanezcan alineadas.

WATCHES = [
    {"currency": "usd", "indicator": "inflation"},
    {"currency": "usd", "indicator": "gdp"},
    {"currency": "aud", "indicator": "policy_rate"},
    {"currency": "gbp", "indicator": "unemployment"},
]

Para obtener más información sobre las búsquedas de seguimiento, véase Tasa de política del AUD¿ Qué ? Desempleo en GBP, y el resto del índice de documentos de anuncio.


Paso 6 - Variante JavaScript / Node.js

El mismo patrón se traduce directamente a Node.js: consulta el calendario con un filtro de indicadores, descansa hasta que la marca de tiempo devuelta, luego busca la ruta de anuncios correspondiente.

const BASE = "https://fxmacrodata.com/api/v1";

async function nextRelease(currency, indicator, apiKey) {
  const url = new URL(`${BASE}/calendar/${currency}`);
  url.searchParams.set("indicator", indicator);
  if (apiKey) url.searchParams.set("api_key", apiKey);

  const response = await fetch(url);
  if (!response.ok) throw new Error(`Calendar request failed: ${response.status}`);

  const payload = await response.json();
  const now = Date.now() / 1000;
  return payload.data.find((row) => row.release === indicator && row.announcement_datetime > now) ?? null;
}

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

  const response = await fetch(url);
  if (!response.ok) throw new Error(`Announcement request failed: ${response.status}`);
  return response.json();
}

Si necesita soportar una cola, cron worker, o temporizador sin servidor, mantenga el mismo patrón de dos pasos: calendario para el tiempo, anuncios para valores.

Blogroll

AI Answer-Ready

Key Facts

Page
How To Schedule With Release Calendar
Section
Articles
Canonical URL
https://fxmacrodata.com/es/articulos/how-to-schedule-with-release-calendar
Source
FXMacroData editorial and official publisher references
Last Updated
2026-06-15 11:01 UTC

Provenance And Trust

Cite the canonical URL and source field above. Where available, this page maps to official publisher releases and timestamped updates.

Quick Q&A

What is this page about? This page explains How To Schedule With Release Calendar with directly usable context for trading, research, and API workflows.

What source should be cited? Use the canonical URL and the listed source field; cite official publisher references when available.

How fresh is this content? The last updated value above reflects the page metadata or latest available data timestamp.

Can this be used in AI assistants? Yes. This section is intentionally structured for retrieval and citation in chat assistants.

Prompt Packs

Use these in ChatGPT, Claude, Gemini, Mistral, Perplexity, or Grok for consistent source-aware outputs.