MetaTrader 5 herunterladen

Die Arbeit mit Daten. Das Beispiel für Visualisierung der wichtigen Marktereignisse

30 November 2015, 14:07
Andrey Opeyda
0
333


    Jeder Trader weißt, dass die Erröffnung einer Position, die nur auf Basis einer Technische-Analyse durchgeführt wurde(TA), ist etwas unsicher. Es wäre richtiger, eine Position auf Basis einer Fundamentale-Analyse sowie auch einer Technische-Analyse zu eröffnen. Die Trader, welche am öftesten mit der Technische-Analyse arbeiten, verwenden einen Ereignis-Kalender, um die mögliche Marktvolatilität vorzunehmen und kein Risiko bzw seiner Position einzugehen. Es wäre sehr bequem, wenn alle wichtige Ereignisse des Handelstages auf dem Kurs-Chart dargestellt wären. Zum Beispiel:


15.05.2006;9:00; Aufträge der Industriebetriebe M.M ;Japan;März;3.40%;1.00%;
15.05.2006;16:30; Index FRB New York ;USA;MAY;15.8;15;
15.05.2006;17:00; Netto-Einkommen ausländischen Kapital ;USA;März;86.9 Milliarde.;80.0 Milliarde.;
16.05.2006;12:30; HICP Y.Y ;England;Aprel;1.80%;2.00%;
16.05.2006;13:00; Index der Konjunkturerwartungen ZEW ;Deutschland;May;62.7;65;
16.05.2006;16:00; Der Bericht Wal-Mart Stores ;USA;1-e Quartal.;-0.61;-;
16.05.2006;16:30; PPI M.M ;USA; April ;0.50%;0.70%;
16.05.2006;16:30; PPI ohne Hypotheken und Energie M.M;USA;April;0.10%;0.20%;
16.05.2006;16:30; Baubeginne; USA; April;1.960Mln.;1.960Mln.;
16.05.2006;16:30; Baugenehmigungen; USA; April; 2.094Mln.; 2.050Mln.;
16.05.2006;17:15; Industrielle Produktion M.M; USA; April; 0,60%, 0,40%;
16.05.2006;17:15; Kapazitätsauslastung USA; April; 81.30%; 81.50%;
17.05.2006;8:30;  Industrieproduktion (geklärt.) MM, Japan, März; 0,20%, 0,20%;
17.05.2006;12:30; Die Arbeitslosigkeit M.M; GB; April; 12.600; 5000;
17.05.2006;12:30; Der Protokoll der Setzung BoE 4.05 ;GB;-;-;-;
17.05.2006;13:00; Industrielle Produktion M.M; Eurozone; März; 0,00%; - 0,20%;
17.05.2006;13:00; Industrielle Produktion YY; Eurozone; März, 3,20%, 2,80%;
17.05.2006;13:00; HICP (geklärt) Y.Y ;Eurozone; April; 2,40%, 2,40%;
17.05.2006;16:30; CPI M.M; USA; April; 0,40%, 0,50%;
17.05.2006;16:30; CPI ohne Hypotheken und Energie M.M ;USA;April;0.30%;0.20%;
18.05.2006;12:30; Retail Sales M.M; GB; April; 0,70%, 0,20%;
18.05.2006;12:30;  Retail Sales Y.Y; GB; April; 2,60%, 2,60%;
18.05.2006;16:30; Erstanträge ;USA;8-14.05;324,000;320,000;
18.05.2006;17:30; der Vortrag B. Bernanke ;USA;-;-;-;
18.05.2006;8:00; Frühindikatoren MM; USA; April; -0,10%, 0,10%;
18.05.2006;20:00;  Index FRB Philadelphia;USA;May;13.2;12;
19.05.2006;1:30; Der Vortrag A. Greenspen;USA;-;-;-;
19.05.2006;3:50; Bruttoinlandsprodukt (BIP) QQ; Japan; 1qrt;. 1,30%, 0,20%;
19.05.2006;8:00; Die Sitzung der Zentralbank ;Japan;-;-;-;
19.05.2006;13:00;  Handelsbilanz ;Eurozone; März; -4.5Bln; -3.0Bln;
     


    Um die Daten aus einer Datei lesen zu können, ist es zuerst notwendig, mit ihnen eine Verbindung herzustellen, das heißt, es muss zum Lesen geöffnet werden. Dafür gibt es einen Operator in MQL4.

int FileOpen( string filename, int mode, int delimiter=';')


Seine Parameter: der Datei-Name, der Typ (eine binäre FILE_BIN oder eine zeilenorientierte mit Separatoren FILE_CSV), die Art des Zugriffs ( aufzunehmen FILE_READ oder zu lesen FILE_WRITE)und das Trennzeichen-Symbol zwischen den zeilenorientierten Daten. Wenn die Datei erfolgreich geöffnet ist, der Identifikator wird mit einem besonderen Wert verliehen, ansonsten wird der Datei-Identifikator mit dem Wert - 1 verliehen. Um die Information über einen Fehler zu bestätigen, kann man die Funktion GetLastError()anwenden. Die Variable FileName wird im Titel des Skripts ausgetragen.

#property show_inputs
extern string FileName = "week.txt";
 
…
 
   int handle;
   handle=FileOpen(FileName,FILE_CSV|FILE_READ,';');
   if(handle<1)
    {
     Print("Die Datei nicht gefunden: ", GetLastError());
     return(false);
    }

    So haben wir die Verbindung mit der Datei hergestellt. In der nächsten Stufe lesen wir alle Daten. Wir werden ihre Zeilen lesen, und weiter konvertieren sie zu uns passenden Typs. Noch weiter versuchen wir einen Ereignisfilter zu schreiben. Dafür brauchen wir nur die Variablen in den Titel des Skripts auszutragen, welche eben bestimmen, ob ein Ereignis dieses Landes auf dem Kurs-Chart angezeigt wird.

  while(!FileIsEnding(handle))
   {
    string sDate=FileReadString(handle); // Date
    string sTime=FileReadString(handle); // Time
    string sCountry=FileReadString(handle); // Country
    string sPeriod=FileReadString(handle); // Period
    string sDescription=FileReadString(handle); // Description
    string sPrev=FileReadString(handle); // Prev    
    string sForecast=FileReadString(handle); // Expected        
    string sCurrent=FileReadString(handle); // Current value
    
    FileReadString(handle); // null
    
    
    Print(
      sDate+" "
      ,sTime+" "
      ,sCountry+" "
      ,sPeriod+" "
      ,sDescription+" "
      ,sForecast+" "
      ,sCurrent+" ");
      
    i++;
    datetime dt = StrToTime(sDate+" "+sTime);
    
         color c = Red;
 
         if (sCountry == "Japan") c = Yellow;            
         if (sCountry == "USA") c = Brown;         
         if (sCountry == "Deutschland") c = Green;
         if (sCountry == "EC") c = Blue;            
         if (sCountry == "GB") c = Orange;
         if (sCountry == "Canada") c = Gray;
         if (sCountry == "Australien") c = DarkViolet;
         if (sCountry == "Sweden") c = FireBrick;
         if (sCountry == "Südafrika") c = DodgerBlue;
         if (sCountry == "Denmark") c = RosyBrown;
         if (sCountry == "Norwegen") c = HotPink;
         
 
 
         if ((sCountry == "Japan") && (!Japan)) continue;            
         if ((sCountry == "USA") && (!USA)) continue;            
         if ((sCountry == "Deutschland") && (!Germany)) continue;            
         if ((sCountry == "EC") && (!ES)) continue;            
         if ((sCountry == "GB") && (!GB)) continue;                      
         if ((sCountry == "Canada") && (!Canada)) continue;                     
         if ((sCountry == "Australien") && (!Australia)) continue;      
         if ((sCountry == "Sweden") && (!Shweden)) continue;      
         if ((sCountry == "Südafrika")&& (!UAR)) continue;      
         if ((sCountry == "Denmark") && (!Dania)) continue;      
         if ((sCountry == "Norwegen") && (!Norvegia)) continue;
         
 
            
            
          if (DisplayText)
          {
          ObjectCreate("x"+i, OBJ_TEXT, 0, dt, Close[0]);
          ObjectSet("x"+i, OBJPROP_COLOR, c);          
          ObjectSetText("x"+i, 
            sDescription + " "
            + sCountry + " "
            + sPeriod + " "
            + sCurrent + " "
            + sForecast,
            8);          
          ObjectSet("x"+i, OBJPROP_ANGLE, 90);          
          }
          
                   
          ObjectCreate(sCountry+" "+i, OBJ_VLINE, 0, dt, Close[0]);
          ObjectSet(sCountry+" "+i, OBJPROP_COLOR, c);                    
          ObjectSet(sCountry+" "+i, OBJPROP_STYLE, STYLE_DOT);                    
          ObjectSet(sCountry+" "+i, OBJPROP_BACK, true);          
          ObjectSetText(sCountry+" "+i, 
            sDescription + " · "
            + sPeriod + " · "
            + sCurrent + " · "
            + sForecast,
            8);          
 
   }

    Nun können Sie immer visuell kommende Ereignisse sehen, und ihre Auswirkung auf den Markt. Der bereite Skripts-Code und die Datein mit den Daten sind zum Artikel hinzugefügt. Vergeßen Sie nicht, dass die Skripts im Verzeichnis Experts/Scripts bleiben und die Dateien der Daten müssen in Experts/Files sein. Auch nicht Vergessen an das Datumsformat. YYYY.MM.DD HH:MM, und auch an das Trennzeichen . Die Illustration des Skripts ist unten.

 









    Die Arbeit mit Dateien in MQL4 bietet dem Benutzer eine große Auswahl an Möglichkeiten an, das ist sowie die Verbindung des Terminals mit den außen Daten-Quellen, auch die Vereinfachung und Optimierung der Arbeit mit dem Handelsterminal. Zum Beispiel ist es die Einfügung der Logs, auch die Darstellungs-Möglichkeit der Unterstützungs- / Widerstandslevels,welche Daten direkt aus World Wide Web kommen. Das heisst, wir sollen nicht vergessen, dass der Benutzer in der Wahl über Arbeitsmethoden einer Datei nicht beschränkt ist. Und die Prozessen, welche während einem Handel für die Eröffnung oder Kontrolle über der Positionen automatisiert werden, sollten dazu beitragen, damit die psychologische Belastung für die Händler sinkt, und im Gegenzug die Möglichkeit anbietet, mehrere Faktoren beim Handel zu analysieren. Im Prinzip ist die Sprache MQL4 genau dafür vorgesehen.

    Alle Funktionen MQL4 für die Arbeit mit einer Datei. Die genauere Information befindet sich in der Dokumentation MQL4.

FileClose
FileDelete
FileFlush
FileIsEnding
FileIsLineEnding
FileOpen
FileOpenHistory
FileReadArray
FileReadDouble
FileReadInteger
FileReadNumber
FileReadString
FileSeek
FileSize
FileTell
FileWrite
FileWriteArray
FileWriteDouble
FileWriteInteger
FileWriteString


 

Übersetzt aus dem Russischen von MetaQuotes Software Corp.
Originalartikel: https://www.mql5.com/ru/articles/1382

Beigefügte Dateien |
ReadFromFile.mq4 (3.12 KB)
week.txt (2.26 KB)
week1.txt (1.95 KB)
Der grafische Expert Advisor:AutoGraf Der grafische Expert Advisor:AutoGraf

Es werden die Verwendungsmöglichkeiten der grafischen Mittel betrachtet, um ein bequemes Interface (Benutzeroberfläche) des Kontrollhandels zu erstellen.

Die Einschätzung der Modellierungsqualität von Minutendaten Die Einschätzung der Modellierungsqualität von Minutendaten

Die Formel der Einschätzung und der Berechnung der Modellierungsqualität von Minutendaten.

Die Orders-Berechnung in einem großen Programm Die Orders-Berechnung in einem großen Programm

Betrachtet werden allgemeine Grundlagen der Orders-Berechnung in einem komplizierten Programm.

Orders steuern ist einfach Orders steuern ist einfach

Der Artikel beschreibt die unterschiedlichen Arten der Kontrolle über den geöffneten Positionen und Pending Orders und soll bei der Erstellung eines Expertes helfen.