Una API de calendario económico gratuita para bots de trading
Toda estrategia automatizada acaba haciéndose la misma pregunta: ¿hay noticias en la próxima media hora? Para responderla hace falta un calendario económico que una máquina pueda leer, y eso resulta más difícil de encontrar que el propio calendario. Casi todos son páginas web. Los pocos feeds que existen tienen límites de uso, son de pago o desaparecen sin aviso.
Esta guía resume esa búsqueda y presenta el endpoint que acabamos construyendo y abriendo a todo el mundo.
🗺️ De dónde sacan hoy el calendario los bots
| Fuente | Costo | Qué obtienes | Qué falla |
|---|---|---|---|
Archivo semanal de Forex Factory (ff_calendar_thisweek.json, también en XML y CSV) | Gratis | La semana en curso, con impacto y previsión | Dos descargas cada cinco minutos por dirección IP: un VPS con muchos terminales llega al límite; el archivo no trae el dato publicado |
Calendario MT5 del bróker (funciones Calendar* de MQL5) | Gratis | El calendario completo dentro del terminal | Solo MT5; algunos brókeres no lo transmiten |
| Scraping de una web de calendario | Gratis hasta que deja de serlo | Lo que muestre la página | Cambios de diseño, protección antibots, condiciones de uso |
| API de datos de mercado de pago | Desde decenas de dólares al mes | Historial largo, muchos países | Excesivas y demasiado caras para saber «¿hay noticias en 30 minutos?» |
| API privadas pequeñas | Planes gratuitos con clave | A menudo buenas | Detrás hay una sola persona; las claves y los límites cambian |
Ninguna de estas opciones está mal. Simplemente, cada una falla de una manera que un robot que opera sin supervisión en un VPS no detecta hasta que ya ha operado en plena decisión de tasas de interés.
🎯 Lo que necesita un bot
Si reduces la pregunta a lo esencial, los requisitos son pocos:
- El próximo día o dos, no el próximo año. Un filtro mira unas horas hacia adelante.
- Filtrado en el servidor: solo las divisas que opera el bot y solo el impacto que le interesa. Unos pocos kilobytes, no un megabyte.
- Marcas de tiempo Unix en UTC. Cualquier plataforma sabe comparar dos enteros; a nadie le gusta procesar fechas en MQL.
- Un reloj fiable. Los relojes del propio robot son una incógnita: la hora del bróker con un desfase desconocido, un VPS en una zona horaria desconocida. El calendario debería decir qué hora es ahora, para que el robot compare sobre la misma base.
- Pensado para consultas periódicas (polling). Que cientos de robots pregunten cada 15 minutos debería ser tráfico normal, no un abuso.
- Sin clave ni cuenta. Una clave es una cosa más que puede quedar expuesta, que hay que rotar y a la que hay que dar soporte.
- Accesible desde cualquier plataforma, también desde las que restringen el acceso a la red.
🔓 El endpoint
GET https://showmytrades.com/api/public/calendar/v1?currency=EUR,USD&impact=high&days=1
| Parámetro | Valores | Predeterminado |
|---|---|---|
currency | Cualquiera de USD, EUR, GBP, JPY, AUD, NZD, CAD, CHF, CNY, separadas por comas | Las nueve |
impact | high, medium, low, holiday, separados por comas, o all | high |
days | De 1 a 30 días hacia adelante; la ventana empieza siempre 6 horas antes de la hora actual | 1 |
format | json o csv | json |
Cada evento trae ts (segundos Unix, UTC), time (ISO 8601), currency, impact, title, forecast, previous y actual, además de un id estable que se mantiene aunque cambie la fecha, un status (scheduled; moved, con la hora anterior en moved_from; tentative) y un confidence que indica si la fecha la confirma el organismo o el banco central que publica el dato (official) o la coincidencia entre varios calendarios; un feed de cambios aparte enumera lo que se movió o se canceló desde tu última descarga. Cada respuesta dice además qué hora es ahora en UTC, en server_time: ese es el reloj con el que comparar ts, en lugar del reloj del bróker o del VPS. Si solo quieres la hora, GET https://showmytrades.com/api/public/time la devuelve sola y nunca sale de la caché. Las respuestas se guardan en caché 15 minutos y llevan un ETag; el límite es de 600 solicitudes por minuto por dirección IP. Todo está en la página de referencia, incluido un formato CSV pensado para que StringSplit() de MQL no pueda equivocarse.
Tres llamadas, en tres lenguajes:
curl "https://showmytrades.com/api/public/calendar/v1?currency=USD&impact=high,medium&days=7&format=csv"
import requests
events = requests.get(
"https://showmytrades.com/api/public/calendar/v1",
params={"currency": "EUR,USD", "impact": "high", "days": 2},
timeout=10,
).json()["events"]
next_release = min(events, key=lambda e: e["ts"]) if events else None
const res = await fetch('https://showmytrades.com/api/public/calendar/v1?currency=GBP&impact=high&days=1')
const { events } = await res.json()
const soon = events.filter(e => Math.abs(e.ts * 1000 - Date.now()) < 30 * 60 * 1000)
🔌 Plataforma por plataforma
| Plataforma | Cómo | Código |
|---|---|---|
| MetaTrader 4 | WebRequest() con https://showmytrades.com en la lista de URL permitidas | Un solo archivo include, SMT_NewsFilter.mqh |
| MetaTrader 5 | El mismo archivo include, o el calendario integrado | Integrado o API, con los dos fragmentos de código |
| cTrader (escritorio y nube) | Un WebSocket en el puerto 25345, porque cTrader Cloud bloquea el HTTP de los cBots | Un cBot completo en C# |
| Python, Node, cualquier cosa con HTTP | El endpoint de arriba | Los fragmentos de esta página |
| Un asistente de IA (Claude, ChatGPT) | La herramienta get_economic_calendar del servidor MCP, sin clave | Pregunta «¿qué noticias de alto impacto del USD hay esta semana?» |
El caso de cTrader es el que justifica el WebSocket: un cBot en la nube no puede hacer ninguna solicitud HTTP, y la mayoría de los usuarios de cTrader opera en la nube. El socket admite los mismos cuatro parámetros y devuelve el mismo CSV.
🧭 Cómo diseñar el filtro
La API responde al cuándo. Qué hacer lo decide la estrategia, y las opciones habituales son estas:
- Ventana. Treinta minutos antes y después de una publicación de alto impacto es lo más común. Los scalpers la amplían después del dato; los sistemas swing a veces solo bloquean las entradas en el minuto de la publicación.
- Qué divisas. Las dos del par que se opera. El oro y los índices suelen vigilar solo el
USD. - Posiciones abiertas. Bloquear las entradas nuevas es la mitad fácil. Cerrar o acercar los stops antes de una publicación es una decisión de estrategia, con sus propios costos.
- Qué pasa si algo falla. Si la descarga falla y el bot se queda sin calendario, ¿debe operar o esperar? Decídelo de forma explícita; el código de ejemplo sigue operando, y lo dice.
⚖️ Lo que la API no es
Es un calendario de publicaciones, elaborado a partir de fuentes públicas y servido tal cual. A veces las publicaciones se aplazan o se cancelan, los anuncios por sorpresa por definición no aparecen, y el nivel de impacto es una clasificación, no una predicción del movimiento. Es información para construir un filtro, no una señal.
❓ Preguntas frecuentes
¿De verdad es gratis, también para robots comerciales? Sí. Sin clave, sin cuenta, sin planes. Se agradece una mención, Economic calendar by ShowMyTrades con enlace a la página del calendario, pero nunca es obligatoria.
¿Cada cuánto debería llamarla un bot?
Cada 15 minutos. Es lo que dura la caché, y el calendario no cambia más rápido. Con If-None-Match, un calendario sin cambios no cuesta nada.
¿En qué zona horaria están las horas?
En UTC, siempre. ts es tiempo Unix en segundos; time es el mismo instante en ISO 8601 con una Z. Y como un robot rara vez sabe qué hora es (la hora del bróker con un desfase desconocido, un VPS en una zona desconocida), cada respuesta trae server_time, la hora UTC actual: calcula una vez por descarga la diferencia con tu propio reloj y la ambigüedad desaparece.
¿Puedo obtener el historial para hacer el backtest de un filtro de noticias? Con este endpoint, no: la ventana llega seis horas hacia atrás y hasta 30 días hacia adelante. Los calendarios históricos para backtesting son otro producto, con otras condiciones.
¿De dónde salen los datos? De fuentes públicas de calendario económico, combinadas y normalizadas por ShowMyTrades. Esos mismos datos alimentan la página del calendario de este sitio.
🔗 Artículos relacionados
- Referencia de la API del calendario económico
- Cómo agregar un filtro de noticias a tu Expert Advisor de MT4
- Filtro de noticias en MT5: ¿calendario integrado o API?
- Cómo agregar un filtro de noticias a un cBot de cTrader
Un robot que sabe cuándo quedarse fuera es un robot cuyo historial puedes mostrar. Conéctalo gratis y las medias horas tranquilas alrededor de las noticias se verán en el gráfico de drawdown.
Cómo agregar un filtro de noticias a un cBot de cTrader (también en la nube)
cTrader no ofrece a los cBots ninguna API de calendario, y cTrader Cloud bloquea las solicitudes HTTP. Aquí tienes un filtro de noticias que funciona en el escritorio y en la nube, con un calendario gratuito por WebSocket y el código C# completo.
Guía completa para hacer seguimiento de tu rendimiento en el trading (2026)
La mayoría de los traders no sabe si opera bien. Las métricas que importan, cómo leerlas y qué muestran las cuentas reales sobre cada una.