MetaTrader 5 Build 1455: Bibliotheken mathematischer Funktionen in MQL5

Was ist neu im MetaTrader 5

14 Oktober 2016

Terminal

  1. Es wurden Tooltips für die Buttons Buy, Sell und Close in Handelsdialogen hinzugefügt. Die Tooltips erklären, welche Aktiva genau bei der Abwicklung der Transaktion gekauft bzw. verkauft werden, und helfen Anfängern den Sinn des Handeslprozesses besser nachzuvollziehen.




  2. Es wurden neue Icons für Orders, Trades und Positionen in den Reitern "Handel" und "Historie" hinzugefügt.




  3. Die Anzeige und Aktualisierung der Markttiefe, des Tick-Charts der Markttiefe und von Times & Sales wurde optimiert und wesentlich beschleunigt (um das 4-5-Fache).
  4. Es wurde ein Fehler bei der Synchronisierung der Tick-Historie außerhalb der Handelszeiten korrigiert. In einigen Fällen führte der Fehler zu einem übermäßigen Traffic-Vebrauch.

MQL5

  1. Der Standardbibliothek wurde eine MQL5-Verison der Bibliothek der numerischen Analyse ALGLIB hinzugefügt.

    Eigenschaften der Bibliothek

    • Lineare Algebra
    • Lösen von Gleichungen - linearen und nicht linearen
    • Interpolation
    • Optimierung
    • Schnelle Fourier-Transformation
    • Numerische Integration
    • Lineare und nicht lineare Approximation nach der Methode der kleinsten Quadraten
    • Gewöhnliche Differentialgleichungen
    • Berechnung spezieller Funktionen
    • Deskriptive Statistik und Hypothesentest
    • Datenanalyse - Klassifizierung, Regression
    • Implementierung von Algorithmen linearen Algebra, Interpolation usw. hochgenaue Arithmetik (mit MPFR)

    Wie es verwendet wird

    Die Dateien der ALGLIB sind im Verzeichnis \MQL5\Include\Math\Alglib gespeichert. Für die Verwendung der Funktionen, fügen Sie Ihrem Programm die Hauptdatei hinzu:

    #include <Math\Alglib\alglib.mqh>

  2. Der Standardbibliothek wurden Funktionen für das Arbeiten mit der mathematischen Statistik hinzugefügt. Nun sind die Möglichkeiten der R-Sprache, eines der besten Werkzeuge der statistischen Datenverarbeitung und -analyse, in MQL5 verfügbar.

    Eigenschaften der Bibliothek

    Die statistische Bibliothek beinhaltet Funktionen für die Berechnung statistischer Eigenschaften sowie Funktionen für das Arbeiten mit statistischen Verteilungen:

    • Funktionen für die Berechnung statistischer Charakteristiken der Elemente eines Arrays
    • Funktionen für das Arbeiten mit statistischen Verteilungen: Normalverteilung, Log-Normalverteilung, Betaverteilung usw.

    Wie es verwendet wird

    Die Dateien der statistischen Bibliothek sind in \MQL5\Include\Math\Stat gespeichert. Um Funktionen der Bibliothek zu verwenden, fügen Sie die Datei mit den notwendigen Funktionen in Ihr Programm hinzu, zum Beispiel:

    #include <Math\Stat\Binomal.mqh>
    #include <Math\Stat\Cauchy.mqh>
    

    Eine ausführliche Beschreibung der Bibliotheksfunktionen finden Sie im Artikel Statistische Verteilung in MQL5 - das beste aus R rausholen.


  3. Der Standardbibliothek wurde eine MQL5-Version der Fuzzy-Bibliothek hinzugefügt, in der Inferenzen vom Typ Mamdani und Sugeno implementiert werden.

    Eigenschaften der Bibliothek

    • 13 Zugehörigkeitsfunktionen
    • Flexible Form für die Entwicklung von Relgeln für Fuzzy-Systeme
    • Unscharfe Inferenz nach Mamdani
    • Unscharfe Inferenz nach Sugeno
    • 5 Methoden der Defuzzifizierung für das System vom Typ Mamdani
    • Unbegrenzte Anzahl der Ein- und Ausgabevariablen

    Wie es verwendet wird

    Die Dateien der Fuzzy-Bibliothek sind im Verzeichnis \MQL5\Include\Math\Fuzzy gespeichert. Um Funktionen der Bibliothek zu verwenden, fügen Sie die Datei mit den notwendigen Funktionen in Ihr Programm hinzu, zum Beispiel:

    #include <Math\Fuzzy\mamdanifuzzysystem.mqh>
    #include <Math\Fuzzy\sugenofuzzysystem.mqh>
    

    Eine ausführliche Beschreibung der Bibliothek ist in der Code Base zu finden: Fuzzy - Bibliothek für das Arbeiten mit der Fuzzy-Logik


  4. Es wurde die Eigenschaft CHART_QUICK_NAVIGATION für das Aktivieren/Deaktivieren der Leiste der schnellen Navigation hinzugefügt. Für die Änderung und das Erhalten des Zustands der Eigenschaft verwenden Sie bitte die Funktionen ChartSetInteger und ChartGetInteger.




    Die Navigationsleiste wird durch das Drücken auf die Eingabe- oder Leertaste aufgerufen. So können Sie schnell zum angegebenen Datum auf dem Chart gelangen sowie Symbol oder Zeitrahmen ändern. Wenn Ihr MQL5-Programm das Drücken der Eingabe- und Leertaste verarbeitet, deaktivieren Sie die Option CHART_QUICK_NAVIGATION, damit das Terminal diese Events nicht abfängt. Die Navigationsleiste kann auch mit einem Doppelklick aufgerufen werden.

  5. Es wurden die Funktionen FileLoad und FileSave für ein einfaches Lesen und Speichern von Arrays in Dateien hinzugefügt. Im Gegensatz zu FileRead* und FileWrite* brauchen diese Funktionen den Handle der Datei nicht. FileLoad und FileSave funktionieren mit Arrays von numerischen Typen sowie mit einfachen Strukturen, die keine Strings, dynamischen Arrays oder Klassenobjekte haben.
    long  FileLoad(
       const string filename,      // [in] Dateiname
       void         &buffer[],     // [out] ein Array, in das die Datei geschrieben wird liest
       uint         common_flag=0  // [in] 0 - Suche nach der Datei im Files-Ordner des Terminals, FILE_COMMON - im gemeinsamen Verzeichnis der Terminals
       );
    
    bool  FileSave(
       const string filename,      // [in] Dateiname
       const void   &buffer[],     // [in] Array, welches in der Datei gespeichert wird
       uint         common_flag=0  // [in] 0 - Erstellung einer Datei im Files-Ordner des Terminals, FILE_COMMON - im gemeinsamen Verzeichnis der Terminals
       );
       );
    Ein Beispiel dafür, wie Ticks in eine Datei geschrieben und anschließend gelesen werden:
    //--- Eingabeparameter
    input int      ticks_to_save=1000; // Anzahl von Ticks
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       string  filename=_Symbol+"_ticks.bin";
       MqlTick ticks[];
    //---
       int copied=CopyTicks(_Symbol,ticks,COPY_TICKS_ALL,0,ticks_to_save);
       if(copied!=-1)
         {
          PrintFormat(" CopyTicks(%s) copied %d ticks",_Symbol,copied);
          //--- wenn die Tick-Historie synchronisiert ist, ist der Fehlercode gleich Null
          if(!GetLastError()==0)
             PrintFormat("%s: Ticks are not synchronized. Error=",_Symbol,copied,_LastError);
          //---  schreiben wir die Ticks in eine Datei
          if(!FileSave(filename,ticks,FILE_COMMON))
             PrintFormat("FileSave() failed, error=%d",GetLastError());
         }
       else
          PrintFormat("Failed CopyTicks(%s), Error=",_Symbol,GetLastError());
    //--- nun lesen wir diese Ticks aus der Datei
       ArrayFree(ticks);
       long count=FileLoad(filename,ticks,FILE_COMMON);
       if(count!=-1)
         {
          Print("Time\tBid\tAsk\tLast\tVolume\tms\tflags");
          for(int i=0;i<count;i++)
            {
             PrintFormat("%s.%03I64u:\t%G\t%G\t%G\t%I64u\t0x%04x",
             TimeToString(ticks[i].time,TIME_DATE|TIME_SECONDS),ticks[i].time_msc%1000,
             ticks[i].bid,ticks[i].ask,ticks[i].last,ticks[i].volume,ticks[i].flags);
            }
         }
      }

  6. Die Anzeige benutzerdefinierter Indikatoren mit dem Modus DRAW_CANDLES wurde geändert. Nun kann man für diesen Stil eine bis drei Farben setzen, davon hängt die Darstellung von Kerzen ab.

    Wenn nur eine Farbe angegeben wurde, werden alle Kerzen auf dem Chart diese Farbe haben.
    //--- Kerzen haben die gleiche Farbe  
    #property indicator_label1  "One color candles"
    #property indicator_type1   DRAW_CANDLES
    //--- es wurde nur eine Farbe angegeben, deswegen haben alle Kerzen die gleiche Farbe
    #property indicator_color1  clrGreen  
    Wenn zwei Farben angegeben wurden, werden die Umrisse der Kerzen die erste Farbe und der Körper — die zweite Farbe haben.
    //--- die Farbe der Kerzen unterscheidet sich von der Farbe der Schatten
    #property indicator_label1  "Two color candles"
    #property indicator_type1   DRAW_CANDLES
    //--- Schatten und Umriss - grün, Körper - weiss
    #property indicator_color1  clrGreen,clrWhite 
    Wenn drei Farben angegeben wurden, werden der Umriss der Kerzen die erste Farbe, bullische Kerzen - die zweite und bärische Kerzen - die dritte Farbe haben.
    //--- die Farbe der Kerzen unterscheidet sich von der Farbe der Schatten
    #property indicator_label1  "One color candles"
    #property indicator_type1   DRAW_CANDLES
    //--- die Schatten und der Umriss sind grün, der Körper der bärischen Kerze ist weiß, der Körper der bärischen Kerze ist rot
    #property indicator_color1  clrGreen,clrWhite,clrRed
    Auf diese Weise kann man mithilfe des Stils DRAW_CANDLES eigene benutzerdefinierte Varianten der Kerzenfarben gestalten. Alle Farben können beim Laufen des Indikators mithilfe der Funktion PlotIndexSetInteger(Index_DRAW_CANDLES, PLOT_LINE_COLOR, modifier_nummer, Farbe) geändert werden, wobei:
    • 0 – Farbe des Umrisses und der Schatten
    • 1– Farbe des Körpers einer bullischen Kerze
    • 2 – Farbe des Körpers einer bärischen Kerze
    //--- setzen wir die Farbe für den Umriss und die Schatten
    PlotIndexSetInteger(0,PLOT_LINE_COLOR,0,clrBlue);
    //--- setzen wir die Farbe für den Körper der bullischen Kerze
    PlotIndexSetInteger(0,PLOT_LINE_COLOR,1,clrGreen);
    //--- setzen wir die Farbe für den Körper der bärischen Kerze
    PlotIndexSetInteger(0,PLOT_LINE_COLOR,2,clrRed);
  7. Es wurde eine Reihe von Fehlern behoben und das Arbeiten mit der Tick-Historie mithilfe der CopyTicks Funktion beschleunigt.
  8. Die Verwendung von Operatoren wurde in Schnittstellen erlaubt.

Market

  1. Es wurde ein Fehler behoben, der in einigen Fällen zu einer erneuten Autorisierung auf MQL5.community beim Einkaufen im Market führte.

Tester

  1. Es wurde eine Übersetzung der Benutzerschnittstelle in die griechische, malaiische und neuhebräische Sprachen hinzugefügt.

Die Dokumentation wurde aktualisiert.