Automatización·

Una API de calendario económico gratuita para bots de trading

De dónde puede sacar un robot de trading el calendario económico: las fuentes que usa la gente, qué falla en cada una y una API gratuita y sin clave pensada para consultas periódicas desde Expert Advisors, cBots, Python y JavaScript.

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

FuenteCostoQué obtienesQué falla
Archivo semanal de Forex Factory (ff_calendar_thisweek.json, también en XML y CSV)GratisLa semana en curso, con impacto y previsiónDos 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)GratisEl calendario completo dentro del terminalSolo MT5; algunos brókeres no lo transmiten
Scraping de una web de calendarioGratis hasta que deja de serloLo que muestre la páginaCambios de diseño, protección antibots, condiciones de uso
API de datos de mercado de pagoDesde decenas de dólares al mesHistorial largo, muchos paísesExcesivas y demasiado caras para saber «¿hay noticias en 30 minutos?»
API privadas pequeñasPlanes gratuitos con claveA menudo buenasDetrá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:

  1. El próximo día o dos, no el próximo año. Un filtro mira unas horas hacia adelante.
  2. Filtrado en el servidor: solo las divisas que opera el bot y solo el impacto que le interesa. Unos pocos kilobytes, no un megabyte.
  3. Marcas de tiempo Unix en UTC. Cualquier plataforma sabe comparar dos enteros; a nadie le gusta procesar fechas en MQL.
  4. 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.
  5. Pensado para consultas periódicas (polling). Que cientos de robots pregunten cada 15 minutos debería ser tráfico normal, no un abuso.
  6. 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.
  7. 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ámetroValoresPredeterminado
currencyCualquiera de USD, EUR, GBP, JPY, AUD, NZD, CAD, CHF, CNY, separadas por comasLas nueve
impacthigh, medium, low, holiday, separados por comas, o allhigh
daysDe 1 a 30 días hacia adelante; la ventana empieza siempre 6 horas antes de la hora actual1
formatjson o csvjson

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"

🔌 Plataforma por plataforma

PlataformaCómoCódigo
MetaTrader 4WebRequest() con https://showmytrades.com en la lista de URL permitidasUn solo archivo include, SMT_NewsFilter.mqh
MetaTrader 5El mismo archivo include, o el calendario integradoIntegrado 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 cBotsUn cBot completo en C#
Python, Node, cualquier cosa con HTTPEl endpoint de arribaLos fragmentos de esta página
Un asistente de IA (Claude, ChatGPT)La herramienta get_economic_calendar del servidor MCP, sin clavePregunta «¿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


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.