Eine kostenlose Wirtschaftskalender-API für Trading-Bots
Früher oder später stellt jede automatisierte Strategie dieselbe Frage: Kommen in der nächsten halben Stunde News? Dafür braucht sie einen maschinenlesbaren Wirtschaftskalender, und der ist schwerer zu finden als der Kalender selbst. Die meisten Kalender sind schlicht Webseiten. Die wenigen Feeds, die es gibt, sind limitiert, kostenpflichtig oder verschwinden ohne Vorwarnung.
Diese Anleitung ist die Kurzfassung dieser Suche, samt dem Endpunkt, den wir am Ende selbst gebaut und für alle geöffnet haben.
🗺️ Woher Bots den Kalender heute beziehen
| Quelle | Kosten | Was du bekommst | Wo es hakt |
|---|---|---|---|
Wochendatei von Forex Factory (ff_calendar_thisweek.json, auch als XML und CSV) | Kostenlos | Die laufende Woche, Wichtigkeit und Prognose | Zwei Downloads alle fünf Minuten pro IP-Adresse: Ein VPS mit vielen Terminals stößt an das Limit; tatsächliche Werte fehlen in der Datei |
MT5-Kalender des Brokers (die MQL5-Funktionen Calendar*) | Kostenlos | Der vollständige Kalender direkt im Terminal | Nur MT5; manche Broker leiten ihn nicht weiter |
| Scraping einer Kalender-Website | Kostenlos, bis es plötzlich etwas kostet | Alles, was die Seite anzeigt | Layout-Änderungen, Bot-Schutz, Nutzungsbedingungen |
| Kostenpflichtige Marktdaten-APIs | Ab einigen Dutzend Dollar im Monat | Lange Historie, viele Länder | Überdimensioniert und zu teuer für die Frage „Kommen in 30 Minuten News?“ |
| Kleine private APIs | Kostenlose Tarife mit Schlüssel | Oft gut | Eine einzelne Person steckt dahinter; Schlüssel und Limits ändern sich |
Falsch ist keine dieser Quellen. Jede scheitert nur auf ihre eigene Art, und ein Roboter, der unbeaufsichtigt auf einem VPS läuft, merkt davon nichts, bis er mitten durch einen Zinsentscheid gehandelt hat.
🎯 Was ein Bot wirklich braucht
Reduziert man die Frage aufs Wesentliche, bleiben nur wenige Anforderungen:
- Die nächsten ein, zwei Tage, nicht das nächste Jahr. Ein Filter schaut nur Stunden voraus.
- Auf dem Server gefiltert: nur die Währungen, die der Bot handelt, und nur die Wichtigkeit, die ihn interessiert. Ein paar Kilobyte statt eines Megabytes.
- Unix-Zeitstempel in UTC. Zwei Ganzzahlen vergleichen kann jede Plattform, und Datumsangaben in MQL zu parsen macht niemandem Spaß.
- Eine Uhr, auf die er sich verlassen kann. Die Uhrzeit, die der Roboter selbst kennt, ist nur geschätzt: Broker-Zeit mit unbekanntem Versatz, ein VPS in einer unbekannten Zeitzone. Der Kalender sollte sagen, wie spät es jetzt ist, damit der Roboter Gleiches mit Gleichem vergleicht.
- Für regelmäßige Abfragen gebaut. Hunderte Roboter, die alle 15 Minuten nachfragen, sollten normaler Datenverkehr sein und kein Missbrauch.
- Kein Schlüssel, kein Konto. Ein Schlüssel ist eine Sache mehr, die in falsche Hände geraten kann und die man regelmäßig erneuern und pflegen muss.
- Von jeder Plattform aus erreichbar, auch von denen, die den Netzwerkzugriff einschränken.
🔓 Der Endpunkt
GET https://showmytrades.com/api/public/calendar/v1?currency=EUR,USD&impact=high&days=1
| Parameter | Werte | Standard |
|---|---|---|
currency | Eine oder mehrere aus USD, EUR, GBP, JPY, AUD, NZD, CAD, CHF, CNY, durch Kommas getrennt | Alle neun |
impact | high, medium, low, holiday, durch Kommas getrennt, oder all | high |
days | 1 bis 30 Tage im Voraus; das Fenster beginnt immer 6 Stunden in der Vergangenheit | 1 |
format | json oder csv | json |
Jedes Ereignis hat ts (Unix-Sekunden, UTC), time (ISO 8601), currency, impact, title, forecast, previous und actual. Dazu kommen eine stabile id, die auch eine Terminverschiebung übersteht, ein status (scheduled, moved mit der alten Uhrzeit in moved_from, tentative) und eine confidence: Sie gibt an, ob der Termin von der Behörde oder Zentralbank bestätigt ist, die die Zahl veröffentlicht (official), oder durch übereinstimmende Kalender. Ein eigener Änderungs-Feed listet auf, was seit deinem letzten Download verschoben oder abgesagt wurde. Jede Antwort nennt außerdem die aktuelle Uhrzeit in UTC als server_time: Mit dieser Uhr vergleichst du ts, nicht mit der des Brokers oder des VPS. Brauchst du nur die Uhr, liefert GET https://showmytrades.com/api/public/time sie allein, nie aus dem Cache. Antworten werden 15 Minuten lang gecacht und enthalten ein ETag; das Limit liegt bei 600 Anfragen pro Minute und IP-Adresse. Alles Weitere steht auf der Referenzseite, auch ein CSV-Aufbau, den StringSplit() in MQL gar nicht falsch zerlegen kann.
Drei Aufrufe in drei Sprachen:
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)
🔌 Nach Plattform
| Plattform | Wie | Code |
|---|---|---|
| MetaTrader 4 | WebRequest() mit https://showmytrades.com in der Liste der erlaubten URLs | Eine Include-Datei, SMT_NewsFilter.mqh |
| MetaTrader 5 | Dieselbe Include-Datei oder der eingebaute Kalender | Eingebaut oder per API, mit beiden Code-Snippets |
| cTrader (Desktop und Cloud) | Ein WebSocket auf Port 25345, weil die cTrader Cloud HTTP aus cBots blockiert | Ein vollständiger cBot in C# |
| Python, Node, alles mit HTTP | Der Endpunkt oben | Die Code-Snippets auf dieser Seite |
| Ein KI-Assistent (Claude, ChatGPT) | Das Tool get_economic_calendar des MCP-Servers, ohne Schlüssel | Frag: „Welche USD-News mit hoher Wichtigkeit kommen diese Woche?“ |
Den WebSocket gibt es wegen cTrader: Ein cBot in der Cloud kann überhaupt keine HTTP-Anfrage stellen, und die meisten cTrader-Nutzer arbeiten in der Cloud. Der Socket versteht dieselben vier Parameter und liefert dasselbe CSV.
🧭 Den Filter selbst gestalten
Die API beantwortet das Wann. Was dann passiert, entscheidet die Strategie, und meist geht es um diese Punkte:
- Zeitfenster. 30 Minuten vor und nach einer Veröffentlichung mit hoher Wichtigkeit sind der übliche Standard. Scalper lassen das Fenster danach länger offen; Swing-Systeme sperren manchmal nur Einstiege in der Minute der Veröffentlichung.
- Welche Währungen. Beide Seiten des gehandelten Paars. Gold und Indizes achten meist nur auf
USD. - Offene Positionen. Neue Einstiege zu sperren ist die leichte Hälfte. Positionen vor einer Veröffentlichung zu schließen oder die Stops enger zu ziehen ist eine Entscheidung der Strategie, mit eigenen Kosten.
- Verhalten bei Ausfällen. Scheitert der Download und hat der Bot keinen Kalender: Soll er handeln oder warten? Entscheide das bewusst; der Beispielcode handelt weiter und sagt das auch offen.
⚖️ Was die API nicht ist
Sie ist ein Terminplan, zusammengestellt aus öffentlichen Kalenderquellen und unverändert ausgeliefert. Veröffentlichungen werden manchmal verschoben oder abgesagt, überraschende Ankündigungen stehen naturgemäß nicht darin, und die Wichtigkeit ist eine Einstufung, keine Prognose der Kursbewegung. Du bekommst Informationen, mit denen du einen Filter baust, kein Signal.
❓ Häufige Fragen
Ist das wirklich kostenlos, auch für kommerzielle Roboter? Ja. Kein Schlüssel, kein Konto, keine Tarifstufe. Über einen Quellenhinweis „Economic calendar by ShowMyTrades“ mit Link auf die Kalenderseite freuen wir uns, Pflicht ist er nie.
Wie oft sollte ein Bot abfragen?
Alle 15 Minuten. So lange gilt der Cache, und schneller ändert sich der Kalender nicht. Mit If-None-Match kostet ein unveränderter Kalender nichts.
In welcher Zeitzone sind die Uhrzeiten?
Immer in UTC. ts ist Unix-Zeit in Sekunden, time derselbe Zeitpunkt in ISO 8601 mit einem Z. Und weil ein Roboter selten weiß, wie spät es bei ihm selbst ist (Broker-Zeit mit unbekanntem Versatz, ein VPS in einer unbekannten Zeitzone), enthält jede Antwort server_time, die aktuelle UTC-Zeit: Berechne bei jedem Download einmal den Versatz zu deiner eigenen Uhr, und die Unklarheit ist beseitigt.
Bekomme ich auch vergangene Termine, um einen News-Filter zu backtesten? Nicht über diesen Endpunkt: Das Fenster reicht sechs Stunden zurück und bis zu 30 Tage voraus. Historische Kalender für Backtests sind ein anderes Produkt mit anderen Bedingungen.
Woher stammen die Daten? Aus öffentlichen Wirtschaftskalender-Quellen, die ShowMyTrades zusammenführt und vereinheitlicht. Dieselben Daten stecken auch hinter der Kalenderseite auf dieser Website.
🔗 Weiterführende Artikel
- Referenz der Wirtschaftskalender-API
- So baust du einen News-Filter in deinen MT4-Expert-Advisor ein
- News-Filter in MT5: eingebauter Kalender oder API
- News-Filter in einen cTrader-cBot einbauen
Ein Roboter, der weiß, wann er besser draußen bleibt, hat einen Track Record, den man zeigen kann. Verbinde sein Konto kostenlos, dann sind die ruhigen halben Stunden rund um die News im Drawdown-Chart zu sehen.
News-Filter in einen cTrader-cBot einbauen (Cloud inklusive)
cTrader bietet cBots keine Kalender-API, und die cTrader Cloud blockiert HTTP-Anfragen. Dieser News-Filter funktioniert am Desktop und in der Cloud: mit einem kostenlosen Kalender über WebSocket und dem vollständigen C#-Code.
Der komplette Leitfaden zum Tracking deiner Trading-Performance (2026)
Die meisten Trader wissen nicht, ob sie wirklich gut sind. Welche Kennzahlen zählen, wie du sie liest und was echte Konten zu jeder einzelnen zeigen.