English
preview
Verwendung des JSON Data APIs in Ihren MQL-Projekten

Verwendung des JSON Data APIs in Ihren MQL-Projekten

MetaTrader 5Handelssysteme | 26 August 2024, 12:16
23 0
Sara Sabaghi
Sara Sabaghi

Einführung und Hintergrund

Die Einbeziehung externer Daten könnte die Entscheidungsfindung im algorithmischen Handel verbessern. APIs ermöglichen den Datentransfer zwischen verschiedenen Systemen und helfen den Händlern, auf verschiedene Datenquellen zuzugreifen, z. B. auf Echtzeit-Marktdaten von anderen Brokern und Banken, auf Wirtschaftsindikatoren (nicht nur auf Wirtschaftskalender), auf Nachrichten-Feeds oder soziale Stimmungsanalysen, auf Online-Tools für künstliche Intelligenz, auf Online-Prognosesysteme oder auf alles, was Sie sich vorstellen können, das in API-Diensten verfügbar ist. In diesem Artikel zeigen wir Ihnen, wie Sie dieses Tool am besten nutzen können.

Die Verwendung von API-Daten in Expert Advisors (EA) kann Ihnen neue und bessere Einblicke in den Handelsmarkt geben, die Ihnen helfen, fundierte Entscheidungen zu treffen, dynamischere Handelsstrategien zu entwickeln und Risiken besser zu verwalten. Mithilfe von API-Daten können Händler die Genauigkeit von Handelssignalen durch fortschrittliche technische Indikatoren und hochentwickelte Charting-Tools verbessern. Diese Integration erweitert die Möglichkeiten von Plattformen wie MetaTrader und bietet Zugang zu wertvoller Marktintelligenz wie der Verarbeitung natürlicher Sprache (NLP) für die Analyse der Marktstimmung und den Zugang zu Fundamentaldaten und Nachrichten.


Einführung in die Ziwox API

Ziwox ist ein Datenanalysesystem für Forex, das kostenlose API-Dienste enthält. Diese API bietet Händlern umfassende Marktdaten, darunter Kurse, technische Indikatoren, Stimmungsanalysen und Fundamentaldaten. Es unterstützt wichtige und weniger wichtige Devisenpaare und liefert wichtige Metriken, wie z. B. fundamentale Währungsvorteile, KI-basierte Prognosen, Statistiken für Einzelhändler, COT-Berichte, technische Unterstützungen und Widerstände, Marktstimmung (Risk-on und Risk-off), Anleiherenditen und VIX-Index. Dieser umfangreiche Datensatz ermöglicht eine facettenreiche Marktanalyse, bei der technische, fundamentale und stimmungsbezogene Erkenntnisse kombiniert werden, um bahnbrechende Tools zu entwickeln.

Das Interessante an diesen Daten ist, dass wir neben Kursen und technischen Daten auch Zugang zu Daten haben werden, die von künstlicher Intelligenz oder echten Analysten generiert werden. Zu diesen Daten gehören unter anderem: Fundamentalanalyse für Forex-Paare durch ein Analystenteam, NLP (Natural Language Processing) Systemausgaben als Forex-Nachrichten-Stimmung, Preisprognose durch AI generiert.

Die API ist einfach zu nutzen. Es ist eine einfache Anmeldung erforderlich, um einen API-Schlüssel zu generieren und auf Daten im JSON- oder Textformat zuzugreifen. Diese Zugänglichkeit zusammen mit der umfangreichen Datenabdeckung macht es zu einem unschätzbaren Werkzeug für die Verbesserung von Handelsstrategien und die Entwicklung von nutzerdefinierten Indikatoren oder automatisierten Handelssystemen.

Was ist ein API?


Machen wir uns ein wenig vertrauter: Was ist ein API?

APIs (Programmierschnittstellen) sind Mechanismen, die es zwei Software-Komponenten ermöglichen, unter Verwendung einer Reihe von Definitionen und Protokollen miteinander zu kommunizieren. Das Softwaresystem des Wetteramtes enthält zum Beispiel tägliche Wetterdaten. Die Wetter-App auf Ihrem Telefon „kommuniziert“ über eine API mit diesem System und zeigt Ihnen das aktuelle Tageswetter auf Ihrem Telefon an.

API steht für Application Programming Interface. Eine Schnittstelle kann man sich als Dienstleistungsvertrag zwischen zwei Anwendungen vorstellen. In diesem Vertrag wird festgelegt, wie die beiden über Anfragen und Antworten miteinander kommunizieren. Die API-Dokumentation enthält Informationen darüber, wie Entwickler diese Anfragen und Antworten strukturieren.

Die API-Architektur wird in der Regel in Form von Client und Server beschrieben. Das Programm, das die Anfrage sendet, wird als Client bezeichnet und das Programm, das die Antwort sendet, als Server. In dem Beispiel mit dem Wetter ist also die Wetterdatenbank des Büros der Server und die mobile App der Client.


Formate der API-Antworten:

Es gibt verschiedene Formate für die Antworten oder den Datenaustausch einer API. Je nachdem, für welchen Zweck die API erstellt wird und mit welchen anderen Anwendungen sie verbunden ist, kann sich das Format ändern.

Diese Antworten können im JSON-, HTML-, TEXT-, XML- oder CSV-Standardformat vorliegen.

Eine kurze Einführung in dieses Standardmodell:

1. JSON: JSON ist ein leichtgewichtiges, von Menschen lesbares Datenaustauschformat, das aufgrund seiner Einfachheit und Flexibilität in API-Antworten verwendet wird. Es stellt Daten als Schlüssel-Wert-Paare dar, sodass sie in verschiedenen Programmiersprachen leicht analysiert und bearbeitet werden können.

Ein Beispiel für eine JSON-Antwort:

{
  "id": 5687,
  "source": "oanda",
  "symbol": "EURUSD",
  "price": "1.08562",
  "high": "1.09211",
  "low": "1.08154"
}


2. XML: XML oder „eXtensible Markup Language“ ist ein weiteres weit verbreitetes Format zur Darstellung strukturierter Daten in API-Antworten. Im Gegensatz zu JSON verwendet XML Tags, um hierarchische Datenstrukturen zu definieren, was eine präzisere, aber strukturierte Darstellung ermöglicht. Es ist wie HTML-Tags in Webdesign und Webstrukturen. Während JSON wegen seiner Einfachheit und Lesbarkeit bevorzugt wird, bleibt XML in bestimmten Bereichen wie Unternehmenssystemen und Legacy-Integrationen relevant.

Beispiel für XML in Forex Factory News API:

<event>
<title>German Trade Balance</title>
<country>EUR</country>
<date>
<![CDATA[ 07-07-2024 ]]>     </date>
<time>
<![CDATA[ 8:30am ]]>
</time>
<impact><![CDATA[ Low ]]></impact>

<forecast><![CDATA[ 19.9B ]]></forecast>
<previous><![CDATA[ 22.1B ]]></previous>
<url>
<![CDATA[ https://www.forexfactory.com/calendar/125-eur-german-trade-balance ]]>
</url>

</event>


3. Andere Formate: Neben JSON und XML können APIs auch andere Antwortformate verwenden, wie z. B. reinen Text, HTM, Protokollpuffer oder CSV-Dateien, je nach domänenspezifischen Anforderungen und Konventionen. Jedes Format hat seine eigenen Vorteile und Nutzen, von Effizienz und Leistung bis hin zu Lesbarkeit und Anpassungsfähigkeit.

Das JSON-Format ist aufgrund seiner Einfachheit, Lesbarkeit und Nutzerfreundlichkeit zu einer beliebten Wahl in der Webentwicklung geworden. Glücklicherweise verwendet der betreffende Dienst dieses Modell auch für den Datenaustausch.



Einrichten Ihrer Umgebung und Entwicklung

Um in MQL5 eine Umgebung für die Verwendung von JSON-APIs einzurichten, müssen Sie einige Schritte befolgen.

MQL5 ist eine Programmiersprache zur Erstellung von Handelsrobotern, technischen Indikatoren, Skripten und Funktionsbibliotheken für die Handelsplattform MetaTrader 5.

Hier finden Sie eine allgemeine Anleitung, wie Sie eine Umgebung für die Arbeit mit JSON-APIs in MQL5 einrichten:

  1. Verstehen Sie die MQL5-Grundlagen: Vergewissern Sie sich, dass Sie die Grundlagen der Programmiersprache MQL5 sowie grundlegende Konzepte im Zusammenhang mit dem Handel und den Finanzmärkten beherrschen. Machen Sie sich mit der Dokumentation von MQL4 und der MQL5-Referenz vertraut, um die Syntax und die Funktionen der Sprache zu verstehen.
  2. Wählen Sie eine JSON-Bibliothek: MQL5 hat keine native Unterstützung für JSON-Parsing, sodass Sie eine Bibliothek eines Drittanbieters verwenden müssen. Sie können diese Bibliotheken in Foren wie der MQL5-Community oder GitHub finden. JSON-Serialisierung und JSON-Parser.
  3. Laden Sie die JSON-Bibliothek herunter und installieren Sie sie: Laden Sie die gewünschte JSON-Bibliothek herunter und folgen Sie den Installationsanweisungen der Bibliothek. Dazu müssen Sie die Bibliotheksdatei (mqh oder mq5) in den Include-Ordner Ihrer MetaTrader-Installation legen.
  4. Binden Sie die Bibliothek in Ihren Code ein: Am Anfang Ihres MQL-Skripts oder EA (Expert Advisor) schließen Sie die JSON-Bibliothek mit der #include-Direktive ein:
  5. //Use this type of file include if the file is in MQL include follder
    #include <JAson.mqh>
    
    // Use this type of file include If this file is next to your EA file/follder
    #include "JAson.mqh" 
  6. HTTP-Anfragen stellen: Um mit JSON-APIs zu interagieren, müssen Sie HTTP-Anfragen stellen. Beliebte Optionen sind WinHTTP oder WebRequest. Wenn Sie andere Arten der HTTP-Nutzung benötigen, laden Sie eine HTTP-Bibliothek herunter, die Ihren Anforderungen entspricht, und binden Sie sie ein.
  7. Speichern der HTTP-Antwort in einer Datei: Da die meisten dieser APIs in Bezug auf die Anzahl der Anfragen begrenzt sind, ist es besser, die angeforderten Daten in einer Datei zu speichern und unsere gespeicherte Datei zu verwenden, anstatt wiederholte und unnötige Anfragen zu stellen.
  8. Parsen von JSON-Antworten: Sobald Sie eine Antwort von der API erhalten haben, verwenden Sie die JSON-Bibliothek zum Parsen der JSON-Daten. Die spezifische Syntax hängt von der Bibliothek ab, die Sie verwenden.
  9. Kombinieren: Nachdem Sie die JSON-Daten klassifiziert haben, können Sie nun die gewünschten Daten je nach Modell, Strategie oder Typ mit Ihrem Programm kombinieren.


Eine Struktur für den Code der API-Funktionen

MQL5 bietet die Funktion WebRequest für HTTP-Anfragen, die die Interaktion mit APIs ermöglicht.

Lesen Sie mehr über die Webrequest-Dokumentation > Webrequest und HTTP-Datenaustausch

Im Folgenden finden Sie ein Beispiel für MQL-Code zur Abfrage von JSON-Daten von einer API-Adresse mit der Methode GET

// Required variables
string cookie=NULL, headers="", apikey="your api key",
value1="value 1", value2="value 2";
char post[],result[];
int res;
string URL   =  "https://www.example.com/API?apikey="+apikey+"&data1=value1&data2="+value2; // Rest API address

ResetLastError(); // Reset ast error
// HTTP request via MQL Webrequest, GET method with apikey, value1, and value2 and 2000 millisecond timeout 
res=WebRequest("GET", URL, cookie, NULL, 2000, post, 0, result, headers);
if(res==-1) // WebRequest error handling
 {
    int error =  GetLastError();
    if(error==4060) Print("Webrequest Error ",error);
    else if(error==5203) Print("HTTP request failed!");
    else Print("Unknow HTTP request error("+string(error)+")! ");
    LastHTTPError=error;
 }
else if (res==200) // The HTTP 200 status response code indicates that the request has succeeded
 {
    Print("HTTP request successful!");

    // Use CharArrayToString to convert HTTP result array to a string
    string HTTP_Result = CharArrayToString(result, 0, 0, CP_UTF8); 
    Print(HTTP_Result);      

 }

Dieser Code sendet eine GET-Anfrage an die angegebene API-URL und demonstriert die Einfachheit der Integration von API-Aufrufen in MQL4.



Fallstudie: Erfolgreicher MQL4 Expert Advisor mit API-Datenzugang

Verwendung der Ziwox Forex Data API zur Erstellung eines automatischen Handelssystems unter Verwendung von Fundamentaldaten und Echtzeit-KI-Prognosedaten

In diesem Artikel erfahren Sie, wie Sie die Ziwox Forex Data API nutzen können, um fundamentale und Echtzeitdaten-basierte Tools in MetaQuotes Language (MQL) zu erstellen. Es gibt viele Informationen über ihre API, aber wir haben uns für die KI-Prognose für unser Projekt entschieden.

Das KI-Prognosesystem auf dem Ziwox-Terminal basiert nach eigenen Angaben auf der Aggregation von Daten wie Nachrichten, Wirtschaftskalenderdaten, Zinssätzen und deren Änderungen, Geld- und Wirtschaftspolitik der Zentralbanken, Marktstimmung, Stärke der Devisenwährungen, COT-Daten und den Daten von Einzelhändlern. Infolgedessen wird der gesamte Markt analysiert, sodass diese Vorhersagen als wertvolle Daten genutzt werden können.

Wir werden den Prozess des Abrufs von API-Daten, des Speicherns von JSON-Daten in einer Datei, des Parsens von JSON-Antworten und der Verwendung dieser Informationen zur Erstellung eines automatisierten Expert Advisors (EA) erläutern.

Unser Plan ist es, einen Expert Advisor zu erstellen, eine einfache MA-Strategie als unser technisches Signal zu verwenden und zu handeln, wenn die KI-Prognose in unsere Richtung als KI-Filter geht.

Tun wir unser Bestes.


Schritt 1: Anmeldung und Generierung eines API-Schlüssels

Um die Ziwox Forex Data API zu nutzen, folgen Sie bitte diesen Schritten:

1. Registrieren Sie sich HIER auf dem Ziwox-Terminal.

Ziwox Sign UP 

2. Füllen Sie das Formular mit Ihren Daten aus, lesen Sie die Allgemeinen Geschäftsbedingungen und akzeptieren Sie diese, klicken Sie auf „I'm not a robot“ und dann auf „Create a new account“.

3. Eine Bestätigungs-E-Mail wird an Ihre Mailbox gesendet, überprüfen Sie Ihre E-Mail.

3. Melden Sie sich hier mit Ihrem Konto an, navigieren Sie zur Profilseite, dann hier weiter zu „API“ und generieren Sie Ihren API-Schlüssel, indem Sie auf die grüne Schaltfläche „Generate“ klicken.

Ziwox API generieren

4. Durch die Generierung eines API-Schlüssels erhalten Sie nun Zugang zu den Ziwox-API-Daten. Kopieren Sie den generierten API-Code, um ihn in unserem Projekt zu verwenden.

Ziwox API-Schlüssel


Schritt 2: Verstehen der API-Struktur

Die Struktur der API-Verknüpfung sieht folgendermaßen aus:

https://ziwox.com/terminal/services/API/V1/fulldata.php?expn=ziwoxuser&apikey={API_KEY}&apitype={REQUEST_TYPE}&pair={PAIR}

  • {API_KEY}: Ihr eindeutiger API-Schlüssel aus dem letzten Schritt
  • {REQUEST_TYPE}: Das Format der Antwort, entweder JSON oder Text.
  • {PAIR}: Das gewünschte Devisenpaar in einem Standardformat, ohne Präfix oder Suffix, wie z.B. EURUSD, USDJPY, GBPUSD, XAUUSD, WTI...


Schritt 3: Testen Sie Ihre API-Struktur

Jetzt wollen wir die API-Linkstruktur überprüfen und ein Beispiel von Ziwox API anfordern. Verwenden Sie einfach den API-Link aus Schritt 2, ändern Sie die Parameter mit Ihren Parametern, öffnen Sie Ihren Browser, geben Sie den API-Link in die Adressleiste ein und drücken Sie die Eingabetaste.

Wenn Sie den API-Link korrekt bearbeiten, sieht die HTTP-Antwort folgendermaßen aus:

Ziwox-API-Antwort


Bei einem falschen API-Schlüssel erhalten Sie eine Fehlerantwort wie diese:

{
"status": "error",
"desc": "invalid api key"
}

oder wenn Sie den Asset-Namen falsch eingeben, kann diese Antwort erscheinen:

{
"status": "error",
"desc": "invalid asset name!!"
}


Schritt 4: Implementierung einer Funktion für eine HTTP-Anforderung mit dem API 

Wenn Sie in Schritt 3 erfolgreich waren, können wir nun eine Funktion zur Automatisierung dieses Teils implementieren. Prüfen Sie diesen Code:

datetime LastWebRequest = 0; // use this datetime var for limit failed request API

bool GetAPI(string symbolname, string apikey, string filename)

  {
   Print("Get API Update");
   bool NeedToUpdate =   false;

   // Check if the API data file available
   if(FileGetInteger(filename,FILE_EXISTS,true)>=0)
     {
      // Check the latest update time from file modify date time
      if(TimeLocal()-(datetime)FileGetInteger(filename,FILE_MODIFY_DATE,true)>900) // update data every 15 min becasue of API call rate limitation
         NeedToUpdate  = true;
     }
   else
      NeedToUpdate  =  true;


   if(NeedToUpdate && TimeLocal()-LastWebRequest>300)   // retry failed API request every 5 min to avoid firewall IP block
     {
      string   cookie=NULL,headers;
      char     post[],result[];
      int      res;
      string   URL   =  "https://www.ziwox.com/terminal/services/API/V1/fulldata.php?expn=ziwoxuser&apikey="+apikey+"&apitype=json&pair="+symbolname;
      ResetLastError();
      int timeout=5000;
      res=WebRequest("GET", URL, cookie, NULL, timeout, post, 0, result, headers);
      if(res==-1)
        {
         LastWebRequest    =  TimeLocal();
         int error         =  GetLastError();
         if(error==4060)
            Print("API data Webrequest Error ",error, " Check your webrequest on Metatrader Expert option.");
         else  if(error==5203)
               Print("HTTP request for "+symbolname+" Data failed!");
            else
               Print("Unknow HTTP request error("+string(error)+")! "+symbolname+" Data");
         return(false);
        }
      else
         if(res==200)
           {
            LastWebRequest =  TimeLocal();
            string HTTPString = CharArrayToString(result, 0, 0, CP_UTF8);
            Print("HTTP request for "+symbolname+" Data successful!");
            Print(HTTPString);
	    
            if (StringFind(HTTPString,"invalid api key",0)!=-1) {
               Alert("invalid api key");
               return(false);
            }
            // Store the API data into a common folder file
            int filehandle=FileOpen(filename,FILE_READ|FILE_SHARE_READ|FILE_WRITE|FILE_SHARE_WRITE|FILE_BIN|FILE_COMMON);
            if(filehandle!=INVALID_HANDLE)
              {
               FileWriteArray(filehandle,result,0,ArraySize(result));
               FileClose(filehandle);
              }
           }
     }
   return(true);
  }

Diese Funktion benötigt einen Authentifizierungs-API-Schlüssel (apikey), einen Asset-Namen (symbolname) und einen Dateinamen (filename) als Eingaben von Ihnen. Es bettet „apikey“ und „symbolname“ in die URL ein, um den Link für die API-Anforderung vorzubereiten.

Dann wird die Funktion Webrequest verwendet, um eine HTTP-Anfrage zu stellen, ähnlich wie im vorherigen Schritt, und schließlich wird eine Antwort vom Server abgerufen und die entsprechenden Informationen in eine Datei mit dem Namen „Dateiname“ gespeichert.

Wir rufen die API-Funktion wie folgt auf:

string APIfilename =  symbolname+"_API_Data.json"; // API store file name
string APIKey = "76thfd67a6f867df7"; // Our unic API Key, change it with your API Key
string SymbolRequest = "EURUSD"; // Symbol request, without prefix or suffix
string APIJSON[];
bool APIGET = GetAPI(SymbolRequest, APIKey,  APIfilename);


Schritt 5: Parsen von JSON-Daten

Wie in Schritt 3 beschrieben, enthalten die von der API empfangenen Daten ein Array von Daten. Die vollständige Erklärung dieser Daten finden Sie in der nachstehenden Tabelle.

JSON Objektname Datentyp Beschreibung
Symbol String Den gleichen Asset/Symbolnamen zurückgeben
Last Price Zahl Letzter Preis des Vermögenswerts
digits Zahl Ziffern des Vermögenspreises
Base String Basisname des Paares
Quote String Kursname des Paares
Base Fundamental Bias String Grundlegende Tendenz der Währung oder grundlegender Ausblick, z.B. „Bullish“ (auf-) oder „Bearish“ (abwärts).
Base Fundamental Power String Basis der fundamentalen Bias-Kraft. Es könnte Week, Moderate oder Strong
Quote Fundamental Bias String Fundamentale Neigung der Währungspreise oder der fundamentalen Ausblick. Es könnte Bullish (steigend) oder Bearish (fallend) sein.
Quote Fundamental Power String Kurse der fundamentalen Bias-Kraft. Es könnte Week, Moderate oder Strong
Fundamental Bias String Fundamentales Bias des Vermögenswerts oder langfristige fundamentale Aussichten von Vermögenswerten. Bullish oder Bearish
Fundamental Power String Fundamentale Kraft des Vermögenswerts. Week, Moderate oder Strong
Fundamental Driver String Wie bei dem fundamentalen Bias von Vermögenswerten handelt es sich um eine Zahl, 50=Neutral, größer als 50 ist Bullish und kleiner als 50 ist Bearish
AI Bullish Forecast Prozentsatz Vorhersage des Aufwärtstrends von Vermögenswerten, je größer die Zahl, desto stärker.
AI Bearish Forecast Prozentsatz Vorhersage des Abwärtstrends von Vermögenswerten, je größer die Zahl, desto stärker.
Retail Long Ratio Prozentsatz Long-Prozentsatz für Einzelhändler
Retail Long Lot Zahl Einzelhändler Long Lot (Auftragsvolumen)
Retail Long Pos Zahl Anzahl der Einzelhändler mit Long-Positionen
Retail Short Ratio Prozentsatz Short-Prozentsatz für Einzelhändler
Retail Short Lot Zahl Einzelhändler Short Lot (Auftragsvolumen)
Retail Short pos Zahl Anzahl der Einzelhändler mit Short-Positionen
Base COT NET Zahl COT-Nettoposition der Basiswährung
Base COT change Zahl COT-Nettopositionsänderungen (wöchentlich) der Basiswährung
Quote COT NET Zahl COT-Nettoposition der Währung Quote
Quote COT change Zahl COT-Nettopositionsänderungen (wöchentlich) der Kurswährung
COT chng Ratio Zahl Netto-Positionsveränderungsquote große Spekulanten, positive Zahl = Long-Stimmung, negative Zahl = Short-Stimmung
Risk Sentiment String Einschätzung des Marktrisikos, d.h. Risiko-EIN, Risiko-AUS oder MIX
D1 Trend String Technische Daten, Täglicher Trend, Kauf- oder Verkaufstrend
D1 RSI Zahl Indikatordaten, Täglicher RSI-Indikatorwert
D1 Stoch Zahl Indikatordaten, Täglicher Stochastik-Indikatorwert
cci Zahlen CCI-Indikatorwerte und
cci-Signal String CCI-Indikator-Signal
supports Zahlen Unterstützungsebenen des Vermögenswertes
resistance Zahlen Widerstandsebenen des Vermögenswertes
pivot Zahlen Dreh- und Angelpunkt/Ebenen des Vermögens
VIX Value Zahl VIX, Volatilitätsindexwert
VIX Direction Zahl Richtung der VIX-Stimmung, nach oben = Markt der Angst und des Risikos, nach unten = Markt der Gier
VIX Buy driver Zahl Positive Zahl = gieriger Markt 
VIX Sell driver Zahl Negative Zahl = Angst und riskanter Markt
Base Bond Zahl Wert der Anleiherendite der Basiswährung
Base Bond chg Zahl Wertänderung der Anleiherendite der Basiswährung
Quote Bond Zahl Wert der Anleiherendite der Kurswährung
Quote Bond chg Zahl Wertänderung der Anleihenrendite der Kurswährung
US10Y Zahl Wert der Rendite der 10-jährigen Anleihen der Vereinigten Staaten
US10Y chg Zahl Wertänderung von H1 US10Y
Yield Driver Zahl Positive Zahl, zugunsten der Basiswährung, negative Zahl zugunsten der Kurswährung   
Allow To Trade bool Ziwox Vorschlag, handeln oder nicht
Stop Reason String Bei der Empfehlung, nicht zu handeln, dann können Sie den Grund dafür hier sehen.
riskriversal Zahl Wert der Risikoumkehr für diese Anlage. Bestimmen Sie den PUT/CALL-Wert
cesi Zahl CESI-Wert
yielddiff Zahl Basiswährungsrenditewert - Kurswährungsrenditewert 
banksposition Zahl Positionsquote der Bankinstitute
macrofundamental Zahl Makroökonomischer Wert, eine positive Zahl ist ein positiver Treiber, eine negative Zahl ist ein negativer Treiber für Vermögenswerte
longtermsentiment Zahl Langfristige Stimmung des Vermögensinstruments, basierend auf Wirtschaft, Politik...
seasonal Prozentsatz Die Möglichkeit eines Vermögenszuwachses oder -rückgangs im Hinblick auf die saisonalen Daten


In dieser Fallstudie bzw. diesem Beispiel verwenden wir gerne die AI-Prognose von Bearish/Bullish (Verkauf/Kauf).  Um diese Funktion zu entwerfen, lesen wir die in der Datei gespeicherten Daten (Schritt 4) mit Hilfe der JSON-Bibliothek und extrahieren die benötigten Daten.

Die Funktion würde folgendermaßen aussehen:

#include "JAson.mqh"  // include the JSON librery in our project
CJAVal JsonValue;


void JsonDataParse(string filename, string &_APIJSON[])

  {
   bool     UpdateData =   false;
   for (int arraIn=0; arraIn<ArraySize(APIJSON); arraIn++) APIJSON[arraIn]="";


   if(FileGetInteger(filename,FILE_EXISTS,true)>=0)
     {
      int   FileHandle =FileOpen(filename,FILE_READ|FILE_SHARE_READ|FILE_WRITE|FILE_SHARE_WRITE|FILE_BIN|FILE_COMMON);
      char  jsonarray[];
      FileReadArray(FileHandle,jsonarray);
      FileClose(FileHandle);

      JsonValue.Clear();
      JsonValue.Deserialize(CharArrayToString(jsonarray, 0, 0, CP_UTF8));


      _APIJSON[0]   =   JsonValue[0]["Symbol"].ToStr();
      _APIJSON[1]   =   JsonValue[0]["Fundamental Bias"].ToStr();
      _APIJSON[2]   =   JsonValue[0]["Fundamental Power"].ToStr();
      _APIJSON[3]   =   JsonValue[0]["AI Bullish Forecast"].ToStr();
      _APIJSON[4]   =   JsonValue[0]["AI Bearish Forecast"].ToStr();
      _APIJSON[5]   =   JsonValue[0]["Retail Long Ratio"].ToStr();
      _APIJSON[6]   =   JsonValue[0]["Retail Short Ratio"].ToStr();
      _APIJSON[7]   =   JsonValue[0]["Retail Short Lot"].ToStr();
      _APIJSON[8]   =   JsonValue[0]["Retail Short pos"].ToStr();
      _APIJSON[9]   =   JsonValue[0]["Base COT NET"].ToStr();
      _APIJSON[10]  =   JsonValue[0]["Base COT change"].ToStr();
      _APIJSON[11]  =   JsonValue[0]["Quote COT NET"].ToStr();
      _APIJSON[12]  =   JsonValue[0]["Quote COT change"].ToStr();
      _APIJSON[13]  =   JsonValue[0]["COT chng Ratio"].ToStr();
      _APIJSON[14]  =   JsonValue[0]["Risk Sentiment"].ToStr();
     }
  }

Und wir rufen die JSON-Funktion so auf:

string APIfilename =  symbolname+"_API_Data.json"; // API store file name
string API_DATA[]; // define an array variable to store API details

JsonDataParse( APIfilename,API_DATA);


Schritt 6: Erstellen eines StrategieSchritts eines einfachen gleitenden Durchschnitts-Kreuzen

Mit den extrahierten Daten, die in der Variable „APIJSON“ gespeichert sind, können wir nun automatisierte Handelsstrategien erstellen und unsere Strategie mit einem KI-Prognosesystem kombinieren. Hier ist ein einfaches Beispiel für die Verwendung der Daten in einem EA:

Sie können jede beliebige Strategie wählen, aber in diesem Artikel versuchen wir, eine einfache Strategie zu wählen, denn unser Ziel ist es, Sie anzuleiten und Ihnen beizubringen, wie Sie ein solches Werkzeug in Ihren Projekten verwenden können, damit Sie es einen Schritt besser machen können.

Die Strategie des gleitenden Durchschnitts-Crossover ist eine beliebte Technik, die von Händlern verwendet wird, um potenzielle Kauf- und Verkaufssignale zu erkennen.

Diese Strategie verwendet zwei gleitende Durchschnitte. Eine kurzfristige und eine langfristige, um den Markttrend zu bestimmen.

Wenn der kurzfristige MA über dem langfristigen MA kreuzt, signalisiert er einen Kauf, und wenn er nach unten kreuzt, signalisiert er einen Verkauf.

Das sollten wir tun:

shortMA  = iMA(Symbol(), 0, shortMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 0);
longMA   = iMA(Symbol(), 0, longMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 0);


// Check for crossover signals
if ( int(APIJSON[3])>=60 ) // if bullish forecast is higher than 60%
   if (shortMA > longMA)   // BUY trend 
   { 
      if (OrdersTotal() == 0) {
         ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, "Buy Order", 0, 0, Green);
         if (ticket < 0) Print("Error opening buy order: ", GetLastError());
      }
   }

if ( int(APIJSON[4])>=60 ) // if bearish forecast is higher than 60%
   if (shortMA < longMA)   // Sell trend
   {
      if (OrdersTotal() == 0) 
      {
         ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, "Sell Order", 0, 0, Red);
         if (ticket < 0) Print("Error opening sell order: ", GetLastError());
      }
   }


Schritt 7: Verwendung von JSON-Daten für die Signalfilterung

Um die MA-Crossover-Strategie zu verbessern, verwenden wir die JSON-Daten und die AI-Prognosequote aus der Ziwox-API, um Signale zu filtern.

Wenn zum Beispiel das MA-Kreuz einen Kauftrend anzeigt und die KI-Prognose über 50 % liegt, was auf eine Aufwärtsbewegung hindeutet, ist es eine gute Idee, einen Kauf zu tätigen. Im Gegenteil, wenn die technische Analyse ( MA ) ein Verkaufssignal gibt, verkaufen wir nur, wenn die analytischen und prognostizierten Daten in die gleiche Richtung wie der Verkauf gehen. Auf diese Weise kann das Einstiegsrisiko verringert und die Gewinnquote erhöht werden.

Basierend auf der Anordnung der JSON-Daten in Schritt 4 befindet sich die KI-Prognose, der Prozentsatz für kaufen, im dritten Element unseres Arrays und die Abwärts-Prognose im vierten Element.

Der Code könnte so aussehen:

void OnTick()
  {
   if (!APIOK) return;
   double   shortMA, longMA;
   long     ticket = -1;

   if(IsNewCandle())
     {
      shortMA  = iMA(Symbol(), 0, shortMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 0);
      longMA   = iMA(Symbol(), 0, longMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 0);
      
      // Check for crossover signals
      if ( int(APIJSON[3])>=60 ) // if bullish forecast is higher than 60%
         if (shortMA > longMA)   // BUY trend 
         { 
            if (OrdersTotal() == 0) {
               ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, "Buy Order", 0, 0, Green);
               if (ticket < 0) Print("Error opening buy order: ", GetLastError());
            }
         }
      if ( int(APIJSON[4])>=60 ) // if bearish forecast is higher than 60%
         if (shortMA < longMA)   // Sell trend
         {
            if (OrdersTotal() == 0) 
            {
               ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, "Sell Order", 0, 0, Red);
               if (ticket < 0) Print("Error opening sell order: ", GetLastError());
            }
         } 
     }
  }


Schlussfolgerung

Die Integration von API-Daten in MQL4 ermöglicht es Händlern, anpassungsfähigere und datengesteuerte Expert Advisors zu erstellen. Durch die Nutzung von Echtzeitinformationen aus externen Quellen können Händler ihre Strategien verbessern und fundiertere Handelsentscheidungen unter dynamischen Marktbedingungen treffen. Sie können auf Daten zugreifen, die über die reinen Marktpreise hinausgehen. Dieser Ansatz ermöglicht es Ihnen, technische und fundamentale Analysen zu kombinieren und so die Wirksamkeit Ihrer Handelsstrategien zu erhöhen.

Der endgültige Code steht unten zum Download bereit.

Ich bin hier und bereit, jede Frage, Anregung oder Kritik zu beantworten.

Herzliche Grüße und guten Handel.

Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/en/articles/14108

Beigefügte Dateien |
APIExpert.mq4 (18.77 KB)
JAson.mqh (30.59 KB)
Die Übertragung der Trading-Signale in einem universalen Expert Advisor. Die Übertragung der Trading-Signale in einem universalen Expert Advisor.
In diesem Artikel wurden die verschiedenen Möglichkeiten beschrieben, um die Trading-Signale von einem Signalmodul des universalen EAs zum Steuermodul der Positionen und Orders zu übertragen. Es wurden die seriellen und parallelen Interfaces betrachtet.
Neuronales Netz in der Praxis: Die Sekante Neuronales Netz in der Praxis: Die Sekante
Wie bereits im theoretischen Teil erläutert, müssen wir bei der Arbeit mit neuronalen Netzen lineare Regressionen und Ableitungen verwenden. Warum? Der Grund dafür ist, dass die lineare Regression eine der einfachsten Formeln ist, die es gibt. Im Grunde genommen ist die lineare Regression nur eine affine Funktion. Wenn wir über neuronale Netze sprechen, sind wir jedoch nicht an den Auswirkungen der direkten linearen Regression interessiert. Wir interessieren uns für die Gleichung, die diese Linie erzeugt. Wir sind nicht so sehr an der erstellten Linie interessiert. Kennen Sie die wichtigste Gleichung, die wir verstehen müssen? Wenn nicht, empfehle ich, diesen Artikel zu lesen, um ihn zu verstehen.
Eine alternative Log-datei mit der Verwendung der HTML und CSS Eine alternative Log-datei mit der Verwendung der HTML und CSS
In diesem Artikel werden wir eine sehr einfache, aber leistungsfähige Bibliothek zur Erstellung der HTML-Dateien schreiben, dabei lernen wir auch, wie man eine ihre Darstellung einstellen kann (nach seinem Geschmack) und sehen wir, wie man es leicht in seinem Expert Advisor oder Skript hinzufügen oder verwenden kann.
Erstellen einer interaktiven grafischen Nutzeroberfläche in MQL5 (Teil 1): Erstellen des Panels Erstellen einer interaktiven grafischen Nutzeroberfläche in MQL5 (Teil 1): Erstellen des Panels
In diesem Artikel werden die grundlegenden Schritte bei der Erstellung und Implementierung einer grafischen Nutzeroberfläche (GUI) mit MetaQuotes Language 5 (MQL5) erläutert. Nutzerdefinierte Utility-Panels verbessern die Nutzerinteraktion beim Handel, indem sie gängige Aufgaben vereinfachen und wichtige Handelsinformationen visualisieren. Durch die Erstellung nutzerdefinierter Panels können Händler ihre Arbeitsabläufe straffen und bei Handelsgeschäften Zeit sparen.