Vom Neuling zum Experten: Animierte Nachrichtenüberschrift mit MQL5 (II)
Inhalt:
- Einführung
- Übersicht
- Integration der externen Nachrichten-API
- Tests
- Schlussfolgerung
- Wichtige Lektionen
- Anlagen
Einführung
In dieser Diskussion bauen wir auf der Grundlage des vorangegangenen Artikels auf, in dem wir einen horizontalen Rollbalken im Chart erstellt haben, um anstehende Nachrichtenereignisse zusammen mit Countdown-Timern anzuzeigen, die die verbleibende Zeit bis zu jeder Veröffentlichung in der Reihenfolge ihrer Bedeutung angeben. Wir haben diesen Artikel mit einem Platzhalter für einen Live-Newsfeed abgeschlossen – und jetzt sind wir bereit, diese Funktion zum Leben zu erwecken.

Die erste Version des New Headline EA (keine API-Integration, nur Ereignisse des MQL5-Wirtschaftskalender).
Heute konzentrieren wir uns auf die Integration von Schlagzeilen aus externen API-Quellen, um die Herausforderung der Zugänglichkeit von Nachrichten innerhalb der MetaTrader 5-Plattform zu lösen. Wir werden uns speziell auf Schlagzeilen konzentrieren – prägnante Nachrichtentitel, die Händlern einen schnellen Überblick über das Geschehen in der Finanzwelt geben. So können sie sich auf dem Laufenden halten und entscheiden, ob sie über einen Webbrowser oder die integrierte Nachrichten-Registerkarte des Terminals tiefer in die Materie einsteigen wollen.
Die wichtigsten Erkenntnisse aus diesem Artikel:
- Erkunden Sie verschiedener Quellen für Finanzmarktnachrichten
- Erfahren Sie, wie Sie auf externe Nachrichten-APIs zugreifen können
- Abrufen und Parsen von Nachrichtendaten für die Nutzbarkeit in MQL5
- Beherrschen Sie die Funktion WebRequest()
- Integrieren Sie externe APIs nahtlos in MQL5-basierte Tools
Um diese Integration zu unterstützen, habe ich mir die Mühe gemacht, verfügbare Nachrichten-APIs zu recherchieren und eine Liste für Sie zusammenzustellen. Die meisten dieser Dienste bieten kostenlose Zugangsstufen mit Nutzungsbeschränkungen, die für Bildungs- und Testzwecke immer noch ausreichend sind. Die folgende Tabelle enthält fünf empfohlene Nachrichtenquellen, aber es gibt noch viele weitere, die Sie erkunden können.
| Anbieter | Grenzwerte | Besondere Merkmale | Umfang der Daten |
|---|---|---|---|
| NewsAPI.org | 500 Anfragen/Tag | Suchfilter (Stichwörter, Daten, Verlage, Sprachen), Boolesche Operatoren, Unterstützung mehrerer Sprachen (14 Sprachen) | Globale allgemeine Nachrichten (über 150.000 Quellen in 55 Ländern) |
| Marketaux | 5 API-Aufrufe/Abfrage | Extraktion von Entitäten (Aktien/Unternehmen), Stimmungsbewertungen pro Entität, KI-gestützte Finanznachrichtenanalyse | Finanznachrichten mit unternehmensspezifischen Kennziffern |
| Alpha Vantage | 500 Anfragen/Tag, 5 Anfragen/Minute | Mehr als 60 Wirtschaftsindikatoren (BIP, Inflation), technische/fundamentale Daten, Marktstimmungsanalysen | Aktien, Devisen, Kryptowährungen, ETFs |
| Finnhub | 60 Anrufe/Minute | WebSocket-Streaming in Echtzeit, Wirtschaftskalender, Ertragsberichte, KI-Stimmungsanalyse | Marktnachrichten, Wirtschaftsindikatoren, Unternehmensanmeldungen |
| EODHD | 20 Anrufe/Tag (kostenloser Tarif) | Tägliche Sentiment-Scores (-1 bis 1), 50+ Themen-Tags (Gewinne, IPOs), Volltext-Artikel mit Symbol-Filter | Aktien, ETFs, Devisen, Krypto Nachrichten |
Für dieses Projekt werden wir mit Alpha Vantage arbeiten, einem beliebten und nutzerfreundlichen API-Dienst, der für seine umfassenden Finanzdaten und einfachen Zugriffsmethoden bekannt ist. Seine gut dokumentierten Endpunkte und sein zuverlässiges kostenloses Tier machen es zu einer hervorragenden Wahl für die Integration von Echtzeit-Schlagzeilen in unseren EA.
Im nächsten Abschnitt skizzieren wir den Ablauf unserer Diskussion und gehen dabei auf wichtige Schritte wie die Beschaffung von API-Schlüsseln, die Durchführung von Webanfragen, das Parsen von JSON-Antworten und die Anzeige der Nachrichtendaten im Chart ein. Danach geht es an die praktische Umsetzung, um diese Funktionalität zum Leben zu erwecken.
Übersicht
Um die Diskussion zu erleichtern, beginnen wir mit einer kurzen Wiederholung einiger Schlüsselbegriffe, die wir im Laufe dieses Projekts verwenden werden:- API (Anwendungsprogrammierschnittstelle): Eine Reihe von Regeln, die es einer Softwareanwendung ermöglichen, mit einer anderen zu interagieren. In unserem Fall ermöglicht es MetaTrader 5, Daten aus externen Quellen wie Alpha Vantage abzurufen.
- API-Dokumentation: Der offizielle Leitfaden des API-Anbieters, der die verfügbaren Endpunkte, Anfrageformate, Parameter und Antwortstrukturen erläutert.
- API-Schlüssel: Eine eindeutige Kennung, die vom API-Anbieter bereitgestellt wird und den Zugang zu seinen Diensten ermöglicht. Es hilft bei der Verwaltung der Nutzung und gewährleistet eine sichere Kommunikation.
- JSON (JavaScript Object Notation): Es ist ein leichtgewichtiges Datenaustauschformat, das für Menschen leicht zu lesen und zu schreiben und für Maschinen leicht zu analysieren und zu erzeugen ist. JSON wird häufig zur Übertragung von Daten zwischen einem Server und einer Web- oder Softwareanwendung verwendet, insbesondere in Web-APIs.
- Parsen: Der Prozess der Analyse von strukturierten Daten (wie JSON) und der Extraktion nützlicher Informationen daraus.
- WebRequest: Eine MQL5-Funktion, die dazu dient, HTTP-Anfragen vom Terminal an externe Server zu senden.
- Integration: Der Prozess des Verbindens und Kombinierens der API-Daten mit unserem Expert Advisor (EA), um nahtlos auf dem Chart zu arbeiten.
Da unser grundlegender Code – News Headline EA – bereits vorhanden ist, besteht der erste Schritt darin, einen API-Schlüssel von unserem ausgewählten Anbieter, Alpha Vantage, zu erhalten. Um Ihren API-Schlüssel zu erhalten, besuchen Sie die Alpha Vantage Website und melden Sie sich für ein kostenloses Konto an. Sie werden aufgefordert, grundlegende Informationen wie Ihren Namen, Ihre E-Mail-Adresse und den Verwendungszweck anzugeben. Nachdem Sie das Formular abgeschickt haben, wird Ihr API-Schlüssel sofort angezeigt.
Der nächste Schritt ist das Studium der von Alpha Vantage bereitgestellten API-Dokumentation. Dies wird uns helfen, das Anfrageformat, die verfügbaren Nachrichtenendpunkte und die Struktur der zurückgegebenen JSON-Daten zu verstehen. Sobald wir damit vertraut sind, können wir entwerfen, wie die Daten geparst und in unseren EA integriert werden sollen.
JSON-Code-Struktur von Alpha Vantage
Ich habe meinen API-Schlüssel für dieses Projekt bereits erhalten, und Vantage bietet eine breite Palette von Funktionen. Vorerst werden wir uns jedoch auf die Finanznachrichten konzentrieren.
Um die JSON-Antwort der API anzuzeigen, können Sie diesen Link verwenden.
Bevor wir die Logik für das Parsen von Schlagzeilen aus der Alpha Vantage API implementieren, können wir erkennen, dass jedes Nachrichtenelement in der JSON-Antwort mehrere Felder enthält, wie „title“, „summary“, “url“, und „time_published“. In der Anfangsphase des Entwurfs dieses EA legen wir jedoch Wert auf Einfachheit und visuelle Klarheit, indem wir uns nur auf die Extraktion des Feldes „title“ konzentrieren. Die Titel sind kurze, prägnante Beschreibungen, die eine Momentaufnahme des Nachrichteninhalts bieten, was gut zum Ziel von EA passt, einen schnellen, übersichtlichen Ticker zu erstellen. Indem wir uns nur auf den „title“ konzentrieren, reduzieren wir den Aufwand für das Parsen größerer Textblöcke und sorgen für ein klares, kompaktes Erscheinungsbild des Charts, das den Händlern hilft, ohne Ablenkung informiert zu bleiben. Nachfolgend finden Sie einen JSON-Codeausschnitt, der Ihnen hilft, die Struktur der zurückgegebenen Daten zu verstehen.
{
"items": "50",
"sentiment_score_definition": "x <= -0.35: Bearish; -0.35 < x <= -0.15: Somewhat-Bearish; -0.15 < x < 0.15: Neutral; 0.15 <= x < 0.35:
Somewhat_Bullish; x >= 0.35: Bullish",
"relevance_score_definition": "0 < x <= 1, with a higher score indicating higher relevance.",
"feed": [
{
"title": "How To Trade Tesla Today Using Technical Analysis - Tesla ( NASDAQ:TSLA ) ",
"url": "https://www.benzinga.com/markets/equities/25/06/45857951/how-to-trade-tesla-today-using-technical-analysis",
"time_published": "20250610T121929",
"authors": [
"RIPS"
],
"summary": "Good Morning Traders! In today's Market Clubhouse Morning Memo, we will discuss SPY, QQQ, AAPL, MSFT, NVDA, GOOGL, META, and TSLA.
Our proprietary formula, exclusive to Market Clubhouse, dictates these price levels. This dynamic equation takes into account price, volume, and options flow.",
"banner_image": "https://cdnwp-s3.benzinga.com/wp-content/uploads/2024/10/22181427/Paolo-and-Gali.jpg?optimize=medium&dpr=2&auto=webp&width=230",
"source": "Benzinga",
"category_within_source": "Trading",
"source_domain": "www.benzinga.com",
"topics": [
{
"topic": "Technology",
"relevance_score": "0.5"
},
{
"topic": "Financial Markets",
"relevance_score": "0.5855"
},
{
"topic": "Manufacturing",
"relevance_score": "0.5"
}
],
"overall_sentiment_score": 0.216021,
"overall_sentiment_label": "Somewhat-Bullish",
"ticker_sentiment": [
{
"ticker": "MSFT",
"relevance_score": "0.101012",
"ticker_sentiment_score": "0.303818",
"ticker_sentiment_label": "Somewhat-Bullish"
},
{
"ticker": "GOOG",
"relevance_score": "0.033751",
"ticker_sentiment_score": "0.075535",
"ticker_sentiment_label": "Neutral"
},
{
"ticker": "NVDA",
"relevance_score": "0.101012",
"ticker_sentiment_score": "0.346995",
"ticker_sentiment_label": "Somewhat-Bullish"
},
{
"ticker": "AAPL",
"relevance_score": "0.134402",
"ticker_sentiment_score": "0.077776",
"ticker_sentiment_label": "Neutral"
},
{
"ticker": "TSLA",
"relevance_score": "0.134402",
"ticker_sentiment_score": "0.111086",
"ticker_sentiment_label": "Neutral"
}
]
},Der geplante EA wird die Schlagzeilen einmal pro Börsentag abrufen und sie mit Hilfe des Canvas-Objekts in einer fortlaufenden Tickerleiste scrollen. Das Feld „title“ wird geparst und aus der rohen JSON-Zeichenkette herausgeschnitten, wodurch die Notwendigkeit einer vollständigen JSON-Deserialisierung umgangen wird, die in MQL5 ineffizient ist. Dadurch kann der EA Aktualisierungen in Echtzeit problemlos und zuverlässig durchführen. Da diese Titel von Natur aus kurz und auffällig sind, eignen sie sich ideal zum schnellen Überfliegen. Zu einem späteren Zeitpunkt könnten zusätzliche Felder wie „summary“ oder „url“ für detaillierte Ansichten oder Tooltips analysiert werden, aber die Verwendung von „title“ in diesem Stadium bietet eine schnelle Lösung mit geringer Latenz, die sich direkt in die bestehende visuelle und leistungsbezogene Struktur einfügt.
In den folgenden Abschnitten werden wir Sie durch jeden dieser Schritte führen – den Zugriff auf die API, die Verarbeitung der Daten und die Anzeige auf dem MetaTrader 5-Chart mit dem News Headline EA.
Integration der externen Nachrichten-API mit News Headline EA
Ziel ist es, relevante Schlagzeilen aus dem Finanzbereich dynamisch abzurufen und sie in einem flüssigen Echtzeit-Ticker auf dem Chart darzustellen. Dies steigert den Wert des EA erheblich, da die Händler direkt auf ihren Charts über die neuesten, die Stimmung beeinflussenden Schlagzeilen informiert werden, ohne die Plattform wechseln zu müssen. In dieser Anleitung wird genau erklärt, wie die einzelnen Teile der Implementierung funktionieren, was sie bewirken und warum wir sie auf diese Weise strukturieren.
Schritt 1: Hinzufügen des API-Schlüssel-Eingabefelds für die Nutzerkonfiguration
input string InpAlphaVantageKey = ""; // your Alpha Vantage API key
Hier definieren wir einen nutzerkonfigurierbaren Eingabeparameter namens InpAlphaVantageKey. Dies ermöglicht es den Nutzern, ihren persönlichen Alpha Vantage API-Schlüssel direkt in das EA-Einstellungsfeld einzufügen. Ohne einen gültigen Schlüssel können keine Nachrichtendaten abgerufen werden. Alpha Vantage gibt kostenlose API-Schlüssel mit Nutzungsbeschränkungen aus (in der Regel 500 Anfragen/Tag), sodass dieses Feld den Nutzern die Kontrolle über die Authentifizierung gibt, ohne dass die Anmeldedaten fest codiert werden müssen. Der Rest des Systems ist so konzipiert, dass das Abrufen von Nachrichten übersprungen wird, wenn dieser Wert leer ist, sodass die Stabilität auch dann gewährleistet ist, wenn der Nutzer vergisst, einen Schlüssel einzugeben.
Schritt 2: Deklaration von Zustandsvariablen für Überschriftenspeicher und Steuerungslogik
string newsHeadlines[]; // holds the extracted headline titles int totalNews = 0; // keeps track of how many headlines we’ve stored datetime lastNewsReload = 0; // helps ensure we fetch news only once per day
Diese Variablen bilden den Kern unseres Managementsystems der Nachrichten.
- newsHeadlines[] ist ein dynamisches String-Array, das geparste Nachrichtentitel aus der API-Antwort enthält. Jeder String steht für eine Schlagzeile.
- totalNews ist ein ganzzahliger Zähler, der aufzeichnet, wie viele Schlagzeilen wir gespeichert haben – dies ist wichtig für die Darstellung der richtigen Anzahl von Schlagzeilen im Chart.
- lastNewsReload wird verwendet, um eine tägliche Aktualisierungspolitik durchzusetzen. Alpha Vantage kann eine übermäßige Nutzung bestrafen, daher stellt diese Variable sicher, dass wir die Schlagzeilen nur einmal pro Tag abrufen, es sei denn, wir ändern diese Logik ausdrücklich. Außerdem werden so redundante Netzanfragen während derselben Handelssitzung vermieden.
Schritt 3: Abrufen von Nachrichtendaten von Alpha Vantage mit WebRequest
void FetchAlphaVantageNews() { if(StringLen(InpAlphaVantageKey) == 0) return;
Zunächst wird überprüft, ob der API-Schlüssel vom Nutzer eingegeben wurde. Wenn sie leer ist, wird die Funktion sofort beendet. Diese Prüfung verhindert unnötige Netzwerkaktivitäten und sorgt dafür, dass das System stabil und ruhig bleibt, bis es richtig konfiguriert ist. Außerdem wird vermieden, dass der API-Server aufgrund fehlerhafter Anfragen ungültige Ergebnisse zurückgibt oder Ratenbegrenzungsfehler auslöst.
Hier konstruieren wir einen normalisierten Datumswert für den Beginn des aktuellen Handelstages (Mitternacht Serverzeit). Dies wird zum Vergleich mit lastNewsReload verwendet, damit wir wissen, ob wir die Schlagzeilen des heutigen Tages bereits abgerufen haben. Indem wir diese Methode anstelle von rohen Zeitstempeln verwenden, stellen wir sicher, dass die Nachrichten nur einmal an jedem neuen Tag abgerufen werden, unabhängig davon, wie häufig der EA aufgerufen wird. Mit diesem Ansatz bleibt unsere API-Nutzung effizient und vorhersehbar.
MqlDateTime tm; TimeToStruct(TimeTradeServer(), tm); tm.hour = tm.min = tm.sec = 0; datetime today = StructToTime(tm); if(lastNewsReload == today) return; lastNewsReload = today;
Wir erstellen die URL der API-Anforderung dynamisch, indem wir den API-Schlüssel des Nutzers an den Basisendpunkt anhängen. Diese URL wird an WebRequest übergeben. Die Funktion NEWS_SENTIMENT wurde entwickelt, um JSON-formatierte Metadaten und Sentiments-Schlagzeilen aus mehreren glaubwürdigen Nachrichtenquellen zurückzugeben. Indem wir diese Zeichenfolge zur Laufzeit erstellen, machen wir unseren EA modular und API-Schlüssel-unabhängig.
string url = "https://www.alphavantage.co/query?function=NEWS_SENTIMENT&apikey=" + InpAlphaVantageKey;
In diesem Abschnitt werden die für die WebRequest-Funktion erforderlichen Parameter initialisiert:
char post[]; char response_data[]; string headers; int timeout = 5000; ResetLastError();
- post[] bleibt leer, da es sich um eine GET-Anfrage handelt, bei der kein Body-Inhalt gesendet wird.
- response_data[] ist der Ort, an dem die Rohbyte-Antwort des Servers gespeichert wird.
- headers bleibt ein leerer String, da die Alpha Vantage API keine nutzerdefinierten HTTP-Header für diesen Endpunkt benötigt.
- timeout ist auf 5000 Millisekunden eingestellt, um sicherzustellen, dass wir bei langsamen Verbindungen nicht zu lange hängen bleiben.
- ResetLastError() löscht alle vorherigen Fehlercodes, um sicherzustellen, dass jeder Fehler, den wir als Nächstes abfangen, tatsächlich von dieser Anfrage und nicht von etwas anderem herrührt.
int result = WebRequest("GET", url, headers, timeout, post, response_data, headers); if(result != 200) { Print("WebRequest failed with result: ", result, ", error: ", GetLastError()); return; }
Dieser Block führt die eigentliche HTTP-Anfrage aus. WebRequest gibt den HTTP-Statuscode zurück (z. B. 200 für Erfolg, 403 für verboten usw.). Wenn das Ergebnis nicht 200 ist, bedeutet dies, dass die Anfrage fehlgeschlagen ist oder blockiert wurde, sodass wir eine Diagnosemeldung mit dem Fehlercode ausgeben und vorzeitig beenden. Dies hilft uns bei der Diagnose von Verbindungs- oder Authentifizierungsproblemen, ohne dass der EA abstürzt oder Daten beschädigt werden.
Sobald wir bestätigen, dass die Anfrage erfolgreich war, wandeln wir das Byte-Array response_data[] in eine für Menschen lesbare Zeichenkette (resultStr) um. Diese Zeichenfolge enthält nun die vollständige JSON-Antwort von Alpha Vantage. Bevor wir mit der Extraktion der Schlagzeilen beginnen, leeren wir das Array newsHeadlines[], um alte Daten zu verwerfen und Platz für die Schlagzeilen des neuen Tages zu schaffen.
string resultStr = CharArrayToString(response_data, 0, WHOLE_ARRAY); ArrayResize(newsHeadlines, 0);
Wir richten unsere Parsing-Logik ein. Die Variable pos ist unser Scan-Zeiger in der JSON-Zeichenkette. Das Array keys[] enthält zwei gängige Variationen des Schlüssels, der jedem Überschriftentitel in der JSON-Antwort vorangestellt ist. Wir fügen sowohl Versionen mit als auch ohne Leerzeichen ein, um gegen kleinere Formatierungsänderungen in der API-Antwort gewappnet zu sein.
int pos = 0; const string keys[2] = { "\"title\": \"", "\"title\":\"" };
In dieser Schleife wird die JSON-Zeichenfolge durchsucht, um jeden Nachrichtentitel zu finden und zu extrahieren.
while(true) { int start = -1; for(int k=0;k<ArraySize(keys);k++) { start = StringFind(resultStr, keys[k], pos); if(start >= 0) { start += StringLen(keys[k]); break; } } if(start < 0) break; int end = StringFind(resultStr, "\"", start); if(end < 0) break; string title = StringSubstr(resultStr, start, end - start); title = Trim(title);
Wir:
- Suchen die nächste Taste „title“.
- Passen den Start an den aktuellen Anfang des eigentlichen Textinhalts an.
- Suchen nach dem Ende der in Anführungszeichen eingeschlossenen Titelzeichenfolge.
- Extrahieren und bereinigen die Überschrift mit Trim(), um umgebende Leerzeichen zu entfernen.
Dieser einfache Ansatz von passenden Mustern macht einen vollständigen JSON-Parser überflüssig und ist für unseren begrenzten und spezifischen Anwendungsfall effizient genug.
Jedes Mal, wenn wir eine Schlagzeile finden, erweitern wir dynamisch das Array newsHeadlines[] und fügen den neuen Titel hinzu. Sobald alle Titel verarbeitet wurden, aktualisieren wir totalNews, um die Anzahl der erfassten Einträge anzuzeigen. Damit haben wir eine klare Zahl, mit der wir später beim Darstellen der Überschriften arbeiten können.
int idx = ArraySize(newsHeadlines); ArrayResize(newsHeadlines, idx + 1); newsHeadlines[idx] = title; } totalNews = ArraySize(newsHeadlines);
Schritt 4: Zeichnen des scrollenden Nachrichtentickers im Chart
Hier bauen wir den visuellen Ticker auf, indem wir alle abgerufenen Schlagzeilen zu einem einzigen Lauftext zusammenfügen.
- Zur besseren Lesbarkeit fügen wir zwischen den Einträgen ein Trennzeichen „|“ ein.
- Wenn keine Schlagzeilen verfügbar sind, wird eine Platzhaltermeldung angezeigt, damit der Ticker aktiv bleibt.
- TextOut() rendert diese Zeichenkette auf der Leinwand mit einem bestimmten OffNews-Offset, um einen Bildlaufeffekt zu erzeugen.
- Die Zeile offNews -= InpNewsSpeed; bewirkt, dass der Text im Laufe der Zeit nach links verschoben wird, wodurch eine kontinuierliche Bewegung entsteht. Sobald es aus dem Sichtfeld verschwindet, setzen wir es in der Hauptzeichenschleife zurück.
string ticker = ""; for(int i=0;i<totalNews;i++) { ticker += newsHeadlines[i]; if(i < totalNews - 1) ticker += " | "; } if(totalNews == 0) ticker = placeholder; newsCanvas.TextOut(offNews, yOff, ticker, XRGB(255,255,255), ALIGN_LEFT); offNews -= InpNewsSpeed;
Schritt 5: Zeitplanung für den Nachrichtenabruf mit dem Timer
Wir platzieren unseren Aufruf von FetchAlphaVantageNews() innerhalb der Funktion OnTimer(), um sicherzustellen, dass er in regelmäßigen Abständen ausgeführt wird. Die interne Datumslogik stellt sicher, dass wir die API nur einmal pro Tag aufrufen. Dieses Design gibt dem EA die Möglichkeit, sich selbst zu aktualisieren, ohne dass ein Neuladen des Charts oder eine Nutzeraktion erforderlich ist. DrawAll() wird hier auch aufgerufen, um die Leinwand bei jedem Ticken des Zeitgebers zu aktualisieren und sicherzustellen, dass die Laufschrift gleichmäßig über den Bildschirm läuft.
void OnTimer() { //...for the other code FetchAlphaVantageNews(); // only updates once daily //...for the rest of the code DrawAll(); // redraws canvas each timer tick }
Schritt 6: Aufräumen, wenn der EA entfernt wird
Die Funktion OnDeinit() enthält eine Bereinigungsroutine, mit der das newsHeadlines-Array gelöscht wird. Dadurch wird sichergestellt, dass nach dem Entladen des EA kein Speicher belegt bleibt. Dies ist eine gute Praxis, um Ressourcenlecks zu vermeiden und einen sauberen Neustart zu gewährleisten, wenn der EA das nächste Mal geladen wird.
void OnDeinit(const int reason) { //...our preivous code here ArrayResize(newsHeadlines,0); // clear stored headlines }
Nun, da alles an Ort und Stelle ist, haben wir eine aktualisierte Version des News Headline EA, die erfolgreich eine externe API (Alpha Vantage) integriert und den eingebauten MQL5 Wirtschaftskalender nutzt. Zusammen ermöglichen diese Funktionen die Anzeige von Echtzeit-Nachrichten und wirtschaftlichen Ereignissen direkt auf dem Chart und bieten Händlern einen nahtlosen und unmittelbaren Zugang zu wichtigen Informationen, ohne die Plattform verlassen zu müssen.
Am Ende dieses Artikels werde ich den vollständigen Quellcode anhängen, der alles enthält, was wir bisher besprochen haben. Der nächste Schritt besteht darin, diese neuen Funktionen gründlich zu testen, um zu überprüfen, ob das Konzept wie erwartet funktioniert. Auf der Grundlage unserer Beobachtungen werden wir eine abschließende Bewertung vornehmen und in künftigen Updates darlegen, was als Nächstes ansteht.
Tests
Stellen Sie im MetaTrader 5-Terminal sicher, dass der WebRequest-Zugang aktiviert ist und die Alpha Vantage-Server-URL zur Liste der erlaubten URLs hinzugefügt wurde. Sie können auf diese Einstellungen zugreifen, indem Sie zu Extras > Optionen > Expert Advisors navigieren oder Strg + O auf Ihrer Tastatur drücken. Siehe dazu die folgende Abbildung.

WebRequest zulassen und den Alpha Vantage-Link hinzufügen
Sie können auf die kompilierte Expert Advisor-Datei über den Abschnitt „Expert Advisors“ im Navigator-Fenster zugreifen (Shortcut: Strg + N). Um ihn in einen Chart zu laden, klicken Sie einfach mit der rechten Maustaste auf den EA und wählen Sie „An Chart anhängen“ oder ziehen Sie ihn direkt auf den gewünschten Chart. Die nachstehende Abbildung bietet eine kurze visuelle Anleitung.

Zugriff auf die Nachrichtenschlagzeile
Mit der jüngsten Integration wurden unsere Eingabeeinstellungen um neue Funktionen erweitert, insbesondere um die Möglichkeit, Live-Schlagzeilen über eine externe API abzurufen. Um die News-Scrolling-Funktion im Chart zu aktivieren, müssen Sie einen API-Schlüssel von Alpha Vantage erhalten und diesen in das entsprechende Eingabefeld eingeben. In der Abbildung unten sehen Sie, wie die Schnittstelle für die Eingabeeinstellungen jetzt aussieht. Wenn kein API-Schlüssel angegeben wird, zeigt der EA im Nachrichtenbereich Platzhaltertext statt Echtzeit-Schlagzeilen an.

Eingabeeinstellungen (News Headline EA)
Hier sehen Sie eine Abbildung, die den EA nach erfolgreichem Einsatz in Aktion zeigt. Alle Wirtschaftsereignisse für den 11. Juni werden zusammen mit den Schlagzeilen der Weltmarktnachrichten nahtlos angezeigt. Eine klarere Darstellung und weitere Details finden Sie in der nachstehenden Abbildung.

Anhängen des News Headline EA an das Chart
Es ist mir auch gelungen, eine übersichtliche Darstellung der im Terminal für den 11. Juni angezeigten Ereignisse einzufangen. Dies unterstreicht, wie effektiv der News Headline EA ist, wenn es darum geht, wichtige Informationen direkt auf dem Chart zu finden – so bleiben Händler auf dem Laufenden, ohne ihre Chartanalyse zu unterbrechen. Darüber hinaus wurde bei der Entwicklung des EA auf eine effiziente Verwaltung des Pixelraums geachtet, sodass das gesamte Chart-Fenster sichtbar bleibt, während Nachrichten und Ereignisse nahtlos integriert werden, ohne die Ansicht zu verkleinern oder zu überladen. Die nachstehende animierte Abbildung zeigt, wie der News Headline EA den Zugang zu wirtschaftlichen Ereignissen und Marktschlagzeilen vereinfacht.

Der News Headline EA präsentiert Ereignisse und Nachrichten auf eine saubere, nicht aufdringliche Art und Weise, die sicherstellt, dass Ihr Chart klar und vollständig sichtbar bleibt.
Mit großer Spannung haben wir mit verschiedenen Scrollgeschwindigkeiten experimentiert, und die Ergebnisse waren wirklich beeindruckend. Dabei wurde das Potenzial der Erstellung reibungsloser, ressourceneffizienter Visualisierungen direkt auf dem Chart deutlich. Dieses Experiment hat auch gezeigt, wie leistungsfähig und nutzerfreundlich die MQL5-Bibliotheken sein können. Ein herausragendes Merkmal war die Verwendung der CCanvas-Klasse, die es uns ermöglichte, einen halbtransparenten Hintergrund für die Nachrichten- und Ereignisspur zu rendern, wobei das darunter liegende Chartgitter sichtbar blieb. Dies unterstreicht die Idee, dass die Nutzer auf dem Laufenden bleiben können, ohne auf die volle Sichtbarkeit des Charts zu verzichten.
Die derzeitige Implementierung lässt zwar die Interaktivität mit den visuellen Elementen vermissen, öffnet aber die Tür für spannende zukünftige Erweiterungen. Unten sehen Sie ein Beispiel für unseren Hochgeschwindigkeits-Bildlauf, bei dem der Text aufgrund der schnellen Bewegung leicht verschwimmt, aber dennoch die Leistung und das visuelle Potenzial demonstriert.

Einstellung für schnelles Scrollen bei Nachrichten und Kalenderereignissen
Schlussfolgerung
Ich bin wirklich begeistert von der erfolgreichen Implementierung der CCanvas-Klasse, die eine klare Herausforderung, mit der wir konfrontiert waren, effektiv angeht. Es ist uns gelungen, eine alternative Methode zu entwickeln, um Nachrichten und wirtschaftliche Ereignisse direkt auf dem Chart abzurufen. MetaTrader 5 bietet zwar Zugang zu diesen Updates, aber ihre Sichtbarkeit und Zugänglichkeit während des aktiven Handels kann umständlich sein. Durch die Straffung der Anzeige durch scrollende Überschriften haben wir eine nutzerfreundlichere und visuell integrierte Lösung eingeführt.
Natürlich gibt es in der aktuellen Version einige Einschränkungen. Die Schlagzeilen beschränken sich auf kurze Überschriften, im Gegensatz zur nativen Terminalversion, wo man durch Anklicken ganze Artikel lesen kann. Unsere Lösung glänzt jedoch, wenn es um wirtschaftliche Kalenderereignisse geht, und ermöglicht es Händlern, während ihrer Arbeit auf dem Laufenden zu bleiben. Bei den Schlagzeilen liegt der Vorteil darin, dass man sich der aktuellen Themen bewusst ist, die dann außerhalb des Terminals weiter erforscht werden können. Es ist üblich, nur die Schlagzeilen zu lesen, die von Interesse sind. Wenn Sie also die Schlagzeilen über das Chart laufen lassen, verpassen Sie keine wichtigen globalen Finanznachrichten, ohne Ihren normalen Handelsablauf zu unterbrechen.
Einer der herausragenden Vorteile ist, dass all diese Informationen direkt in das Chart eingeblendet werden und so fundierte Handelsentscheidungen ermöglichen, ohne die Übersichtlichkeit des Charts zu beeinträchtigen.
Mögliche Verbesserungen könnten Datumsbeschriftungen für jede Überschrift, eine dynamische Größenanpassung an verschiedene Chart-Maßstäbe und ein Warnsystem sein, das Händler vor geplanten Ereignissen benachrichtigt. Ich freue mich schon auf die dritte Phase dieses Projekts, in der wir eine weitere, auf die Bedürfnisse der Händler zugeschnittene Informationsspur einführen wollen.
Letztendlich ist eines der weitergehenden Ziele dieses Projekts, die MQL5-Programmierung zugänglicher zu machen – insbesondere für Anfänger. Um dies zu unterstützen, beabsichtige ich, jede Entwicklungsphase mit einer Zusammenfassung der wichtigsten verwendeten Programmierkonzepte abzuschließen, und ich beabsichtige, diese Praxis in zukünftigen Kapiteln der Reihe fortzusetzen.
Wichtige Lektionen
Nachfolgend finden Sie eine tabellarische Zusammenfassung der wichtigsten Programmierkonzepte, die in dieser Diskussion vorgestellt werden. | Konzept | Beschreibung |
|---|---|
| Objektorientierter Entwurf | Kapselung von Kalenderereignissen in einer eigenen Klasse mit Eigenschaften für Zeit, Symbol, Name und Wichtigkeit, was die Modularität und Lesbarkeit verbessert. |
| Dynamischer Speicher & Arrays | Verwendung von größenveränderlichen Arrays und dynamischer Zuweisung zur Verwaltung einer unterschiedlichen Anzahl von Ereignisobjekten in separaten Sammlungen für hohe, mittlere und geringe Bedeutung. |
| Ereignisgesteuerte Architektur | Lebenszyklusfunktionen für Initialisierung, zeitgesteuerte Aktualisierungen und Bereinigung, die das Verhalten des EA beim Start, bei jedem Timer-Tick und beim Herunterfahren steuern. |
| API-Integration | Verbindung zu einem externen Nachrichtendienst über HTTP-Anfragen, Behandlung von Antworten und Fehlern und Extrahieren von Überschriftentext aus den zurückgegebenen Daten. |
| Programmierung von Grafiken | Rendering von Text und Formen auf einem transparenten Overlay unter Verwendung eines Canvas-Objekts, um glatte Bildlaufspuren für Ereignisse und Schlagzeilen zu erstellen. |
| Logik von Zeit und Datum | Konvertierung der Serverzeit in Datumsgrenzen, um nur die zukünftigen Ereignisse von heute zu laden und sicherzustellen, dass die Nachrichten einmal pro Tag abgerufen werden. |
| Modularer Funktionsaufbau | Aufteilung der Aufgaben in gezielte Hilfsfunktionen für die Positionierung, das Laden von Daten, das Zeichnen von Bahnen und das Beschneiden von Text, um den Code übersichtlich und wartbar zu halten. |
| Ressourcenbereinigung | Ordnungsgemäßes Zerstören von visuellen Objekten und Löschen von dynamisch erstellten Ereignisobjekten, um Speicherlecks zu vermeiden, wenn der EA entfernt wird. |
| Behandlung von Nutzereingaben | Freigabe von Parametern für Scroll-Geschwindigkeiten, Anzeige-Toggles, Timer-Frequenz, Offset-Einstellungen und API-Schlüsseleingabe, um eine nutzerdefinierte Anpassung zu ermöglichen. |
| Effiziente neu zeichnen | Minimierung des Arbeitsaufwands für das erneute Zeichnen durch Löschen und Aktualisieren nur der notwendigen Teile der Leinwand und Anpassung an Änderungen der Kartengröße. |
| MQL5 Wirtschaftskalender | Abrufen von Kalenderereignissen, Filtern nach Datum, Kategorisieren nach Wichtigkeit und Sortieren nach Zeit, um eine nach Prioritäten geordnete Liste der anstehenden Ereignisse anzuzeigen. |
Zur Veranschaulichung finden Sie hier ein Bild, das die Bedeutung der drei farbigen Rechtecke zur Kennzeichnung der Nachrichtenpriorität verdeutlicht. Die Farbe dient als Hauptindikator, obwohl auch Formen – wie Kreise – verwendet werden können.

Kennzeichnung der Bedeutung von Ereignissen
Anlagen
Den Quellcode des EA finden Sie unten angehängt – kompilieren Sie ihn, testen Sie ihn, und teilen Sie uns dann Ihr Feedback und Ihre Erweiterungsideen in den Kommentaren mit. Bleiben Sie dran für unseren nächsten Artikel! | Dateiname | Version | Beschreibung |
|---|---|---|
| News Headline EA.mq5 | 1.03 | Expert Advisor, der wirtschaftliche Kalenderereignisse und Echtzeit-Schlagzeilen direkt auf dem Chart anzeigt, indem er das integrierte MQL5 Canvas und Alpha Vantage API verwendet |
Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/en/articles/18465
Warnung: Alle Rechte sind von MetaQuotes Ltd. vorbehalten. Kopieren oder Vervielfältigen untersagt.
Dieser Artikel wurde von einem Nutzer der Website verfasst und gibt dessen persönliche Meinung wieder. MetaQuotes Ltd übernimmt keine Verantwortung für die Richtigkeit der dargestellten Informationen oder für Folgen, die sich aus der Anwendung der beschriebenen Lösungen, Strategien oder Empfehlungen ergeben.
Datenwissenschaft und ML (Teil 45): Forex Zeitreihenprognosen mit dem Modell PROPHET von Facebook
Datenwissenschaft und ML (Teil 43): Erkennen verborgener Muster in Indikatordaten unter Verwendung Latenter Gaußscher Mischmodelle (LGMM)
MQL5-Assistenz-Techniken, die Sie kennen sollten (Teil 71): Verwendung der Muster des MACD und des OBV
Vom Neuling zum Experten: Animierte Nachrichtenüberschrift mit MQL5 (I)
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.