Was ist neu im MetaTrader 5

Die Aktualisierungen der Plattformen für den Desktop, Mobile und Web

16 Dezember 2022
MetaTrader 5 Build 3550: Verbesserungen und Korrekturen

MetaTrader 5 Client Terminal Build 3550

  1. Terminal: Aktualisierte Übersetzungen der Nutzeroberfläche.
  2. Korrekturen aufgrund von Absturzprotokollen.

MetaTrader 5 Web Terminal Build 3550

9 Dezember 2022
MetaTrader 5 Build 3540: 2FA/TOTP-Authentifizierung und verbesserte Marktbeobachtung im Webterminal

Web Terminal

  1. 2FA/TOTP-Authentifizierung mit Google Authenticator und ähnlichen Anwendungen hinzugefügt.

    Die 2FA/TOTP-Authentifizierung schützt ein Handelskonto vor unbefugtem Zugriff, selbst wenn dessen Login und Passwort bekannt geworden sind. Die Authentifizierung mit dem One-Time-Password-Algorithmus (TOTP) kann mit verschiedenen mobilen Anwendungen umgesetzt werden. Die bekanntesten davon sind Google Authenticator, Microsoft Authenticator, LastPass Authenticator und Authy. Jetzt können Sie sich mit Ihrem Konto im MetaTrader 5-Client-Terminal verbinden, indem Sie Einmalpasswörter verwenden, die von solchen Authenticator-Apps generiert werden.

    Um die Zwei-Faktor-Authentifizierung zu aktivieren, verbinden Sie sich über das MetaTrader 5 Web Terminal mit Ihrem Konto. Klicken Sie dann im Menü auf Ihr Konto und wählen Sie im neu geöffneten Dialog „Enable 2FA“ (2FA aktivieren). Starten Sie die Authenticator-App auf Ihrem Mobilgerät, klicken Sie auf „+“, um Ihr Handelskonto hinzuzufügen, und scannen Sie den QR-Code vom Terminal. Geben Sie den generierten Code in das Feld „One-time password“ (Einmalpasswort) ein und klicken Sie auf „Enable 2FA“ (2FA aktivieren). Für Ihr Konto wird auf dem Handelsserver des Brokers ein Geheimcode registriert.


    Unterstützung für 2FA/TOTP-Authentifizierung mit Google Authenticator und ähnlichen Apps wurde hinzugefügt.


    Der gespeicherte Geheimcode wird in der Authenticator-App verwendet, um jedes Mal, wenn Sie sich mit Ihrem Konto verbinden, ein Einmalpasswort, One-time password oder OTP, zu generieren. Jedes Passwort ist 30 Sekunden lang gültig. Danach wird ein Neues erstellt.


    Für die Verbindung mit dem Konto ist ein zusätzliches Einmalpasswort, ein One-Time Password oder OTP, von der Authenticator-App erforderlich


    Im QR-Code-Dialog wird auch ein Backup-Code für die Verknüpfung mit dem Generator angezeigt. Bewahren Sie sie an einem sicheren Ort auf. Wenn Sie den Zugang zu Ihrem verknüpften Gerät verlieren, können Sie mit dem Code Ihr Konto wieder zur Authenticator-App hinzufügen.

    Wenn Sie sich entscheiden, den gespeicherten Geheimcode aus der Authenticator-App zu entfernen, sollten Sie zunächst die 2FA/TOTP-Authentifizierung über den entsprechenden Befehl im Kontextmenü des Kontos deaktivieren. Wenn die neue 2FA/TOTP-Authentifizierungsmethode auf Ihrem Konto nicht verfügbar ist, wenden Sie sich bitte an Ihren Broker.

  2. Die Anzahl der im Market Watch angezeigten Daten wurde erweitert. Zusätzlich zu den aktuellen Bid/Ask (Geld-/Briefkursen) und der prozentualen Preisänderung können Sie nun sehen:

    • Maximaler und minimaler Geld-/Briefkurs für die aktuelle Handelssitzung
    • Eröffnungskurse der aktuellen Handelssitzung und Schlusskurse der vorherigen Handelssitzung

    Verwenden Sie das Kontextmenü, um die angezeigten Informationen anzupassen:


    Zusätzliche Daten der Marktübersicht


  3. Die Anzeige von Risikomeldungen wurde hinzugefügt, wenn eine entsprechende Einstellung auf der Seite des Brokers aktiviert ist. Einige Regulierungsbehörden verlangen, dass die Händler die Meldung vor dem Handel lesen und akzeptieren.
  4. Die Anzeige der oberen Symbolleiste auf iPhone-Modellen mit einer Aussparung am oberen Rand des Bildschirms wurde korrigiert. Zuvor konnte sie gelegentlich die Tasten des Bedienfelds verdecken.
  5. Die Anzeige der endgültigen Finanzparameter des Kontos (Gewinn, Eigenkapital usw.) im Google Chrome Browser wurde korrigiert. Manchmal wurden sie nicht aktualisiert.

Terminal

  1. Der Dialog zur Eröffnung eines Demokontos wurde optimiert und stark beschleunigt.
  2. Aktualisierte Übersetzungen der Nutzeroberfläche.
  3. Korrekturen aufgrund von Absturzprotokollen.

MQL5

  1. Der Klasse COpenCL der Standardbibliothek wurden neue Methoden hinzugefügt:

    • BufferFromMatrix — Füllen des Gerätepuffers mit Daten aus der Matrix
    • BufferToMatrix — Einlesen der Daten aus dem Gerätepuffer in die Matrix
    • ContextCreate — Erstellung des Gerätekontexts (der erste Teil der Initialisierungsmethode )
    • ProgramCreate — Erstellung eines Programms auf der Grundlage des OpenCL-Quellcodes (der zweite Teil der Initialisierungsmethode)
    • ContextClean — Freigabe aller zum Gerätekontext gehörenden Daten (ähnlich wie bei der Methode Shutdown, jedoch ohne den Kontext zu entfernen)
    • GetDeviceInfoInteger — Empfangen einer ganzzahligen Geräteeigenschaft
    • GetKernelInfoInteger — Empfangen einer ganzzahligen Kernel-Eigenschaft
    • GetDeviceInfo — empfängt jede einzelne ganzzahlige Geräteeigenschaft, die nicht in der Aufzählung ENUM_OPENCL_PROPERTY_INTEGER enthalten ist

    Verwendungsbeispiel von GetDeviceInfo;
    long preferred_workgroup_size_multiple=OpenCL.GetDeviceInfo(0x1067);
  2. Die Werte TERMINAL_CPU_NAME und TERMINAL_OS_VERSION wurden zur Enumeration ENUM_TERMINAL_INFO_STRING hinzugefügt. Sie ermöglichen den Empfang der CPU- und Betriebssystemnamen des Nutzers.
    void OnStart()
      {
       string cpu,os;
    //---
       cpu=TerminalInfoString(TERMINAL_CPU_NAME);
       os=TerminalInfoString(TERMINAL_OS_VERSION);
       PrintFormat(„CPU: %s, OS: %s“,cpu,os);
      }
    
    Ergebnis:
    CPU: Intel Xeon  E5-2630 v4 @ 2.20GHz, OS: Windows 10 build 19045
  3. Die Funktion des Parameters „table_or_sql“ in den Funktionen DatabasePrint und DatabaseExport wurde korrigiert. Jetzt kann er zusätzlich zu einer SQL-Abfrage auch einen Tabellennamen übergeben.

MetaEditor

  1. Die Prüfung der maximalen Anzahl der anzeigbaren Spalten in der Datenbank wurde korrigiert. Es können jetzt bis zu 64 Spalten angezeigt werden.
  2. Die Bedienung von Haltepunkten in kurzen Konstruktionen wie IF[ if(cond) break; ] wurde korrigiert.
25 November 2022
MetaTrader 5 Build 3520: 2FA/TOTP-Authentifizierung mit dem Google Authenticator

Terminal

  1. 2FA/TOTP-Authentifizierung mit Google Authenticator und ähnlichen Anwendungen hinzugefügt.

    Die 2FA/TOTP-Authentifizierung schützt ein Handelskonto vor unbefugtem Zugriff, selbst wenn dessen Login und Passwort bekannt werden. Die Authentifizierung mit dem One-Time-Password-Algorithmus (TOTP) kann mit verschiedenen mobilen Anwendungen umgesetzt werden. Die bekanntesten davon sind Google Authenticator, Microsoft Authenticator, LastPass Authenticator und Authy. Jetzt können Sie sich mit Ihrem Konto im MetaTrader 5-Client-Terminal verbinden, indem Sie Einmalpasswörter verwenden, die von solchen Authenticator-Apps generiert werden.

    Um die Zwei-Faktor-Authentifizierung zu aktivieren, verbinden Sie sich mit Ihrem Konto und führen Sie den Befehl "2FA/TOTP aktivieren" im Kontextmenü Ihres Kontos aus. Starten Sie die Authenticator-App auf Ihrem Mobilgerät, klicken Sie auf "+", um Ihr Handelskonto hinzuzufügen, und scannen Sie den QR-Code vom Terminal. Geben Sie den generierten Code in das Feld "Einmaliges Passwort" ein und klicken Sie auf "2FA aktivieren". Für Ihr Konto wird auf dem Handelsserver des Brokers ein Geheimcode registriert.


    Unterstützung für 2FA/TOTP-Authentifizierung mit Google Authenticator und ähnlichen Apps wurde hinzugefügt.

    Der gespeicherte Geheimcode wird in der Authenticator-App verwendet, um jedes Mal, wenn Sie sich mit Ihrem Konto verbinden, ein Einmalpasswort, One-time password oder OTP, zu generieren. Jedes Passwort ist 30 Sekunden lang gültig. Danach wird ein Neues erstellt.



    Für die Verbindung mit dem Konto ist ein zusätzliches Einmalpasswort, ein One-Time Password oder OTP, von der Authenticator-App erforderlich

    Wenn Sie sich entscheiden, den gespeicherten Geheimcode aus der Authenticator-App zu entfernen, sollten Sie zunächst die 2FA/TOTP-Authentifizierung über den entsprechenden Befehl im Kontextmenü des Kontos deaktivieren. Wenn die neue 2FA/TOTP-Authentifizierungsmethode auf Ihrem Konto nicht verfügbar ist, wenden Sie sich bitte an Ihren Broker.

MQL5

  1. Die Funktion CopyTicks für nutzerdefinierte Handelsinstrumente wurde korrigiert. Bei der Arbeit mit nutzerdefinierten Symbolen konnten unter bestimmten Bedingungen die Anfangsticks der vorherigen Sitzung anstelle der angeforderten Daten zurückgegeben werden.

  2. MQL5: Es wurden neue Enumerationswerte hinzugefügt, um den letzten OpenCL-Fehlercode und die Textbeschreibung zu erhalten.
    1. Der Wert CL_LAST_ERROR (Zahl: 4094) wurde der Enumeration ENUM_OPENCL_PROPERTY_INTEGER hinzugefügt

      Beim Abrufen des letzten OpenCL-Fehlers über CLGetInfoInteger wurde der Parameter handle ignoriert. Fehlerbeschreibungen: https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS.
      Bei einem unbekannten Fehlercode wird die Zeichenfolge "unknown OpenCL error N" zurückgegeben, wobei N der Fehlercode ist.

      Beispiel:
      //--- the first handle parameter is ignored when obtaining the last error code
      int code = (int)CLGetInfoInteger(0,CL_LAST_ERROR);

    2. Der Wert CL_ERROR_DESCRIPTION (4093) wurde der Enumeration ENUM_OPENCL_PROPERTY_STRING hinzugefügt.
      Eine textuelle Fehlerbeschreibung kann mit CLGetInfoString abgerufen werden. Fehlerbeschreibungen: https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS.

      Wenn CL_ERROR_DESCRIPTION verwendet wird, sollte ein Fehlercode als Parameter handle in CLGetInfoString übergeben werden. Wenn CL_LAST_ERROR anstelle des Fehlercodes übergeben wird, gibt die Funktion die letzte Fehlerbeschreibung zurück.

      Beispiel:
      //--- get the code of the last OpenCL error
      int    code = (int)CLGetInfoInteger(0,CL_LAST_ERROR);
      string desc; // to get the text description of the error
      
      //--- use the error code to get the text description of the error
      if(!CLGetInfoString(code,CL_ERROR_DESCRIPTION,desc))
         desc = "cannot get OpenCL error description, " + (string)GetLastError();
      Print(desc);
      
      
      //--- to get the description of the last OpenCL error without receiving the code, pass CL_LAST_ERROR  
      if(!CLGetInfoString(CL_LAST_ERROR,CL_ERROR_DESCRIPTION, desc))
         desc = "cannot get OpenCL error description, " + (string)GetLastError();
      Print(desc);
      Der interne Name der Enumeration wird als Fehlerbeschreibung übergeben. Die Erklärung dazu finden Sie unter https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS. Der Wert CL_INVALID_KERNEL_ARGS bedeutet beispielsweise "Wird zurückgegeben, wenn der Kernel in die Prozess-Enqueue gestellt wird und einige Kernel-Argumente nicht gesetzt oder ungültig sind."

  3. Die Funktion der Methode matrix::MatMul wurde korrigiert. Bei der Arbeit mit großen Matrizen konnte das Terminal bei bestimmten Größen abstürzen.

Behoben wurde ein Fehler in den Absturzprotokollen.
18 November 2022
MetaTrader 5 Build 3510: Verbesserungen am Web-Terminal

MetaTrader 5 WebTerminal

  1. In der mobilen Version haben wir das Sortieren der Handelshistorie und leistungsfähige Filter implementiert. Verwenden Sie die Befehle des oberen Bedienfeld, um die Anzeige der Historie anzupassen:


    Anpassbare Ansicht der Handelshistorie in der mobilen Version


    Die Vorgänge können nach den wichtigsten Parametern sortiert werden, wie z. B. Datum, Ticket, Symbol und Volumen, um nur einige zu nennen.

  2. Verbesserter Zugang zu den Details des Handelskontos.

    • In der Desktop-Version sind die aktuellen Kontodaten anklickbar. Klicken Sie auf das Konto, um seine Details anzuzeigen.
    • In der mobilen Version wird das aktuelle Konto unter dem Abschnitt Einstellungen angezeigt. Klicken Sie auf das Konto, um seine Details anzuzeigen.


    Verbesserter Zugang zu Handelskontodaten

  3. Die Anzeige des Kontotyps im Fenster der Kontoverwaltung wurde korrigiert.
  4. Korrigiert wurde die Anzeige des Kapitals und der freien Marge nach der Seitenaktualisierung des Webterminals in mobilen Browsern.
  5. Die Anzeige der unteren Leiste im mobilen Firefox-Browser wurde korrigiert.

Terminal

  1. Korrigiert wurde die Berechnungen von Kapital und Saldo im Handelsbericht.

MQL5

  1. Neues Verhalten von typename(expr). Die aktualisierte Funktion gibt den vollständigen Typ mit Modifikatoren und Dimensionen (für Arrays) zurück:
    Klasse A
      {
      };
    
    void OnStart(void)
      {
       const A *const arr[][2][3]={};
       Print(typename(arr));
      }
    
    Ergebnis:
    "class A const * const [][2][3]"
Behoben wurde ein Fehler in den Absturzprotokollen.
11 November 2022
MetaTrader 5 Build 3500: Verbesserungen und Korrekturen

Terminal

  1. Das Kontextmenü der Abschnitte Handel und Historie wurde um einen neuen Befehl ergänzt, der den Zugriff auf den neuen Handelsbericht ermöglicht.


    Der Handelsbericht enthält die folgenden Leistungsdaten:
    • Diagramme und Tabellen zur Visualisierung der monatlichen Wachstumsmetriken
    • Kapitaldiagramm
    • Sterndiagramm, das eine schnelle Bewertung der Kontosituation ermöglicht
    • Handelsstatistiken nach Instrumenten
    • Eine Vielzahl zusätzlicher Metriken für die Handelsanalyse

  2. Korrigierte Berechnungen der Ersteinlage im Handelsbericht.
  3. Die Einstellung der Stop-Loss- und Take-Profit-Level bei Verwendung des Quick-Trading-Paneels im Chart und Market Watch wurde korrigiert. Die Level konnten von zuvor eröffneten Positionen übernommen werden, auch wenn die Übernahme nicht erforderlich war (die entsprechende Funktionsweise ist für FIFO-basierte Konten implementiert).
  4. Aktualisierte Übersetzungen der Nutzeroberfläche.

MQL5

  1. Es wurde ein Compilerfehler behoben, der den Zugriff auf ein Strukturfeld über eine konstante Zeichenkette mit dem Wert des Feldnamens ermöglichte.
  2. Die Prüfung von Tastenzuständen mit der Funktion TerminalInfoInteger(TERMINAL_KEYSTATE_*) wurde korrigiert.

Fehler in den Absturzprotokollen wurden behoben.

MetaTrader 5 WebTerminal Version 3500

  1. Ein Fehler, durch den Positionen bei Requotes geschlossen wurden, wurde korrigiert.
  2. Die Verbindung zum Server wurde wiederhergestellt, nachdem ein Browser-Fenster maximiert wurde, das lange Zeit inaktiv war.
  3. Korrigierte Anzeige der Kreditmittel.
  4. Verbesserungen und Korrekturen
4 November 2022
MetaTrader 5 Build 3490: Die Version des Mobile Web Terminals und neue Matrix-Methoden in MQL5

Mobile Version der Webplattform

Das neue Web-Terminal bietet eine umfassende Unterstützung für mobile Geräte. Die Oberfläche passt sich automatisch an die Bildschirmgröße an und ermöglicht so eine effiziente Bedienung von iOS- und Android-Handys und -Tablets:


Außerdem bietet das Web-Terminal eine Reihe von Korrekturen und Verbesserungen.

Das neue MetaTrader 5 Web-Terminal unterstützt den vollen Umfang der Handelsfunktionen. Es ermöglicht den Nutzern:

  • die Arbeit mit Demo- und Live-Konten,
  • den Erhalt von Preise für jede Art von Finanzsymbolen,
  • den Handel auf allen Märkten,
  • die Analyse der Preise der Symbole mit mehr als 30 Indikatoren und 20 grafischen Objekten,
  • die Nutzung der Wirtschaftskalenderdaten für die Fundamentalanalyse,


Terminal

  1. Erweiterte Funktionen des Task-Managers. Die neue Version ermöglicht eine genauere Überwachung der verwendeten Ressourcen.

    • Die Anzeige der Stackgröße für Threads wurde hinzugefügt.
    • Die Anzeige der Anzahl der Kontextwechsel wurde hinzugefügt.
    • Erkennung von System- und Drittanbieter-DLL-Threads hinzugefügt.
    • Anzeige der Betriebszeit im Kernel-Modus hinzugefügt. Ein Anstieg dieser Kennzahl im Vergleich zu der im Nutzermodus verbrachten Zeit kann auf Probleme auf Systemebene hinweisen: Treiberprobleme, Hardwarefehler oder langsame Hardware. Für weitere Details lesen Sie bitte die Microsoft Dokumentation.
    • Die Anzeige der Betriebszeit im Nutzermodus wurde hinzugefügt.




  2. Neue OpenCL-Registerkarte in den Terminaleinstellungen zur Verwaltung der verfügbaren Geräte. Der neue OpenCL-Manager ermöglicht die explizite Angabe von Geräten, die für Berechnungen verwendet werden sollen.




  3. Hinzugefügt wurde die Darstellung von Stop-Loss und Take-Profit in der Markttiefe für Konten, die im FIFO-Modus arbeiten (der Modus kann auf der Seite des Brokers aktiviert werden).

    Nach der FIFO-Regel können die Positionen für jedes Instrument nur in der gleichen Reihenfolge geschlossen werden, in der sie eröffnet wurden. Um durch die Stopp-Level die Positionen FIFO-konforme zu schließen, wurde auf der Seite des Client-Terminals folgende Logik implementiert:

    Wenn mehrere Positionen für dasselbe Instrument bestehen, führt das Setzen von Stopp-Levels für eine der Positionen dazu, dass die gleichen Levels auch für alle anderen Positionen gesetzt werden. Dementsprechend werden bei Auslösung eines Levels alle Positionen in einer FIFO-konformen Reihenfolge geschlossen.

    Wenn der Nutzer nun die Markttiefe für ein Instrument öffnet, für das bereits offene Positionen bestehen, werden die Niveaus der bestehenden Positionen (falls vorhanden) automatisch in den Feldern Stop-Loss und Take-Profit angegeben.

  4. Das Löschen von Stop-Loss- und Take-Profit-Levels mit Hilfe der X-Schaltflächen im Toolbox\Trade-Fenster wurde korrigiert. Der Fehler trat auf, wenn die Schnellhandelsfunktion deaktiviert war. Ein Klick auf die Schaltfläche öffnet einen Handelsdialog mit einem leeren Wert des entsprechenden Levels.

  5. Die Beschriftung der Grafiken und die Berechnung der Endprovisionen im Handelsbericht wurden korrigiert. Der Abschnitt konnte falsche Gewinne in den Berichtsstatistiken und falsche Werte in den Tooltips der Kapital- und Saldendiagramme anzeigen.

MQL5

  1. Die Vektor- und Matrixmethoden CopyTicks und CopyTicksRange wurden hinzugefügt. Sie ermöglichen das einfache Kopieren von Arrays mit Tickdaten in Vektoren und Matrizen.
    bool matrix::CopyTicks(string symbol,uint flags,ulong from_msc,uint count);
    bool vector::CopyTicks(string symbol,uint flags,ulong from_msc,uint count);
    
    bool matrix::CopyTicksRange(string symbol,uint flags,ulong from_msc,ulong to_msc);
    bool matrix::CopyTicksRange(string symbol,uint flags,ulong from_msc,ulong to_msc);
    Der kopierte Datentyp wird im Parameter rates_mask unter Verwendung der Enumeration ENUM_COPY_RATES angegeben. Die folgenden Werte sind verfügbar:
    COPY_TICKS_INFO    = 1,       // Ticks aufgrund der Änderungen von Bid and/or Ask
    COPY_TICKS_TRADE   = 2,       // Ticks aufgrund der Änderungen von Last und Volumen
    COPY_TICKS_ALL     = 3,       // alle Ticks haben sich geändert
    COPY_TICKS_TIME_MS = 1<<8,    // Zeit in Millisekunden
    COPY_TICKS_BID     = 1<<9,    // Bid-Preis
    COPY_TICKS_ASK     = 1<<10,   // Ask-Preis
    COPY_TICKS_LAST    = 1<<11,   // Last-Preis
    COPY_TICKS_VOLUME  = 1<<12,   // Volume
    COPY_TICKS_FLAGS   = 1<<13,   // Tick-Flags
    Wenn mehrere Datentypen ausgewählt werden (nur bei Matrizen möglich), entspricht die Reihenfolge der Zeilen in der Matrix der Reihenfolge der Werte in der Enumeration.

  2. Erweiterte Funktionen der Methoden matrix::Assign und vector::Assign.

    Jetzt kann der Matrix ein eindimensionales Array oder ein Vektor zugewiesen werden:
    bool matrix::Assign(const vector &vec);
    Das Ergebnis wird eine einzeilige Matrix sein.

    Außerdem kann jetzt eine Matrix einem Vektor zugewiesen werden (es wird Matrixglättung durchgeführt):
    bool vector::Assign(const matrix &mat);
  3. Swap-Methoden für Vektoren und Matrizen hinzugefügt.
    bool vector::Swap(vector &vec);
    bool vector::Swap(matrix &vec);
    bool vector::Swap(double &arr[]);
    bool matrix::Swap(vector &vec);
    bool matrix::Swap(matrix &vec);
    bool matrix::Swap(double &arr[]);
    Jedes Array, jeder Vektor oder jede Matrix verweist auf einen Speicherpuffer, der die Elemente des betreffenden Objekts enthält. Die Swap-Methode tauscht tatsächlich die Zeiger auf diese Puffer aus, ohne die Elemente in den Speicher zu schreiben. Eine Matrix bleibt also eine Matrix, und ein Vektor bleibt ein Vektor. Das Vertauschen einer Matrix und eines Vektors führt zu einer einzeiligen Matrix mit Vektorelementen und einem Vektor mit Matrixelementen in einer flachen Darstellung (siehe die Methode Flat).
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
     {
    //---
      matrix a= {{1, 2, 3}, {4, 5, 6}};
      Print("a vor dem Tausch: \n", a);
      matrix b= {{5, 10, 15, 20}, {25, 30, 35, 40}, {45, 50, 55, 60}};
      Print("b vor dem Tausch: \n", b);  
    //--- Tausch der Matrix-Pointer
      a.Swap(b);
      Print("a nach dem Tausch: \n", a);
      Print("b nach dem Tausch: \n", b);
      /*
      a vor dem Tausch:
      [[1,2,3]
      [4,5,6]]
      b vor dem Tausch:
      [[5,10,15,20]
      [25,30,35,40]
      [45,50,55,60]]
      
      a nach dem Tausch:
      [[5,10,15,20]
      [25,30,35,40]
      [45,50,55,60]]
      b nach dem Tausch:
      [[1,2,3]
      [4,5,6]]
      */
      vector v=vector::Full(10, 7);
      Print("v vor dem Tausch: \n", v);
      Print("b vor dem Tausch: \n", b);
      v.Swap(b);
      Print("v nach dem Tausch: \n", v);
      Print("b nach dem Tausch: \n", b);
      /*
      v vor dem Tausch:
      [7,7,7,7,7,7,7,7,7,7]
      b vor dem Tausch:
      [[1,2,3]
      [4,5,6]]
      
      v nach dem Tausch:
      [1,2,3,4,5,6]
      b nach dem Tausch:
      [[7,7,7,7,7,7,7,7,7,7]]
      */
     }
    Die Methode Swap() ermöglicht auch Operationen mit dynamischen Arrays (Arrays fester Größe können nicht als Parameter übergeben werden). Das Array kann eine beliebige Dimension haben, aber eine vereinbarte Größe, was bedeutet, dass die Gesamtgröße einer Matrix oder eines Vektors ein Vielfaches der Dimension Null des Arrays sein muss. Die Dimension Null des Arrays enthält die Anzahl der Elemente, die im ersten Index enthalten sind. Bei einem dynamischen dreidimensionalen Array ‚double array[][2][3]‘ beispielsweise ist die Dimension Null das Produkt aus der Größe der zweiten und dritten Dimension: 2x3=6. Daher kann ein solches Array bei der Swap-Methode nur mit Matrizen und Vektoren verwendet werden, deren Gesamtgröße ein Vielfaches von 6 ist: 6, 12, 18, 24, usw.

    Betrachten Sie das folgende Beispiel:
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
     {
    //--- Füllen einer 1x10 Matrix mit dem Wert 7.0
      matrix m= matrix::Full(1, 10, 7.0);
      Print("matrix vor dem Tausch:\n", m);
    //--- Tauschversuch von Matrix und Array
      double array_small[2][5]= {{1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}};
      Print("array_small vor dem Tausch:");
      ArrayPrint(array_small);
      if(m.Swap(array_small))
       {
        Print("array_small nach dem Tausch:");
        ArrayPrint(array_small);
        Print("matrix nach dem Tausch: \n", m);
       }
      else // Die Größe der Matrix ist kein Vielfaches der ersten Dimension
       {
        Print("m.Swap(array_small) failed. Error ", GetLastError());
       }
      /*
      matrix vor dem Tausch:
      [[7,7,7,7,7,7,7,7,7,7]]
      array_small vor dem Tausch:
               [,0]     [,1]     [,2]     [,3]     [,4]
      [0,]  1.00000  2.00000  3.00000  4.00000  5.00000
      [1,]  6.00000  7.00000  8.00000  9.00000 10.00000
      m.Swap(array_small) failed. Error 4006
      */
    //--- neuer Versuch des Tausches mit einer größeren Matrix
      double array_static[3][10]= {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10},
         {2, 4, 6, 8, 10, 12, 14, 16, 18, 20},
         {3, 6, 9, 12, 15, 18, 21, 24, 27, 30}
       };
      Print("array_static vor dem Tausch:");
      ArrayPrint(array_static);
      if(m.Swap(array_static))
       {
        Print("array_static nach dem Tausch:");
        ArrayPrint(array_static);
        Print("matrix nach dem Tausch: \n", m);
       }
      else // ein statisches Array kann nicht für einen Matrix-Tausch verwendet werden
       {
        Print("m.Swap(array_static) failed. Error ", GetLastError());
       }
      /*
      array_static vor dem Tausch:
             [,0]     [,1]     [,2]     [,3]     [,4]     [,5]     [,6]     [,7]     [,8]     [,9]
      [0,]  1.00000  2.00000  3.00000  4.00000  5.00000  6.00000  7.00000  8.00000  9.00000 10.00000
      [1,]  2.00000  4.00000  6.00000  8.00000 10.00000 12.00000 14.00000 16.00000 18.00000 20.00000
      [2,]  3.00000  6.00000  9.00000 12.00000 15.00000 18.00000 21.00000 24.00000 27.00000 30.00000
      m.Swap(array_static) failed. Error 4006
      */
    //--- ein weiterer Tauschversuch von Array und matrix
      double array_dynamic[][10];    // dynamischer Array
      ArrayResize(array_dynamic, 3); // setzen der Größe der ersten Dimension
      ArrayCopy(array_dynamic, array_static);
    //--- jetzt die Verwendung eines dynamischen Arrays für dejn Tausch
      if(m.Swap(array_dynamic))
       {
        Print("array_dynamic nach dem Tausch:");
        ArrayPrint(array_dynamic);
        Print("matrix nach dem Tausch: \n", m);
       }
      else //  no error
       {
        Print("m.Swap(array_dynamic) failed. Error ", GetLastError());
       }
      /*
      array_dynamic nach dem Tausch:
            [,0]    [,1]    [,2]    [,3]    [,4]    [,5]    [,6]    [,7]    [,8]    [,9]
      [0,] 7.00000 7.00000 7.00000 7.00000 7.00000 7.00000 7.00000 7.00000 7.00000 7.00000
      matrix nach dem Tausch:
      [[1,2,3,4,5,6,7,8,9,10,2,4,6,8,10,12,14,16,18,20,3,6,9,12,15,18,21,24,27,30]]
      */
     }
  4. Die Methode LossGradient für Vektoren und Matrizen wurde hinzugefügt. Diese Methode berechnet einen Vektor oder eine Matrix von partiellen Ableitungen der Verlustfunktion auf vorhergesagte Werte. In der linearen Algebra wird ein solcher Vektor als Gradient bezeichnet und beim maschinellen Lernen verwendet.
    vector vector::LossGradient(const vector &expected,ENUM_LOSS_FUNCTION loss) const;
    matrix matrix::LossGradient(const matrix &expected,ENUM_LOSS_FUNCTION loss) const;
  5. Die Verwendung von FOREIGN KEYS in SQLite wurde ermöglicht, um Beziehungen zwischen Tabellen in SQL-Abfragen zu erzwingen.   Beispiel:
    CREATE TABLE artist(
      artistid    INTEGER PRIMARY KEY, 
      artistname  TEXT
    );
    
    CREATE TABLE track(
      trackid     INTEGER, 
      trackname   TEXT, 
      trackartist INTEGER,
      FOREIGN KEY(trackartist) REFERENCES artist(artistid)
    );

  6. Korrigiert wurde die Auswahl der geeigneten Klassenmethode in Abhängigkeit von der Methoden- und Objektdeklaration.

MetaEditor

  1. Die zulässige Länge von Kommentaren bei der Übertragung in den MQL5-Storage wurde erhöht. Ausführliche Kommentare beim Übertragen von Änderungen in das Repository gelten als gute Praxis bei der Arbeit an großen Projekten, aber bisher war die Länge der Kommentare auf 128 Zeichen beschränkt. Die zulässige Länge beträgt jetzt bis zu 260 Zeichen.

MetaTester

  1. Erhöhte Empfindlichkeit des Prüfgeschwindigkeitsschalters im visuellen Modus.
Fehler in den Absturzprotokollen behoben.

17 September 2022
MetaTrader 5 Build 3440: Neuartiger Bericht über das Handelskonto

Terminal

  1. Neuer Bericht über die Handelsleistung des Kontos hinzugefügt. Er ähnelt den bereits bekannten Signal-Berichten in Bezug auf die Verfügbarkeit von Statistiken und die Darstellung der Daten. Die folgenden Leistungsdaten werden auf der Plattform verfügbar sein:
    • Diagramme und Tabellen zur Visualisierung der monatlichen Wachstumsmetriken
    • Diagramm zum Eigenkapital
    • Sterndiagramm, das eine schnelle Bewertung des Kontostands ermöglicht
    • Handelsstatistiken nach Instrumenten
    • Eine Vielzahl zusätzlicher Metriken für die Handelsanalyse

    Der Bericht kann direkt auf der Plattform angezeigt werden, ohne dass er in eine Datei exportiert werden muss. Um ihn zu öffnen, wählen Sie Berichte im Menü Ansicht.



  2. Korrigiertes Füllen der Optionstafeln für Call- und Put-Kontrakte mit nicht übereinstimmender Menge oder Symbolart.
  3. Die Positionsauswahl im Handelsdialog während der Operationen Close by (Schließen durch) wurde korrigiert. Der Fehler trat bei Listen mit entgegengesetzter Reihenfolge auf, die nach einer anderen Spalte als dem Ticket sortiert waren.
  4. Beschleunigte Protokollierung der Plattform.
  5. Die Anzeige von Kommentaren in nutzerdefinierten Symbolcharts wurde korrigiert.

MQL5

  1. Die Funktion CArrayList::LastIndexOf wurde korrigiert. Zuvor wurde immer -1 anstelle des Index des zuletzt gefundenen Elements zurückgegeben.
  2. Neue Matrix- und Vektor-Methode hinzugefügt - Assign (Zuweisung). Es ersetzt Matrix/Vektor-Elemente durch die übergebenen Matrix/Vektor- oder Array-Daten.
    bool vector<TDst>::Assign(const vector<TSrc> &assign);
    bool matrix<TDst>::Assign(const matrix<TSrc> &assign);
    
    Beispiel:
      //--- copying matrices
      matrix b={};
      matrix a=b;
      a.Assign(b);
      
      //--- copying an array to a matrix
      double arr[5][5]={{1,2},{3,4},{5,6}};
      Print("array arr");
      ArrayPrint(arr);
      b.Assign(arr);
      Print("matrix b \n",b);
    /*
    array arr
            [,0]    [,1]    [,2]    [,3]    [,4]
    [0,] 1.00000 2.00000 0.00000 0.00000 0.00000
    [1,] 3.00000 4.00000 0.00000 0.00000 0.00000
    [2,] 5.00000 6.00000 0.00000 0.00000 0.00000
    [3,] 0.00000 0.00000 0.00000 0.00000 0.00000
    [4,] 0.00000 0.00000 0.00000 0.00000 0.00000
    matrix b 
    [[1,2,0,0,0]
     [3,4,0,0,0]
     [5,6,0,0,0]
     [0,0,0,0,0]
     [0,0,0,0,0]]
    
    */
  3. Neue Matrix- und Vektor-Methode hinzugefügt - CopyRates. Es kopiert Preisdaten-Arrays in Vektoren und Matrizen.
    bool matrix::CopyRates(string symbol,ENUM_TIMEFRAMES period,ulong rates_mask,ulong from,ulong count);
    bool vector::CopyRates(string symbol,ENUM_TIMEFRAMES period,ulong rates_mask,ulong from,ulong count);
    Der kopierte Datentyp wird im Parameter rates_mask unter Verwendung der Enumeration ENUM_COPY_RATES angegeben. Die folgenden Werte sind verfügbar:
    COPY_RATES_OPEN
    COPY_RATES_HIGH
    COPY_RATES_LOW
    COPY_RATES_CLOSE
    COPY_RATES_TIME
    COPY_RATES_VOLUME_TICK
    COPY_RATES_VOLUME_REAL
    COPY_RATES_SPREAD
    COPY_RATES_OHLC
    COPY_RATES_OHLCT
    Die letzten beiden Werte ermöglichen die gleichzeitige Auswahl der Parameter mehrerer Balken: Open, High, Low, Close und time. (Eröffnung, Hoch, Tief, Schluss, Zeit)

    Wenn mehrere Datentypen ausgewählt werden (nur bei Matrizen möglich), entspricht die Reihenfolge der Zeilen in der Matrix der Reihenfolge der Werte in der Enumeration.

  4. Die Anzeige von Text-Label-Objekten wurde korrigiert. Bei Verwendung der Eigenschaften OBJPROP_XOFFSET und OBJPROP_YOFFSET konnte ein falsches Bildfragment im Chart angezeigt werden.

  5. Fehler beim Ändern eines konstanten Parameters, der als Objektzeigerreferenz an eine Funktion übergeben wurde, behoben.

    Der Spezifizierer const deklariert eine Variable als Konstante, um zu verhindern, dass sie während der Programmausführung geändert wird. Es erlaubt nur die einmalige Initialisierung von Variablen während der Deklaration. Ein Beispiel für konstante Variablen in der Funktion OnCalculate:

    int OnCalculate (const int rates_total,      // price[] array size
                     const int prev_calculated,  // bars processed on previous call
                     const int begin,            // meaningful data starts at
                     const double& price[]       // array for calculation
       );
    

    Das folgende Beispiel enthält einen Compilerfehler, der ein implizites Zeiger-Casting für Referenzparameter zuließ:

    class A {};
    const A *a = new A;
    
    void foo( const A*& b )
      {
       b = a;
      }
    
    void OnStart()
      {
            A *b; 
            foo(b);  // not allowed
            Print( a,":",b );
      }
    Der Compiler erkennt solche illegalen Operationen und gibt den entsprechenden Fehler zurück.

MetaEditor

  1. Die Anzeige von komplexen Zahlenreferenzen im Debugger wurde korrigiert.
  2. Verbesserter Schutz der MQL5 Cloud. Zuvor konnte der Dateischutz unter bestimmten Bedingungen fehlschlagen.
  3. Fehler in Absturzprotokollen behoben.


Neues MetaTrader 5 Web-Terminal

Wir haben ein überarbeitetes MetaTrader 5 Web-Terminal veröffentlicht, das eine aktualisierte Oberfläche und einen neu gestalteten Kern aufweist. Die neue Oberfläche ähnelt der Terminalversion für das iPad:



Außerdem bietet es eine Fülle neuer Funktionen:

  • Möglichkeit zur Beantragung echter Konten mit dem detaillierten Registrierungsformular und den Optionen zur Einreichung von Dokumenten,
  • Unterstützung für Preisdatenabonnements und die Möglichkeit, verzögerte Kurse zu erhalten,
  • Mehr analytische Objekte mit komfortablen Verwaltungsoptionen,
  • Darstellung auf dem Chart der Ein- und Austritte im Markt,
  • Anzeige der Ereignisse des Wirtschaftskalenders auf dem Chart.
  • Bequeme Konfiguration von Instrumenten im Market Watch, zusammen mit den Tagesänderungen der Preise.
  • Vereinfachte Nutzeroberfläche, um Anfängern den Einstieg in das Terminal zu erleichtern: Das Kontextmenü des Charts und das obere Menü wurden entfernt; alle Befehle zur Chartsteuerung, Objekte und Indikatoren sind auf der linken Seite und im oberen Bereich verfügbar, während andere Befehle über das Hamburger-Menü aufgerufen werden können
  • Dunkler Modus der Schnittstelle

Versuchen Sie das neue Webterminal unter www.mql5.com gleich jetzt. Es wird in Kürze für Ihre Makler verfügbar sein.

4 August 2022
MetaTrader 5 Build 3390: Float in OpenCL und in mathematischen Funktionen, Aktivierungs- und Verlustfunktionen für maschinelles Lernen

Terminal

  1. Automatische Eröffnung eines Tutorials bei der ersten Verbindung mit einem Handelskonto hinzugefügt. Dies wird Anfängern helfen, die Grundlagen des Handels zu erlernen und die Funktionen der Plattform zu erkunden. Das Lernprogramm ist in mehrere Abschnitte unterteilt, die jeweils kurze Informationen zu einem bestimmten Thema enthalten. Der Trainingsfortschritt wird durch eine blaue Linie dargestellt.

    Automatische Eröffnung eines Tutorials bei der ersten Verbindung mit einem Handelskonto hinzugefügt.


  2. Korrektur der Massenschließung‚ Close profitable‘/‚Close losing‘ (Schließe Gewinner/Verlierer) . Zuvor verwendete die Plattform entgegengesetzte Positionen, wenn es sie gab. Wenn Sie z. B. zwei Kaufpositionen im Verlust für EURUSD und eine Verkaufsposition im Gewinn für EURUSD haben, werden alle drei Positionen während des Massenvorgangs ‚Close losing‘ (Verluste schließen) geschlossen. Kauf und Verkauf würden durch den Vorgang ‚Close by‘ (Schließen durch) abgeschlossen, während der verbleibende Kauf durch einen normalen Vorgang abgeschlossen würde. Jetzt funktionieren die Befehle richtig: Sie schließen nur die ausgewählten Positionen, entweder im Gewinn oder Verlust.

  3. Die Anzeige von negativen historischen Preisen wurde korrigiert. Diese Preise werden auf allen Zeitskalen korrekt angezeigt.
  4. Optimierter und deutlich reduzierter Systemressourcenverbrauch durch das Terminal.
  5. Aktualisierte Fundamentaldatenbank für Handelsinstrumente. Die Zahl der verfügbaren Datenaggregatoren für Börseninstrumente wurde auf 15 erweitert. Die Nutzer werden über die beliebtesten Wirtschaftsaggregatoren Zugang zu Informationen über noch mehr Ticker haben.

    Aktualisierte Fundamentaldatenbank für Handelsinstrumente.

    Rund 7.000 Wertpapiere und mehr als 2.000 ETFs sind auf dem globalen Börsenmarkt notiert. Außerdem bieten die Börsen Futures und andere Derivate an. Die Plattform MetaTrader 5 bietet Zugang zu einer riesigen Datenbank von Börseninstrumenten. Um auf die entsprechenden Fundamentaldaten zuzugreifen, kann der Nutzer mit einem Klick direkt von Market Watch aus auf die Website des ausgewählten Aggregators wechseln. Zur Vereinfachung bietet die Plattform eine Auswahl an Informationsquellen für jedes Finanzinstrument.

  6. Corregido el ajuste de los niveles de Stop Loss y Take Profit en la nueva ventana de colocación de nuevas órdenes. En el caso de las cuentas FIFO, los niveles de stop se fijarán ahora de manera automática según los niveles de stop de las posiciones ya abiertas para el mismo instrumento. Esto será necesario para cumplir con la regla FIFO.

MQL5

  1. Die Mathematikfunktionen können jetzt mit Matrizen und Vektoren arbeiten.

    Wir bauen die Möglichkeiten der MetaTrader 5-Plattform für den algorithmischen Handel und das maschinelle Lernen weiter aus. Zuvor haben wir neue Datentypen hinzugefügt: Matrizen und Vektoren, die die Verwendung von Arrays für die Datenverarbeitung überflüssig machen. Mehr als 70 Methoden wurden in MQL5 für Operationen mit diesen Datentypen hinzugefügt. Die neuen Methoden ermöglichen lineare Algebra und statistische Berechnungen in einem einzigen Arbeitsgang. Multiplikation, Umformung und Gleichungssysteme können einfach und ohne übermäßige viele Codezeilen implementiert werden. Das neueste Update enthält mathematische Funktionen.

    Ursprünglich wurden mathematische Funktionen entwickelt, um relevante Operationen mit skalaren Werten durchzuführen. Ab diesem Build können die meisten Funktionen auf Matrizen und Vektoren angewendet werden. Dazu gehören MathAbs, MathArccos, MathArcsin, MathArctan, MathCeil, MathCos, MathExp, MathFloor, MathLog, MathLog10, MathMod, MathPow, MathRound, MathSin, MathSqrt, MathTan, MathExpm1, MathLog1p, MathArccosh, MathArcsinh, MathArctanh, MathCosh, MathSinh, und MathTanh. Solche Operationen implizieren eine elementweise Behandlung von Matrizen oder Vektoren. Beispiel:
    //---
      matrix a= {{1, 4}, {9, 16}};
      Print("matrix a=\n",a);
    
      a=MathSqrt(a);
      Print("MatrSqrt(a)=\n",a);
      /*
       matrix a=
       [[1,4]
        [9,16]]
       MatrSqrt(a)=
       [[1,2]
        [3,4]]
      */
    Bei MathMod und MathPow kann das zweite Element entweder ein Skalar oder eine Matrix/ein Vektor mit der entsprechenden Größe sein.

    Das folgende Beispiel zeigt, wie die Standardabweichung durch Anwendung mathematischer Funktionen auf einen Vektor berechnet werden kann.
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
     {
    //--- Use the initializing function to populate the vector
      vector r(10, ArrayRandom); // Array of random numbers from 0 to 1
    //--- Calculate the average value
      double avr=r.Mean();       // Array mean value
      vector d=r-avr;            // Calculate an array of deviations from the mean
      Print("avr(r)=", avr);
      Print("r=", r);
      Print("d=", d);
      vector s2=MathPow(d, 2);   // Array of squared deviations
      double sum=s2.Sum();       // Sum of squared deviations
    //--- Calculate standard deviation in two ways
      double std=MathSqrt(sum/r.Size());
      Print(" std(r)=", std);
      Print("r.Std()=", r.Std());    
     }
    /*
      avr(r)=0.5300302133243813
      r=[0.8346201971495713,0.8031556138798182,0.6696676534318063,0.05386516922513505,0.5491195410016175,0.8224433118686484,...
      d=[0.30458998382519,0.2731254005554369,0.1396374401074251,-0.4761650440992462,0.01908932767723626,0.2924130985442671, ...
       std(r)=0.2838269732183663
      r.Std()=0.2838269732183663
    */ 
    //+------------------------------------------------------------------+
    //| Fills the vector with random values                              |
    //+------------------------------------------------------------------+
    void ArrayRandom(vector& v)
     {
      for(ulong i=0; i<v.Size(); i++)
        v[i]=double(MathRand())/32767.;
     }
    

  2. In Template-Funktionen wurde Unterstützung für die Notationen matrix<double>, matrix<float>, vector<double>, vector<float> anstelle der entsprechenden Matrix-, matrixf-, vector- und vectorf-Typen hinzugefügt.
  3. Verbesserte mathematische Funktionen für Operationen mit dem Typ float. Die neu implementierte Möglichkeit, mathematische Funktionen auf 'float'-Matrizen und -Vektoren anzuwenden, hat eine Verbesserung der auf 'float'-Skalare angewandten mathematischen Funktionen ermöglicht. Zuvor wurden diese Funktionsparameter bedingungslos in den Typ "double" umgewandelt, dann wurde die entsprechende Implementierung der mathematischen Funktion aufgerufen, und das Ergebnis wurde in den Typ "float" zurückgewandelt. Jetzt werden die Operationen ohne zusätzliches Typenumwandlung (Casting) implementiert.

    Das folgende Beispiel zeigt den Unterschied in den mathematischen Sinusberechnungen:

    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
     {
    //---  Array of random numbers from 0 to 1
      vector d(10, ArrayRandom);
      for(ulong i=0; i<d.Size(); i++)
       {
        double delta=MathSin(d[i])-MathSin((float)d[i]);
        Print(i,". delta=",delta);
       }
     }
    /*
       0. delta=5.198186103783087e-09
       1. delta=8.927621308885136e-09
       2. delta=2.131878673594656e-09
       3. delta=1.0228555918923021e-09
       4. delta=2.0585739779477308e-09
       5. delta=-4.199390279957527e-09
       6. delta=-1.3221741035351897e-08
       7. delta=-1.742922250969059e-09
       8. delta=-8.770715820283215e-10
       9. delta=-1.2543186267421902e-08
    */
    //+------------------------------------------------------------------+
    //| Fills the vector with random values                              |
    //+------------------------------------------------------------------+
    void ArrayRandom(vector& v)
     {
      for(ulong i=0; i<v.Size(); i++)
        v[i]=double(MathRand())/32767.;
     }

  4. Aktivierungs- und Ableitungsmethoden für Matrizen und Vektoren hinzugefügt:
    AF_ELU               Exponential-Linear-Einheit
    AF_EXP               Exponential
    AF_GELU              Gaußscher Fehler Lineare Einheit
    AF_HARD_SIGMOID      Hartes Sigmoid
    AF_LINEAR            Linear
    AF_LRELU             Undichte rektifizierte Lineareinheit
    AF_RELU              Rektifizierte Lineareinheit
    AF_SELU              Skalierte Exponential-Linear-Einheit
    AF_SIGMOID           Sigmoid
    AF_SOFTMAX           Softmax
    AF_SOFTPLUS          Softplus
    AF_SOFTSIGN          Softsign
    AF_SWISH             Swish
    AF_TANH              Hyperbolischer Tangens
    AF_TRELU             Schwellenwerteinheit (Rectified Linear Unit)
    Die Aktivierungsfunktion des neuronalen Netzes bestimmt, wie die Summe der gewichteten Eingangssignale in ein Knotenausgangssignal auf der Netzebene umgewandelt wird. Die Auswahl der Aktivierungsfunktion hat einen großen Einfluss auf die Leistung des neuronalen Netzes. Verschiedene Teile des Modells können unterschiedliche Aktivierungsfunktionen verwenden. Zusätzlich zu allen bekannten Funktionen bietet MQL5 Derivative. Derivativ-Funktionen ermöglichen eine schnelle Berechnung von Anpassungen auf der Grundlage des beim Lernen erhaltenen Fehlers.

  5. Verlustfunktion für Matrizen und Vektoren hinzugefügt. Sie hat die folgenden Parameter:
    LOSS_MSE            Mittlerer quadratischer Fehler
    LOSS_MAE            Mittlerer absoluter Fehler
    LOSS_CCE            Kategoriale Kreuzentropie
    LOSS_BCE            Binäre Kreuzentropie
    LOSS_MAPE           Mittlerer absoluter prozentualer Fehler
    LOSS_MSLE           Mittlerer quadratischer logarithmischer Fehler
    LOSS_KLD            Kullback-Leibler Divergenz
    LOSS_COSINE         Kosinus-Ähnlichkeit/-Nähe
    LOSS_POISSON        Poisson
    LOSS_HINGE          Hinge-Verlustfunktion
    LOSS_SQ_HINGE       Quadratische Hinge-Verlustfunktion
    LOSS_CAT_HINGE      Kategoriale Hinge-Verlustfunktion
    LOSS_LOG_COSH       Logarithmus des Hyperbolischen Kosinus
    LOSS_HUBER          Huber-Verlustfunktion

    Die Verlustfunktion bewertet, wie gut das Modell die tatsächlichen Werte vorhersagt. Die Modellkonstruktion zielt darauf ab, den Funktionswert in jeder Phase zu minimieren. Der Ansatz hängt von dem jeweiligen Datensatz ab. Außerdem kann die Verlustfunktion von Gewicht und Offset abhängen. Die Verlustfunktion ist eindimensional und kein Vektor, da sie eine allgemeine Bewertung des neuronalen Netzes liefert.

  6. Hinzugefügt wurden die Methoden Matrix::CompareByDigits und vector::CompareByDigits für Matrizen und Vektoren. Sie vergleichen die Elemente zweier Matrizen/Vektoren bis zu signifikanten Ziffern.

  7. Unterstützung für die Funktionen MathMin und MathMax für Zeichenketten (strings) hinzugefügt. Die Funktionen verwenden lexikografische Vergleiche: Buchstaben werden alphabetisch verglichen, Groß- und Kleinschreibung wird beachtet.

  8. Die maximale Anzahl von OpenCL-Objekten wurde von 256 auf 65536 erhöht. Die Handles von einem OpenCL-Objekt werden in einem MQL5-Programm mit den Funktionen CLContextCreate, CLBufferCreate und CLProgramCreate erstellt. Die bisherige Grenze von 256 Handles war für den effizienten Einsatz von Methoden des maschinellen Lernens nicht ausreichend.

  9. Es wurde die Möglichkeit hinzugefügt, OpenCL auf Grafikkarten ohne Unterstützung von double-Werten zu verwenden. Bisher waren in MQL5-Programmen nur GPUs erlaubt, die Double-Typen unterstützen, obwohl viele Aufgaben Berechnungen mit Float erlauben. Der Float-Typ wird zunächst als nativ für die Parallelverarbeitung angesehen, da er weniger Platz benötigt. Daher wurde die alte Vorschrift aufgehoben.

    Um die obligatorische Verwendung von Grafikprozessoren mit Unterstützung von double Werten für bestimmte Aufgaben festzulegen, verwenden Sie die Option CL_USE_GPU_DOUBLE_ONLY im Aufruf CLContextCreate.
       int cl_ctx;
    //--- Initializing the OpenCL context
       if((cl_ctx=CLContextCreate(CL_USE_GPU_DOUBLE_ONLY))==INVALID_HANDLE)
         {
          Print("OpenCL not found");
          return;
         }

  10. Die Arbeitsweise der Funktion CustomBookAdd wurde korrigiert. Zuvor verhinderte ein Wert ungleich Null im Feld MqlBookInfo::volume_real, dass die Funktion einen Snapshot der Markttiefe erstellen konnte. Die Prüfung wird nun wie folgt durchgeführt:
    Die übermittelten Daten werden validiert: Typ, Preis und Volumen müssen für jedes Element angegeben werden. Außerdem dürfen MqlBookInfo.volume und MqlBookInfo.volume_real nicht null oder negativ sein. Sind beide Volumina negativ, wird dies als Fehler gewertet. Sie können einen der Volumentypen oder beide angeben, wobei das System denjenigen verwendet, der angegeben ist oder positiv ist:

       volume=-1 && volume_real=2 — es wird volume_real=2 verwendet,

       volume=3 && volume_real=0 — es wird volume=3 verwendet.

    Das Volumen MqlBookInfo.volume_real mit erhöhter Genauigkeit hat eine höhere Priorität als MqlBookInfo.volume. Wenn also beide Werte angegeben werden und gültig sind, wird volume_real verwendet.

    Wenn eines der Markttiefe-Elemente falsch beschrieben wird, verwirft das System den übergebenen Zustand vollständig.

  11. Der Betrieb der Funktion CalendarValueLast wurde korrigiert. Aufgrund eines Fehlers konnten aufeinanderfolgende Funktionsaufrufe nach Änderungen im Wirtschaftskalender (der Parameter 'change' wurde nach dem Aufruf auf einen neuen Wert gesetzt) bei Verwendung des Währungsfilters einige Ereignisse überspringen.
    CalendarValueLast(change, result, "", "EUR")
  12. Das Verhalten der Funktion ArrayBSearch wurde korrigiert. Wenn mehrere identische Elemente gefunden werden, wird ein Link zum ersten Ergebnis zurückgegeben und nicht ein zufälliges Ergebnis.
  13. Die Prüfung der Sichtbarkeit von Template-Funktionen innerhalb einer Klasse wurde korrigiert. Aufgrund eines Fehlers wurden Klassenvorlagenfunktionen, die als privat/geschützt deklariert wurden, als public angezeigt.

MetaEditor

  1. Fehler und zweideutiges Verhalten von MetaAssist behoben.
  2. Unterstützung für die %terminal%-Makros, die den Pfad zum Terminal-Installationsverzeichnis angeben, wurde hinzugefügt. Zum Beispiel: %terminal%\MQL5\Experts. 

    Unterstützung für die %terminal%-Makros, die den Pfad zum Terminal-Installationsverzeichnis angeben, wurde hinzugefügt.

  3. Verbesserte Anzeige von Arrays im Debugger.
  4. Vergrößerter Puffer für das Kopieren von Werten aus dem Debugger.
  5. Verbesserte Fehlerhinweise.
  6. Angabe von relativen Pfaden in der Projektdatei *.mproj hinzugefügt. Zuvor wurden absolute Pfade verwendet, was zu Kompilierungsfehlern führte, wenn das Projekt verschoben wurde.
  7. Es wurde das automatische Einbetten von BMP resources als global verfügbare 32-Bit-Bitmap-Arrays in Projekte hinzugefügt. Dadurch entfällt die Notwendigkeit, ResourceReadImage innerhalb des Codes aufzurufen, um die grafische Ressource einzulesen.
    'levels.bmp' as 'uint levels[18990]'
    
  8. Verbessertes Einlesen von erweiterten BMP-Dateiformaten.
  9. Aktualisierte UI-Übersetzungen.
  10. Fehler in Absturzprotokollen behoben.
2 Juni 2022
MetaTrader 5 build 3320: Verbesserungen und Korrekturen

Terminal

  1. Erweiterte Tooltips für Handelsobjekte, die auf den Charts angezeigt werden:
    • Die Deals, mit denen aus dem Markt ausgestiegen wurde, zeigen jetzt Gewinne an.
    • Bei Deals, die als Folge einer Take Profit- oder Stop Loss-Aktivierung ausgeführt wurden, wird die entsprechende Anzeige eingeblendet.

    Ähnliche Tooltips sind für die Verbindungslinien zwischen Ein- und Ausstiegs-Deals verfügbar.

    Erweiterte Tooltips für Handelsobjekte


  2. Verbesserte grafische Systemleistung.
  3. Die Protokollierung von Operationen mit offenen Aufträgen und Positionen wurde hinzugefügt. Wenn ein solcher Befehl ausgeführt wird, wird dem Journal ein entsprechender Protokolleintrag hinzugefügt, z. B.: "Massenschließung von XXX Positionen gestartet".
  4. Festgelegte Massenschließung von gegenüberliegenden Positionen.
  5. Die Aktualisierung von Chart-Objekten, die den Handelsverlauf anzeigen, wurde korrigiert. Der Fehler trat beim Ändern des Diagrammsymbols auf.

MQL5

  1. Arbeiten an Matrix- und Vektor-Funktionen sind im Gange: Unterstützung für 'float' und 'complex' wird implementiert.
  2. Der Operator "!" (LNOT) für einen Zeiger prüft dessen Gültigkeit durch einen impliziten Aufruf von CheckPointer. Der Operator "==" sollte für eine schnelle Prüfung auf NULL verwendet werden. Zum Beispiel: ptr==NULL oder ptr!=NULL.

MetaTester

  1. Die Anzeige von Deal-Objekten in Testdiagrammen wurde korrigiert.
  2. Die Leistung des grafischen Systems wurde verbessert.

MetaEditor

  • Aktualisierte UI-Übersetzungen.

Fehler in den Absturz-Logs behoben.

20 Mai 2022
MetaTrader 5 build 3300: Schnelle Kompilierung und verbesserte Code-Navigation im MetaEditor

Terminal

  1. Es wurde die Möglichkeit hinzugefügt, die Größe des grafischen Objekts "Rechteck" durch Ziehen an einer seiner vier Ecken zu ändern.


  2. Schnelleres GUI-Rendering.
  3. Verbesserte Unterstützung für IPv6-Adressen.
  4. Es wurde die Höhenberechnung für das untere Datumsfeld und die Breitenberechnung für das Preisfeld auf der rechten Seite beim ersten Start der Plattform korrigiert.

MQL5

  1. Funktion für die Arbeit mit Matrizen und Vektoren hinzugefügt — RegressionMetric. Sie setzt die Metrik für die Regressionsauswertung.
     double vector.RegressionError(const enum lr_error);
     double matrix.RegressionError(const enum lr_error);
     vector matrix.RegressionError(const enum lr_error,const int axis);
    Die folgenden Variablen können als Metriken verwendet werden:
    enum REGRESSION_ERROR
      {
       REGRESSION_MAE,     // Mittlerer absoluter Fehler
       REGRESSION_MSE,     // Mittlerer quadratischer Fehler
       REGRESSION_RMSE,    // Wurzel des mittleren quadratischen Fehlers
       REGRESSION_R2,      // R-Quadrat
       REGRESSION_MAPE,    // Mittlerer absoluter Fehler in Prozent
       REGRESSION_MSPE,    // Mittlerer quadratischer Fehler in Prozent
       REGRESSION_RMSLE    // Logarithmus der Wurzel des mittleren quadratischen Fehlers
      };
  2. Es wurde die Möglichkeit hinzugefügt, Arrays mit einer Datengröße größer als INT_MAX zu schreiben (Arrays von Strukturen).

MetaEditor

  1. Verbesserungen der Tab-Leiste:
    • Die Leiste wird nicht ausgeblendet, auch wenn nur ein Fenster geöffnet ist. Somit sind die Befehle des Tab-Kontextmenüs für den Nutzer immer sichtbar.
    • Die Schaltfläche "X" zum Schließen wurde zu jedem Tab hinzugefügt. Darüber hinaus können Registerkarten mit der mittleren Maustaste oder über das Kontextmenü geschlossen werden.


  2. Befehl zur schnellen Programmkompilierung hinzugefügt. Dieser Modus überspringt die Code-Optimierung, was die Erstellung einer ausführbaren EX5-Datei erheblich beschleunigt. Verwenden Sie diesen Modus während der aktiven Entwicklungsphase, wenn Sie den geschriebenen Code schnell überprüfen wollen. Schalten Sie während der endgültigen Programmkompilierung den maximalen Optimierungsmodus ein, um die Leistung zu verbessern.


    Der Parameter "Maximale Optimierung" in den Projekteinstellungen erfüllt die gleiche Funktion.

    Alle kompilierungsrelevanten Operationen sind unter dem Menü "Erstellen" verfügbar.

  3. Verbesserungen in der Codeverwaltung:
    • Es wurden getrennte Befehle für das Springen zu Definitionen und zu Deklarationen implementiert. Zuvor hatte das Menü einen Befehl, der ein Auswahl-Untermenü öffnete. Die neuen Befehle ermöglichen einen schnelleren Wechsel zu den benötigten Codeteilen.
    • Erkennung von Schlüsselwörtern durch die Tabulatortaste, zusätzlich zu "Eingabe".




  4. Es wurde die Möglichkeit hinzugefügt, automatisch lokale Variablen in der Beobachtungsliste des Debuggers anzuzeigen. Die Anzeige kann durch den Befehl "Lokal" im Kontextmenü aktiviert werden. Wenn die Debugger-Operation durch den Code fortschreitet, werden die Variablen des aktuellen Bereichs automatisch in der Liste angezeigt.


  5. Verbesserungen der Debugger-Überwachungsliste für Vektoren und Matrizen.
  6. Fixierte Pfade in Projektdateien. Ein Fehler konnte dazu führen, dass Dateien aus Projekten verschwanden.

Tester

  1. Verbessertes Beendigen der Tester-Agenten beim Herunterfahren der Plattform.
  2. Der fünfte MQL5 Cloud Network Knoten wurde hinzugefügt. Er befindet sich in Hongkong. Der neue Knoten beschleunigt die Optimierung von Robotern über das Netzwerk in den nächstgelegenen Regionen.

Fehler in den Absturz-Logs behoben
29 April 2022
MetaTrader 5 build 3280: Verbesserungen und Korrekturen aufgrund von Nutzer-Feedbacks

Terminal

  1. Das Füllen der Standard-Trailing-Stop-Levels im Kontextmenü von offenen Aufträgen und Positionen wurde korrigiert.



  2. Aktualisierte Übersetzungen der Nutzeroberfläche.

Fehler in den Absturz-Logs behoben.
21 April 2022
MetaTrader 5 build 3270: Verbesserungen und Korrekturen

Terminal

  1. Verbesserungen des integrierten Chats.
    • Aktualisiertes Design. Nachrichten werden jetzt ohne umlaufende Blasen angezeigt, um die Anzeige und die Platznutzung zu optimieren. Avatare und Datumstrenner wurden hinzugefügt.
    • Die Befehle Kopieren und Löschen wurden zum Nachrichtenmenü hinzugefügt.
    • Fehlerkorrekturen und Stabilitätsverbesserungen.



  2. Korrektur beim Auftrag zur Mehrfachschließung von Positionen. Auf Konten mit Hedging-Position konnte ein Fehler auftreten.
  3. Die Abrechnung bestimmter Geschäftsarten bei der Erstellung der Positionshistorie wurde korrigiert.

Fehler in den Absturz-Logs behoben.
15 April 2022
MetaTrader 5 Build 3260: Mehrfachoperationen, Matrix- und Vektorfunktionen und Chat-Verbesserungen

Terminal

  1. Befehle für die Massenschließung von Positionen und die Stornierung von schwebenden Aufträgen hinzugefügt.

    Der neue Befehl "Bulk Operations" wurde dem Kontextmenü der Registerkarte "Handel" hinzugefügt. Die Liste der verfügbaren Befehle wird automatisch erstellt, abhängig von der ausgewählten Operation und dem Kontotyp.



    Die folgenden Befehle sind immer im Menü verfügbar:
    • Beim Schließen aller Positionen auf Hedging-Konten versucht das System, Positionen durch entgegengesetzte Positionen zu schließen (Close By), und schließt dann die restlichen Positionen nach einem regulären Verfahren.
    • Schließen aller Positionen im Gewinn oder im Verlust
    • Alle schwebenden Aufträge löschen
    • Löschen aller schwebenden Aufträge bestimmter Typen: Limit, Stop, Stop-Limit

    Wenn Sie eine Position auswählen, erscheinen zusätzliche Befehle im Menü:
    • Alle Positionen dieses Symbols schließen
    • Alle Positionen derselben Richtung schließen (auf Hedging-Konten)
    • Alle entgegengesetzten Positionen desselben Symbols schließen (auf Hedging-Konten)
    • Positionen umkehren (auf Netting-Konten)

    Wenn Sie einen schwebenden Auftrag auswählen, erscheinen zusätzliche Befehle im Menü:
    • Alle schwebenden Aufträge desselben Symbols löschen
    • Alle schwebenden Aufträge desselben Typs für dasselbe Symbol löschen

    Diese Befehle sind nur verfügbar, wenn Sie den Ein-Klick Handel in den Plattformeinstellungen aktiviert haben: Extras \ Optionen \ Handel.
  2. Verbesserte interne Chat-Funktionen:
    • Es wurde die Möglichkeit hinzugefügt, auf Nachrichten zu antworten. Der Quelltext der Nachricht wird in der Antwort zitiert.
    • Es wurde die Möglichkeit hinzugefügt, Nachrichten mit verschiedenen Inhaltstypen zu erstellen, wie z.B. Bilder mit Text und Text mit Anhängen, um nur einige zu nennen.
    • Die Anzeige des Trennzeichens zwischen gelesenen und ungelesenen Nachrichten wurde korrigiert.
    • Fehlerkorrekturen und Stabilitätsverbesserungen.



  3. Optimierte und beschleunigte Ausführung des Grafiksystems des Terminals. Das Rendering der Oberfläche benötigt nun weniger Ressourcen.
  4. Korrektur der Berechnung der täglichen Preisänderungen für Futures. Wenn der Broker einen Clearing-Preis zur Verfügung stellt, wird dieser Preis für die Berechnungen verwendet:
    ((Letzter - Clearing-Preis)/Clearing-Preis)*100
    Eine detaillierte Beschreibung aller Berechnungsarten finden Sie in der Dokumentation.

  5. Fehler bei Kauf von MQL5-Angeboten behoben:
    • Zahlungssysteme konnten unter bestimmten Bedingungen Fehler für erfolgreiche Operationen zurückgeben.
    • Bei Zwischenschritten der Produktvermietung im Markt konnte ein falscher Preis angezeigt werden.

  6. Die Funktion der Schaltfläche "Start" auf der Seite für gekaufte/heruntergeladene Marktprodukte wurde korrigiert. Die Schaltfläche startet die Anwendung nun korrekt auf dem ersten geöffneten Chart.
  7. Die Abrechnung bestimmter Geschäftsarten bei der Erstellung der Positionshistorie wurde korrigiert.

MQL5

  1. Neue Funktionen für die Arbeit mit Matrizen und Vektoren hinzugefügt:
    • Median — gibt den Median der Matrix- oder Vektorelemente zurück
    • Quantile — gibt das q-te Quantil der Matrix/Vektor-Elemente oder der Elemente entlang der angegebenen Achse zurück
    • Percentile — gibt das q-te Perzentil der Matrix-/Vektorelemente oder der Elemente entlang der angegebenen Achse zurück
    • Std — Berechnet die Standardabweichung der Matrix- oder Vektorelemente
    • Var — berechnet die Varianz der Matrix- oder Vektorelemente
    • CorrCoef — berechnet den Korrelationskoeffizienten der Matrix/des Vektors
    • Correlate — berechnet die Kreuzkorrelation von zwei Vektoren
    • Convolve — gibt die diskrete, lineare Faltung von zwei Vektoren zurück
    • Cov — Berechnet die Kovarianzmatrix

  2. Wir haben begonnen, integrierte Methoden für numerische Arrays hinzuzufügen. Die neuen Methoden verbessern die Nutzerfreundlichkeit, erhöhen die Kompaktheit des Codes und verbessern die Kompatibilität des Codes mit anderen Sprachen.

    Die folgenden drei Methoden sind bereits verfügbar:
    • ArgSort — sortiert Arrays nach der angegebenen Dimension; die letzte Methode wird standardmäßig verwendet (axis=-1).
    • Range — gibt die Anzahl der Elemente in der angegebenen Array-Dimension zurück. Analog zu ArrayRange.
    • Size — gibt die Anzahl der Array-Elemente zurück. Analog zu ArraySize.

    Beispiel:
    void OnStart()
      {
       int arr[4][5]=
         {
            {22, 34, 11, 20,  1},
            {10, 36,  2, 12,  5},
            {33, 37, 25, 13,  4},
            {14,  9, 26, 21, 59}
         };
       ulong indexes[4][5];
    //--- Sort the array
       arr.ArgSort(indexes,-1,0);
       Print("indexes");  
       ArrayPrint(indexes);
      }
    
    // Result log:
    // indexes
    //     [,0][,1][,2][,3][,4]
    // [0,]   4   2   3   0   1
    // [1,]   2   4   0   3   1
    // [2,]   4   3   2   0   1
    // [3,]   1   0   3   2   4

  3. Wir haben begonnen, integrierte Methoden für Zeichenketten hinzuzufügen.
    Die folgenden Methoden sind derzeit verfügbar:

    • BufferSize — gibt die Puffergröße zurück, die für die Zeichenkette reserviert ist.
    • Compare — vergleicht zwei Zeichenketten und gibt das Vergleichsergebnis als Ganzzahl zurück.
    • Length — gibt die Anzahl der Zeichen in einer Zeichenkette zurück.
    • Find — sucht nach einer Teilzeichenkette in einer Zeichenkette.
    • Upper — wandelt eine Zeichenfolge in Großbuchstaben um.
    • Lower — wandelt eine Zeichenfolge in Kleinbuchstaben um.
    • Replace — ersetzt eine Teilzeichenkette.
    • Reserve — kehrt den Zugriff auf den Zeichenpuffer um.

    Alle Methoden sind analog zu den String-Funktionen.

    Beispiel:
    void OnStart()
      {
       string test="some string";
       PrintFormat("String length is %d",test.Length());
      }
    
    // Result log:
    // String length is 11
  4. Der Wert SYMBOL_SUBSCRIPTION_DELAY wurde in die Enumeration ENUM_SYMBOL_INFO_INTEGER für die Verzögerung bei der Lieferung von Symbolkursen hinzugefügt.

    Sie wird nur für Abonnement-basierte Handelssymbole verwendet. Die Verzögerung gilt normalerweise für Daten, die im Testmodus bereitgestellt werden.

    Die Eigenschaft kann nur für in der Marktübersicht ausgewählte Symbole angefordert werden. Ansonsten wird er Fehler ERR_MARKET_NOT_SELECTED (4302) zurückgegeben.

  5. Die Eigenschaft ACCOUNT_HEDGE_ALLOWED wurde in die Enumeration ENUM_ACCOUNT_INFO_INTEGER aufgenommen — sie ermöglicht die Eröffnung von gegenläufigen Positionen und schwebenden Aufträgen. Die Eigenschaft wird nur für Hedging-Konten verwendet, um die aufsichtsrechtlichen Anforderungen zu erfüllen, wonach ein Konto keine gegenläufigen Positionen für dasselbe Symbol haben darf, während gleichgerichtete Positionen erlaubt sind.

    Wenn diese Option deaktiviert ist, dürfen Konten keine gegenläufigen Positionen und Aufträge für dasselbe Finanzinstrument haben. Wenn das Konto zum Beispiel eine Kaufposition hat, kann der Nutzer keine Verkaufsposition eröffnen oder einen schwebenden Verkaufsauftrag erteilen. Wenn der Nutzer versucht, eine solche Operation durchzuführen, wird der Fehler TRADE_RETCODE_HEDGE_PROHIBITED zurückgegeben.

  6. Neue Eigenschaften in der ENUM_SYMBOL_INFO_DOUBLE Enumeration:
    • SYMBOL_SWAP_SUNDAY
    • SYMBOL_SWAP_MONDAY
    • SYMBOL_SWAP_TUESDAY
    • SYMBOL_SWAP_WEDNESDAY
    • SYMBOL_SWAP_THURSDAY
    • SYMBOL_SWAP_FRIDAY
    • SYMBOL_SWAP_SATURDAY

    Verwenden Sie die Werte, um Swap-Berechnungssätze für bestimmte Wochentage zu erhalten. 1 — einfacher Swap, 3 — dreifacher Swap, 0 — kein Swap.

  7. Die Ausführung der Funktionen CopyTicks and CopyTicksRange wurde korrigiert. Ein Fehler konnte dazu führen, dass beim Überschreiten von Mitternacht veraltete Daten zurückgegeben wurden. Der Fehler trat auf, wenn keine Ticks für das Finanzinstrument bereitgestellt wurden.
  8. Fehler in den Absturz-Logs behoben.
11 Februar 2022
MetaTrader 5 Plattform Build 3210: Neue Matrix-Methoden und Kontrolle über Indikator-Minimum/Maximum-Werte

    MQL5

    1. Min, Max, ArgMin, ArgMax und Summenfunktionen für Vektoren und Matrizen hinzugefügt. Verwenden Sie die Funktionen, um die minimalen und maximalen Werte, relevante Indizes und die Summe zu ermitteln.
    2. Unterstützung für Flat-Methoden für die Matrix wurde hinzugefügt. Mit diesen Methoden kann ein Matrizenelement über einen Index anstelle von zwei Indizes angesprochen werden.
      double matrix::Flat(ulong index) const;      // getter
      void matrix::Flat(ulong index,double value); // setter

      Pseudocode zur Berechnung der Adresse eines Matrixelements:

      ulong row=index / mat.Cols();
      ulong col=index % mat.Cols();
      
      mat[row,col]

      Für die "Matrix mat(3,3)" zum Beispiel kann der Zugriff auf die Elemente wie folgt geschrieben werden:

        lesen:        'x=mat.Flat(4)', das 'x=mat[1][1]' entspricht
        schreiben: 'mat.Flat(5, 42)', das 'mat[1][2]=42' entspricht

      Wenn die Funktion mit einem ungültigen Matrixindex aufgerufen wird, wird der kritische Ausführungsfehler OutOfRange ausgeworfen.

    3. Verbesserte Formatierung von Fließkommazahlen in den Eingabeparametern von MQL5-Programmen. Beim Lesen einiger reeller Zahlen wurden Zahlen mit vielen Nullen in den Eingabeparametern ersetzt, z.B. wurde 0.4 als 0.400000000002 dargestellt.
    4. Es wurden Fehler in der Math-Bibliothek Math.mqh behoben. Die Funktion MathSample aus dieser Bibliothek wurde überarbeitet, um dem traditionellen Verhalten ähnlicher mathematischer Bibliotheken beim Sampling mit Backtracking zu entsprechen.
    5. Der CopyTicks/CopyTicksRange-Fehler wurde behoben, der dazu führen konnte, dass beim Überschreiten von Mitternacht veraltete Daten zurückgegeben wurden, wenn keine Ticks für das Finanzinstrument bereitgestellt wurden.
    6. Es wurden die neuen Werte INDICATOR_FIXED_MINIMUM und INDICATOR_FIXED_MAXIMUM in die Enumeration ENUM_CUSTOMIND_PROPERTY_INTEGER aufgenommen.
      Mit Hilfe dieser Eigenschaften können Sie die minimalen und maximalen Indikatorwerte mit der Funktion IndicatorSetInteger fixieren oder wieder aufheben. Beim Aufruf von IndicatorSetInteger(INDICATOR_FIXED_MINIMUM/INDICATOR_FIXED_MAXIMUM, true) wird der aktuelle Minimal- oder Maximalwert verwendet.



    Tester

    1. Überarbeiteter Algorithmus zur Berechnung der Sharpe Ratio, um der traditionellen Formel zu entsprechen, bei der der Wert einem Einjahresintervall entspricht. Der vorherige Algorithmus basierte auf der Variabilität der erzielten PnL und ignorierte Kapitalschwankungen gegenüber offenen Positionen. Jetzt werden die Kapitalschwankungen in die Berechnung einbezogen, während die Sharpe Ratio auf klassische Weise interpretiert wird:
      • Sharpe Ratio < 0              Die Strategie ist unrentabel und nicht geeignet. Schlecht.
      • 0 < Sharpe Ratio  < 1,0   Das Risiko zahlt sich nicht aus. Solche Strategien können in Betracht gezogen werden, wenn es keine Alternativen gibt. Unbestimmt.
      • Sharpe Ratio ≥ 1,0          Wenn die Sharpe Ratio größer als eins ist. Dies kann bedeuten, dass sich das Risiko auszahlt und dass das Portfolio/die Strategie Ergebnisse vorweisen kann. Gut.
      • Sharpe Ratio ≥ 3,0          Ein hoher Wert bedeutet, dass die Wahrscheinlichkeit, bei jedem einzelnen Geschäft einen Verlust zu erleiden, sehr gering ist. Sehr gut.

    Terminal

    1. Optimierter Speicherverbrauch des Terminals.
    2. Verbesserter Plattformbetrieb mit einem Netzwerk-Subsystem, um die Leistung zu steigern und Netzwerkverzögerungen zu reduzieren.
    3. Die Anzeige der Nullebene des Gitters in den Indikatoren wurde entfernt, wenn das Raster-Rendering deaktiviert ist.


    28 Januar 2022
    MetaTrader 5 Build 3180: Vektoren und Matrizen in MQL5 und verbesserte Nutzerfreundlichkeit

    Terminal

    1. Wir laden alle Händler ein, an den Tests teilzunehmen, um die aktualisierten Funktionen der Plattform zu bewerten und Entwicklern bei der Fehlerbehebung zu helfen.

      Diese beiden Aktionen ändern das Chart eines Finanzinstruments in das des ausgewählten Instruments. Zuvor ließen sie das Chart-Fenster nicht aktiv werden. Dementsprechend konnten einige weitere Aktionen, wie das Aufrufen eines Handelsdialogs (F9) oder das Ändern der Skala (+/-) über Hotkeys, fälschlicherweise auf einen anderen Chart aktiv werden. Jetzt wird der Chart, dessen Symbol durch Ziehen verändert wurde, sofort für die weitere Arbeit ausgewählt.

    2. Beim Doppelklick auf einen Handelsvorgang in der Kontohistorie wird nun ein neues Auftragsfenster geöffnet. Ein Finanzinstrument aus dem Vorgang, auf den der Nutzer geklickt hat, wird sofort in den Dialog eingefügt, was einen schnelleren Handel ermöglicht. Ein ähnlicher Befehl wurde dem Kontextmenü hinzugefügt.




    3. Beim Öffnen neuer Charts werden nun auch die realen oder Tick-Volumina angezeigt. Diese Daten sind wichtig für die Analyse des Marktes. Allerdings sind sich nicht alle Händler der Verfügbarkeit dieser Daten auf der Plattform bewusst.

      Echte Handelsvolumina haben eine höhere Priorität. Wenn sie von einem Broker zur Verfügung gestellt werden, ist ihre Anzeige im Chart aktiviert. Andernfalls wird die Anzeige von Tick-Volumen aktiviert.

      Der Mechanismus wird nur verwendet, wenn der Chart mit der Standardvorlage default.tpl geöffnet wird. Volumina werden beim erneuten Öffnen eines Charts nicht mehr aktiviert, wenn ein Nutzer sie manuell in den Chart-Einstellungen deaktiviert hat. Nutzerdefinierte Vorlagen sind davon nicht betroffen.

    4. Die Anzeige der Nutzeroberfläche wurde optimiert und stark beschleunigt.
    5. Die Druckfunktion für Charts, die über das Menü "Datei" aufgerufen wird, wurde verbessert:
      • Fehler beim Speichern der Druckeinstellungen behoben.
      • Verbessertes Erscheinungsbild der gedruckten Seite: Vergrößerte Gitternetzlinien, Entfernung des Programmnamens, aktualisierte Schriftart der Kopfzeile
      • Vergrößerung des Druckdialogs zur korrekten Darstellung der Nutzeroberfläche

    6. Die Funktion des Volumenfelds im Schnellhandelspanel des Charts wurde korrigiert. Vor der Korrektur wurde der Wert auf den vorherigen Wert zurückgesetzt, nachdem ein neuer Wert eingegeben und die Tabulatortaste gedrückt wurde.
    7. Die Anzeige des Handelsverlaufs im Chart wurde korrigiert. Zuvor wurden die Operationen des vorherigen Kontos nicht aus den Charts entfernt, wenn zwischen den Konten gewechselt wurde.
    8. Die Zahlung für MQL5.com über PayPal wurde korrigiert.
    9. Das Einfrieren der Plattform bei der Anzeige eines Options-Volatilitäts-Charts wurde behoben.
    10. Die Überprüfung der Telefonnummer im Fenster für die Registrierung eines Echtgeldkontos wurde korrigiert. In einigen Fällen erlaubte die Plattform einem Nutzer nicht, mit der nächsten Registrierungsphase fortzufahren, nachdem eine korrekte Nummer eingegeben wurde.
    11. Die Überprüfung der Rechte beim Beitritt zu einem Gruppenchat mit MQL5.com-Mitgliedern wurde korrigiert. Zuvor konnte ein neu hinzugekommener Nutzer Nachrichten nur lesen, aber nicht schreiben.
    12. Der Text für im Chart fehlende Daten wurde geändert. Jetzt wird "Waiting for update" durch den Symbolnamen, Zeitrahmen und das Symbol ersetzt.
    13. Verbesserte Unterstützung für negative Preise, die in Build 2450 hinzugefügt wurden. Nullwerte können nun auch für die entsprechenden Market Watch Symbole angezeigt werden.
    14. Die Anzeige von Produktlogos im Market bei der Arbeit unter Wine wurde korrigiert.

    MQL5

    1. Wir erweitern die Unterstützung für Vektoren und Matrizen. Die neuen Funktionen erweitern die Möglichkeiten für Entwickler von Lösungen auf Basis neuronaler Netze erheblich.

      Mehrere Funktionen sind derzeit einsatzbereit:
      • Eye — konstruiert eine Matrix mit Einsen auf einer bestimmten Diagonale und Nullen an den anderen Stellen.
      • Identity — konstruiert eine Matrix mit einer bestimmten Größe mit Einsen auf der Hauptdiagonale und Nullen an den anderer Stelle.
      • Ones — konstruiert eine Matrix mit einer bestimmten Größe, die mit Einsen gefüllt ist.
      • Zeroes — konstruiert eine Matrix mit einer bestimmten Größe, die mit Nullen gefüllt ist.
      • Full — konstruiert eine Matrix mit einer bestimmten Größe, die mit anzugebenden Werten gefüllt ist.
      • Copy — konstruiert eine Kopie einer Matrix oder eines Vektors.
      • Diag — extrahiert eine Diagonale aus einer Matrix und füllt die angegebene Diagonale mit Werten aus einem Vektor.
      • Tri — konstruiert eine Matrix mit Einsen auf der angegebenen Diagonale und darunter, und Nullen an den anderen Stellen.
      • Row — gibt eine Matrixzeile als Vektor zurück und füllt die angegebene Zeile mit Werten aus dem Vektor.
      • Col — gibt eine Matrixspalte als Vektor zurück und füllt die angegebene Spalte mit Werten aus dem Vektor.
      • Rows — gibt die Anzahl der Zeilen in einer Matrix zurück.
      • Cols — gibt die Anzahl der Spalten in einer Matrix zurück.
      • Transpose — transponiert eine Matrix.
      • * — Produkt von Matrizen, Vektoren und Skalaren — Punktprodukt.
      • Power — erhöht eine Matrix auf die Potenz.
      • Kron — Kronecker-Produkt.
      • Cholesky — Cholesky-Zerlegung.
      • QR — QR-Faktorisierung einer Matrix.
      • SVD — Singulärzerlegung.
      • LU — LU-Zerlegung einer Matrix.
      • LUP — LUP-Zerlegung einer Matrix.
      • Norm — Berechnung der Matrixnorm.
      • Cond — berechnet die Bedingungszahl einer Matrix.
      • Spectrum — Berechnen des Spektrums einer Matrix.
      • Det — berechnet die Determinante einer Matrix.
      • Rang — berechnet den Rang einer Matrix.
      • SLogDet — berechnet das Vorzeichen und den Basislogarithmus der Determinante einer Matrix.
      • Trace — berechnet die Spur einer Matrix.
      • Solve — löst ein System linearer Gleichungen.
      • LstSq — löst ein System linearer Gleichungen mit der Methode der kleinsten Quadrate.
      • Inv — berechnet die Inverse einer Matrix.
      • PInv — Berechnung der Pseudo-Inverse einer Matrix nach der Moore-Penrose-Methode.
      • Compare — vergleicht zwei Matrizen mit Hilfe von Epsilon.

      Für weitere Details lesen Sie bitte die entsprechende MQL5 Dokumentation.

    2. Fehler beim Umgang mit Dateien und Datenbanken im Zusammenhang mit der Pfadlängenbegrenzung behoben. Insbesondere die Funktion DatabaseOpen erlaubte es, eine Pfadangabe größer als die zulässige Länge zu setzen, was zu einer fehlerhaften Datenbankerstellung führte. Jetzt gibt die Funktion den Fehlercode ERR_TOO_LONG_FILE_NAME korrekt zurück.
    3. Die Kontrolle der const Variablen wurde korrigiert. Zuvor hatte der Compiler den Fehler "Konstante Variable kann nicht als Referenz übergeben werden" gelegentlich nicht ausgeworfen.
    4. Fehlerhafte Compiler-Warnungen über die Verwendung einer nicht initialisierten Variable behoben.
    5. Die Funktion ChartWindowOnDropped für Indikatoren wurde korrigiert. Zuvor gab sie immer Null zurück.
    6. Die Unterstützung von Python 3.10 zum Modul Python Integration wurde hinzugefügt.

    VPS

    1. Die Darstellung des VPS-Elements im Navigator wurde korrigiert. Zuvor konnte es gelegentlich verschwinden, wenn zwischen Konten gewechselt wurde.

    MetaEditor

    1. Das Entpacken von komplexen Ausdrücken im Beobachtungsfenster des Debuggers wurde korrigiert.

    Tester

    1. Der Export von Testberichten in Dateien wurde korrigiert. Einige Werte konnten falsch gerundet werden, wenn eine Währung mit einer Genauigkeit von 0 Dezimalstellen als Einzahlungswährung verwendet wurde. Zum Beispiel: JPY.
    22 Oktober 2021
    MetaTrader 5 Build 3091: Verbesserungen

    Terminal

    1. Das Öffnen einer leeren Seite beim Kauf von MQL5-Diensten wurde behoben. Die Operationsergebnisse werden dem Nutzer jetzt sofort angezeigt.
    2. Die übermäßige Komprimierung von Dokumentenbildern, die Nutzer bei der Anforderung von echten Konten hochladen, wurde behoben. Dies hat die Qualität der automatischen KYC-Prüfungen verbessert und das gesamte Kontoeröffnungsverfahren vereinfacht.
    3. Die Funktion der Grafiken, die nach Abschluss der Prüfung geöffnet werden, wurde korrigiert.

    MQL5

    1. Unterstützung für SQLite 3.36.0 hinzugefügt.

    MetaEditor

    1. Hintergrundhervorhebung für passende Klammern hinzugefügt. Die Option kann in den Allgemeinen Einstellungen von MetaEditor aktiviert werden.
    2. Der Debugger für MQL5 Programme wurde verbessert.

    Fehler in den Absturz-Logs behoben.
    21 Oktober 2021
    MetaTrader 5 build 3090: Verbesserungen und Korrekturen

    Terminal

    1. Es wurde ein Fehler behoben, der dazu führen konnte, dass nutzerdefinierte Symbole unter bestimmten Bedingungen verschwinden konnten.
    2. Verbesserte Menü- und Symbolleistensymbole.
    3. Drei neue Sprachen wurden zu MQL5.com hinzugefügt: Französisch, Italienisch und Türkisch.

      Damit ist die größte Gemeinschaft algorithmischer Händler, die MQL5.community, nun in 11 Sprachen verfügbar. Wir haben bereits die Website-Oberfläche, die Dokumentation und wichtige Forumsthemen lokalisiert. Artikel und Wirtschaftskalender in den neuen Sprachen werden ebenfalls bald verfügbar sein.

    4. Fehler in den Absturz-Logs behoben.

    MQL5

    1. Fehler in der Funktion StringConcatenate behoben.
    2. Das Setzen des Wertes _LastError beim Arbeiten mit der Funktion FileSave wurde korrigiert. Der Variable wurde unter bestimmten Bedingungen Null anstelle des Fehlerwertes für die Beschreibung zugewiesen.
    3. Der Datenimport aus Ressourcen in Arrays vom Typ double wurde korrigiert.

    MetaTester

    1. Es wurde ein Fehler behoben, der zum Einfrieren des Chartfensters während des visuellen Tests führte.
    Die Dokumentation wurde aktualisiert.
    14 Oktober 2021
    MetaTrader 5 build 3081: Verbesserungen der MQL5-Dienste und Design-Updates

    Terminal

    1. Verbesserte Navigation in den Diensten der MQL5.community.

      Die Bereiche Market, Signale und VPS wurden vom Hauptarbeitsbereich der Plattform in den Navigator verschoben. Die neue Positionierung bietet einen einfachen Zugang zu den gewünschten Produkten und ermöglicht eine effiziente Verwaltung der Käufe und der Abonnements. Die Abschnitte "Funktionsweise" wurden zu jedem Dienst hinzugefügt, um die grundlegenden Nutzungsinformationen bereitzustellen.


      Verbesserte Navigation in den Diensten der MQL5.community


    2. Alle Menü- und Symbolleistensymbole wurden komplett neu gestaltet. Die Oberfläche des Terminals wurde benutzerfreundlicher gestaltet:

      • Kleine Elemente wurden aus den Symbolen entfernt.
      • Die Anzahl der verwendeten Farben wurde reduziert, um Farbrauschen zu vermeiden.
      • Es werden weniger Farbverläufe verwendet, um die Lesbarkeit zu verbessern.
      • Es werden direktere Metaphern verwendet.


      Alle Menüs, Symbolleisten und Dialoge wurden auf der Plattform neu gestaltet


    3. Jetzt wurden auch die Kosten, die bei der Ausführung von Geschäften entstehen, angezeigt Die entsprechenden Informationen werden in der Handelshistorie angezeigt. Diese Funktion wird von NFA-regulierten Brokern genutzt.


      Die Kontohistorie zeigt nun auch die Kosten für Deals an>


      Wenn Ihr Broker die Kostenberechnung auf dem Server aktiviert, erscheint die neue Spalte Kosten in der Handelshistorie Ihres Kontos. Die Spalte zeigt die Ausführungskosten des Geschäfts im Verhältnis zum aktuellen Mid-Point-Kurs des Symbols (Mid-Point-Spread-Kosten).

    4. Start der Koreanischen Version von MQL5.com.

      Dies ist die achte Sprache, in der die MQL5.community, der größten Gemeinschaft von algorithmischen Händlern, verfügbar ist. Die Website-Oberfläche, Artikel, der Wirtschaftskalender und wichtige Forumsthemen existieren bereits auf Koreanisch. Die MQL5-Dokumentation wird in Kürze übersetzt werden.

    5. Das Laden von nutzerdefinierten Handelsinstrumenten wurde korrigiert. In einigen Fällen konnten neu erstellte Symboleinstellungen bestehende Symboleinstellungen überschreiben.
    6. Die Anzeige des Signalhandelsverlaufs im Chart wurde korrigiert. Zuvor aktivierte die entsprechende Option die Anzeige ganzen Handels aller Finanzinstrumente und nicht nur für die Chart-Symbole.
    7. Der Export der Gebührenspalte in den Handelsverlaufsbericht wurde hinzugefügt. Zuvor wurden die Werte nur in der Historie angezeigt, konnte aber nicht in einer Datei gespeichert werden.
    8. Optimierte und beschleunigte Funktion der Ein-Klick-Handelsfenster in der Marktübersicht und in den Charts.
    9. Die Funktion des Feldes Margin Raten für nutzerdefinierte Handelsinstrumente wurde korrigiert. Die Werte konnten unter bestimmten Bedingungen auf Null zurückgesetzt werden.
    10. Wir setzen die Implementierung des Abonnementservice fort, über den Händler zusätzliche Handelsdienstleistungen von Brokern kaufen können. Es wurden Fehler im Fenster für Kursabonnements behoben.
    11. Die Darstellung des analytischen Objekts Trendlinie wurde korrigiert. Zuvor konnte die Linie beim Skalieren oder bei der Größenänderung des Chart-Fensters verschwinden.
    12. Die Anzeige des analytischen Objekts "Rechteck" wurde korrigiert. Das Objekt konnte verschwinden, wenn einer der Ankerpunkte außerhalb des Sichtbarkeitsbereichs des Charts lag.
    13. Korrekturen und Geschwindigkeitsverbesserungen in Bezug auf den Betrieb von integrierten MQL5.community Charts.
    14. Die Rundung des Parameters Wert in der Liste der offenen Positionen wurde korrigiert. Die Nachkommastellen konnten in früheren Versionen ausgeblendet werden.
    15. Die Überprüfung des Mobiltelefons während der Kontoeröffnung wurde korrigiert. Bei einigen chinesischen Betreibern konnten Telefonnummern als falsch erkannt werden.
    16. Unterstützung für MQL5-Kontopasswörter mit mehr als 32 Zeichen wurde hinzugefügt.
    17. Der Export von Zertifikaten bei der Arbeit in Wine wurde korrigiert. Diese Option wird für Konten mit erweiterter Authentifizierung verwendet, wenn solche Konten von Desktop auf Mobile migriert werden.
    18. Die Schaltflächen zum Öffnen von MQL5-Diensten im unteren Bereich des Toolbox-Fensters wurden korrigiert. Die Schaltflächen waren inaktiv, wenn das Fenster abgedockt war.
    19. Begrenzung der Größe des Menüs "Datei \ Neues Chart" hinzugefügt Jetzt kann das Menü nicht mehr als 128 Untermenüs mit Symbolgruppen enthalten, die jeweils nicht mehr als 32 Symbole enthalten. Diese Begrenzung beschleunigt die Arbeitsweise des Terminals und verhindert das Einfrieren, wenn eine große Anzahl von Handelssymbolen (2.000 oder mehr) zur Marktübersicht hinzugefügt wird.

    MQL5

    1. Wir erweitern die Unterstützung für Vektoren und Matrizen. Die neuen Funktionen werden die Möglichkeiten für Entwickler von Lösungen auf der Basis neuronaler Netze erheblich erweitern.
    2. Hinzufügen der Werte DEAL_SL und DEAL_TP in der Aufzählung ENUM_DEAL_PROPERTY_DOUBLE — die Stop-Loss- und Take-Profit-Ebenen eines Geschäfts.

      Die relevanten Werte für Einstiegs- und Umkehrgeschäfte werden in Übereinstimmung mit den Stop-Loss/Take-Profit der Orders gesetzt, die diese Geschäfte initiiert haben. Für Exit-Geschäfte werden die Stop-Loss/Take-Profit-Werte der entsprechenden Positionen zum Zeitpunkt der Positionsschließung verwendet.

    3. In der Enumeration ENUM_MQL_INFO_INTEGER wurde der Wert MQL_HANDLES_USED hinzugefügt — die Anzahl der aktiven Klassenobjekte (Handles) in einem MQL-Programm. Dazu gehören sowohl dynamische (über new erzeugte) als auch nicht-dynamische Objekte, globale/lokale Variablen oder Klassenmitglieder. Je mehr Handles ein Programm verwendet, desto mehr Ressourcen verbraucht es.

    4. Neue Methoden für die Arbeit mit der Struktur MqlCalendarValue hinzugefügt, die ein wirtschaftliches Kalenderereignis beschreibt:

      • HasActualValue(void) — gibt true zurück, wenn der aktuelle Wert gesetzt ist, andernfalls wird false zurückgegeben.
      • HasForecastValue(void) — gibt true zurück, wenn der Prognosewert gesetzt ist, andernfalls wird false zurückgegeben.
      • HasPreviousValue(void) — gibt true zurück, wenn der vorherige Wert gesetzt ist, andernfalls wird false zurückgegeben.
      • HasRevisedValue(void) — gibt true zurück, wenn der revidierte Wert gesetzt ist, andernfalls wird false zurückgegeben.
      • GetActualValue(void) — gibt den aktuellen Wert eines Ereignisses zurück (double) oder nan, wenn der entsprechende Wert nicht gesetzt ist.
      • GetForecastValue(void) — gibt den prognostizierten Wert eines Ereignisses zurück (double) oder nan, wenn der entsprechende Wert nicht gesetzt ist.
      • GetPreviousValue(void) — gibt den vorherigen Wert eines Ereignisses (double) oder nan zurück, wenn der entsprechende Wert nicht gesetzt ist.
      • GetRevisedValue(void) — gibt den revidierten Wert eines Ereignisses (double) oder nan zurück, wenn der relevante Wert nicht gesetzt ist.

    5. Das Debugging der MQL5-Programme, die Bibliotheken in Form von EX5-Dateien verwenden, wurde korrigiert.
    6. Beschleunigtes Kompilieren von Programmen, die große Arrays enthalten, die durch eine Sequenz initialisiert werden.
    7. Korrigierte Ausführung der CopyTicksRange Funktion mit nutzerdefinierten Handelssymboldaten. Die Funktion konnte Daten außerhalb des angeforderten Zeitraums zurückgeben.
    8. Die Überprüfung der Verfügbarkeit aller Vorlagen-Parameter während der Spezialisierung durch Parameter wurde korrigiert. Code-Kompilierung mit Debug-Vorlagen konnte unter bestimmten Bedingungen einen "Code-Generierungsfehler" verursachen.

    Signals

    1. Es wurde die Möglichkeit hinzugefügt, Signal-Abonnements automatisch zu erneuern.

      Ihr Abonnement wird nicht abrupt enden, da das System es automatisch für einen weiteren Monat über die Zahlungsmethode verlängert, die Sie zuvor für den ursprünglichen Kauf des Abonnements verwendet haben.


      Aktivieren Sie die automatische Verlängerung für Ihr Signal-Abonnement


      Wenn Sie Ihre vorherige Zahlung mit einer Karte getätigt haben und die Verlängerungszahlung fehlschlägt, versucht das System, eine Zahlung von Ihrem MQL5-Kontostand vorzunehmen.

      Machen Sie sich keine Sorgen über Änderungen der Abonnementpreise. Wenn der Preis steigt, wird die automatische Erneuerung beendet. Sie erhalten dann eine entsprechende Benachrichtigung per E-Mail.

      Sie können die automatische Verlängerung jederzeit über den Bereich Meine Abonnements auf MQL5.com aktivieren oder deaktivieren.


      Verwalten Sie automatische Verlängerungen über den Bereich Meine Abonnements auf MQL5.com


    2. Die Darstellung im Fenster der Signale wurde korrigiert. Jetzt erkennt das System korrekt die Kompatibilität der Signale mit dem aktuellen Konto.

    Market

    1. Hinzufügen der Produktsuche nach dem Namen des Autors und dem Login im Market-Schaufenster. Zuvor unterstützte der Dienst nur die Suche nach Produktname und -beschreibung.

    VPS

    1. Die Option zur automatischen Abonnementverlängerung wurde verbessert.

      Zuvor konnte die Zahlung für die Erneuerung nur aus dem MQL5-Kontostand erfolgen. Der Nutzer musste sicherstellen, dass der entsprechende Betrag auf seinem Konto verfügbar ist.

      Jetzt ist es nicht mehr nötig, das MQL5-Konto aufzuladen. Das System erneuert das Abonnement mit der gleichen Zahlungsmethode, die Sie für das ursprüngliche Abonnement verwendet haben. Wenn Sie für den VPS mit einer Karte bezahlt haben und die Option der automatischen Verlängerung aktiviert haben, wird das System dieselbe Zahlungsmethode für den neuen Abonnementzeitraum verwenden. Wenn die Zahlung fehlschlägt, wird das System versuchen, eine Zahlung von Ihrem MQL5-Kontostand vorzunehmen.


      Verwendung von Kreditkarten und anderen Zahlungsmitteln für die automatische Erneuerung


      Mit dieser neuen Option können Sie sicher sein, dass Ihre Expert Advisors und Signal-Abonnements nicht durch das Ende der VPS-Periode beendet werden. Außerdem müssen Sie Ihr Guthaben nicht mehr manuell überprüfen und aufladen.
      Diese Option wird nur für neue Abonnements verwendet. Zahlungen für die Erneuerung bestehender Abonnements werden vom MQL5-Kontostand vorgenommen.

    Tester

    1. Fehler beim visuellen Testen behoben. Unter bestimmten Bedingungen konnten Charts die in Expert Advisors verwendeten Indikatoren nicht anzeigen.

    MetaEditor

    1. Das Springen zur Funktions- oder Variablendeklaration mit Alt+G wurde behoben. Die Aktion konnte fehlschlagen, wenn die Deklaration unterhalb der Aufrufzeile lag.
    2. Anzeige des Objekttyps für Referenzen auf Klassenobjekte im Debugger hinzugefügt.
    3. Es wurde die Möglichkeit hinzugefügt, eine Union in der Liste der überwachten Ausdrücke anzuzeigen.

    MetaTrader 5 iPhone/iPad, MetaTrader 5 Android

    1. Beim Start der Anwendung wird nun ein Haftungsausschluss angezeigt. Bitte lesen Sie ihn sorgfältig durch. Zusätzlich können einige Broker beim ersten Start der Anwendung automatisch ein Demokonto einrichten. In diesem Fall werden Ihnen die entsprechenden Bedingungen angezeigt.


      In MetaTrader 5 für iPhone/iPad wurden Haftungsausschlüsse hinzugefügt

    2. Es wurde die Möglichkeit hinzugefügt, ein Konto mit der Überwachung im Signal-Service direkt von der mobilen Anwendung aus zu verbinden. Dies kann durch Auswahl von "Kontoüberwachung" aus dem Menü erfolgen. Der Einfachheit halber werden die Kontonummer und der Name des Brokers automatisch in das Registrierungsfenster eingefügt. Zusätzlich sollten Sie den Signalnamen und ein Anlegerpasswort angeben.

      Verbinden Sie Ihr Konto mit der Überwachung, um auf erweiterte Handelsstatistiken zuzugreifen, um die Ergebnisse mit anderen Händlern zu teilen oder um mit dem Verkauf Ihrer Signale zu beginnen.

    3. Unterstützt werden jetzt auch Huawei AppGallery und HMS Services für mobile Endgeräte mit Android OS. Besitzer von Huawei-Smartphones können die App aus dem entsprechenden Store installieren und Push-Benachrichtigungen nutzen.

    Die Dokumentation wurde aktualisiert.

    18 Juni 2021
    MetaTrader 5 build 2980: Push-Benachrichtigungen und Handelsoperationen

    Terminal

    1. Es wurde die Möglichkeit hinzugefügt, Push-Benachrichtigungen direkt vom Server zu empfangen. Sie werden über ausgeführte Handelsoperationen benachrichtigt, auch wenn Ihr Terminal nicht läuft.



      In früheren Versionen konnten Benachrichtigungen nur auf einem mobilen Gerät vom Desktop-Terminal des Händlers übermittelt werden. Bei der Ausführung einer Handelsoperation sendete das Terminal die entsprechende Benachrichtigung an die in den Einstellungen angegebene MetaQuotes-ID. Benachrichtigungen konnten nur von einem laufenden Terminal gesendet werden. Diese Beschränkung wurde aufgehoben. Wenn ein Take-Profit auf dem Server ausgelöst wird, während Ihr Computer ausgeschaltet ist, erhalten Sie jetzt eine Benachrichtigung über die geschlossene Position direkt vom Server.

      Um Benachrichtigungen vom Server zu erhalten, sollten Sie:
      • ein Echt-Geldkonto haben, da die Benachrichtigungen vom Server für Demokonten nicht funktionieren,
      • MetaTrader 5 für iOS oder Android auf Ihrem Smartphone installiert haben,
      • Ihre MetaQuotes ID, die Sie im mobilen Terminal den Bereich "Nachrichten" finden, in den Einstellungen des Desktop-Terminals eingegeben haben,
      • die Server-Benachrichtigungen in den Einstellungen des Desktop-Terminals aktiviert haben.

      Die Verfügbarkeit von Server-Benachrichtigungen sollte von Ihrem Broker bereitgestellt werden.

      Es werden drei Benachrichtigungstypen unterstützt: Aufträge, Deals und Überweisungen. Wenn Sie die Option aktivieren, werden die verfügbaren Benachrichtigungstypen im Terminalprotokoll angezeigt:
      '1222': abonniert für Deals, Orders, Salden-Benachrichtigungen vom Handelsserver.

    2. Aktualisierte Präsentation der MetaTrader VPS. Der VPS-Bereich ist komfortabler geworden:
      • Die Oberfläche passt sich an jede Bildschirmbreite an.
      • Die Darstellung nimmt vertikal weniger Platz ein, um in den Arbeitsbereich zu passen.
      • Die notwendigen Informationen erscheinen nur dann, wenn sie benötigt werden. Zahlungsdetails erscheinen erst, nachdem Sie eine Zahlungsmethode ausgewählt haben.



      Im Panel "Strategy Tester" wurden Befehle zum schnellen Umschalten auf MQL5-Dienste und zum Fenster "Toolbox" hinzugefügt. Die Befehle werden nur im Bereich Übersicht angezeigt, während in anderen Registerkarten das Panel zur Verwaltung der Tests verwendet wird.




    3. Speichern von Fensterzuständen für MQL5-Dienste hinzugefügt. Wenn Sie das Fenster des Market offen lassen, bevor Sie das Terminal schließen, ist das entsprechende Fenster auch beim nächsten Start des Terminals offen.
    4. Die periodische Synchronisation des MQL5-Kontostandes wurde korrigiert. Das Kopieren von Signalen konnte unter bestimmten Bedingungen aufgrund eines Fehlers fehlschlagen.
    5. Korrigierte Anzeige einer Auswahl von empfohlenen Market-Produkten.
    6. Korrigiertes Signal-Kontextmenü im Navigator. Sie können das Menü verwenden, um das Signal anzuzeigen, bei dem Sie abonniert sind, oder um ein Signal abzubestellen.

    MQL5

    1. Der Implementationsfehler des Operators "-" bei komplexen Zahlen in der Standardbibliothek (Datei MQL5\Include\Math\Alglib\complex.mqh) wurde behoben.
    2. Sie können jetzt beliebige Ausdrücke in Initialisierungssequenzen verwenden, nicht nur konstante Ausdrücke. Dies verbessert die Nutzerfreundlichkeit und die Kompatibilität mit C++.
      struct POINT
        {
         int x,y;
        };
      
      int GetYFunc(y)
        {
         return(y * y);
        }
      
      void SomeFunction(int x1,int x2,int y)
        {
         POINT pt={ x1+x2, GetYFunc(y) };
         ProcessPoint(pt);
        };
    3. Es wurde ein Fehler behoben, der beim Kompilieren einer union mit großen Datenarrays auftrat.
    4. Die Ausführung der Funktion StringToCharArray wurde korrigiert. Sie wandelt jetzt die gesamte übergebene Zeichenkette in ein Char-Array um, anstatt beim ersten abschließenden Nullzeichen aufzuhören.
    5. Es wurde eine Kontrolle für das explizite Vorhandensein eines Konstruktoraufrufs für Klassen/Strukturen hinzugefügt, wenn deren Elternklasse keinen Standardkonstruktor hat.

    MetaEditor

    1. Es wurde die Anzeige einer Aufrufstelle für Inline-Funktionen im Bericht des Profiler hinzugefügt.
      Im folgenden Beispiel wird der Aufruf von func(); jetzt wie folgt hervorgehoben:



      Die Funktion func selbst ist nicht hervorgehoben, da ihr vollständiger Code sich in OnStart befindet.

    2. Es wurde die Möglichkeit hinzugefügt, leere Projekte zu erstellen. Dies ist eine nützliche Funktion für nicht standardmäßige Entwicklungsprojekte mit spezifischen Dateistrukturen, für die die Standardvorlagen nicht geeignet sind.



      In diesem Fall wird eine leere Einstellungsdatei "mqproj" erstellt. Die Quellcode-Dateien sollten manuell erstellt werden.

    3. Schnelleres Starten von MetaEditor implementiert.
    4. Die Datenanzeige in der Liste der beobachteten Ausdrücke während des Debugging wurde korrigiert. Die Liste konnte unter bestimmten Bedingungen falsche Variablenwerte anzeigen.
    5. Das automatische Hinzufügen der Erweiterung ".py" zu Python-Skriptdateien, die mit dem MQL-Assistenten erstellt wurden, wurde korrigiert.
    Die Dokumentation wurde aktualisiert.


    21 Mai 2021
    MetaTrader 5 Build 2940: Platzierung der Angebote der MQL5 Dienste im Hauptarbeitsbereich und ein aktualisiertes Design

    Terminal

    1. Handelsdienste, einschließlich Market, Signale und Virtuelles Hosting werden jetzt übersichtlich im Hauptarbeitsbereich der Plattform angezeigt.
      In früheren Versionen befanden sich die Einkaufsbereiche für MQL5 Services im kleinen Toolbox-Fenster unterhalb des Hauptfensters. Die neue Platzierung ermöglicht die Anzeige der voll ausgestatteten Auslage mit komfortablen Kaufoptionen. Unnötige Registerkarten aus dem unteren Bereich wurden entfernt, um so mehr Platz für andere Plattformfunktionen zu schaffen.




      Der Zugriff auf zusätzliche Dienste beeinträchtigt nicht die Hauptfunktionen, wie den Handel und die Chart-Analyse.
      • Die Registerkarten der Dienste befinden sich am Ende des Balkens, nach allen Registerkarten der Charts.
      • Nicht verwendete Servicefenster können geschlossen werden. Um sie wieder zu öffnen, verwenden Sie den Navigator, die Symbolleiste oder das Menü "Dienste".

      Außerdem haben wir die Dienste komplett neu gestaltet. Das Design ist eleganter und leichter geworden. Die Signale enthalten zusätzliche Daten, die bisher nur über die Auslage auf der Website der MQL5.community verfügbar waren: ein Polardiagramm mit den wichtigsten Merkmalen, Zuverlässigkeits- und Aktivitätsmetriken und andere Variablen.




    2. Hinzugefügt wurde die Unterstützung für IPv6-Adressen.
      IPv4, das in jedem Netzwerk verwendet wird, wurde vor mehr als 30 Jahren geschaffen. Es enthält IP-Adressen von 32 Bit, die als vier durch Punkte getrennte 8-Bit-Zahlen dargestellt werden. Dieser Algorithmus erzeugt mehr als vier Milliarden eindeutige IP-Adressen. Die schnell wachsende Zahl von Benutzern und Geräten hat jedoch die Erschöpfung des Pools an verfügbaren Adressen beschleunigt.

      Um das Erschöpfungsproblem zu vermeiden, bieten einige Produkte zusätzliche Unterstützung für den modernen IPv6-Standard. Dieses Protokoll verwendet eine 128-Bit-Adresse, dargestellt als x:x:x:x:x:x:x:x, wobei jedes x ein hexadezimaler Wert aus sechs 16-Bit-Adressbestandteilen ist. Theoretisch erlaubt dieses Format 5 x 10 ^ 28 eindeutige Adressen. Neben einem umfangreichen Adressraum hat dieses Protokoll weitere Vorteile gegenüber der älteren Version. Weitere Details entnehmen Sie bitte entsprechenden Fachartikeln.

      Die MetaTrader 5 Plattform ist vollständig IPv6-fähig. Wenn Ihr Broker oder Provider auf das neue Protokoll umsteigt, wird die Unterstützung des Protokolls nahtlos in der Plattform aktiviert, ohne dass zusätzliche Maßnahmen Ihrerseits erforderlich sind.

    3. Wir setzen die Implementierung der Task-Manager-Funktionalität fort, die in Build 2815 bereits vorgestellt wurde. Wir haben eine explizite Anzeige für Charts hinzugefügt, auf denen MQL-Programm-Debugging oder Profiling läuft.




    4. Implementiert wurde ein schnelleres Starten der Plattform auf Rechnern mit Wine für macOS und Linux. Allgemeine Optimierung und Fehlerkorrekturen:
      • Verbesserte Darstellung von Menüs, Symbolleisten und Dialogfeldern.
      • Fehlerbereinigung bei der Darstellung der Bereiche "Market", "Signale" und "VPS". Insbesondere wurde das Laden von Produktlogos in der "Markt"-Anzeige behoben.
      • Aktualisiertes Paket für die einfache Installation von MetaTrader 5 auf macOS-Rechnern. Mit diesem Paket kann die Plattform ähnlich wie jede andere Anwendung installiert werden.
        Das Paket enthält zusätzliche Komponenten, die einen stabileren und schnelleren Betrieb ermöglichen. Allen Nutzern des Pakets wird dringend empfohlen, MetaTrader 5 neu zu installieren, indem sie die neueste Version von https://download.mql5.com/cdn/web/metaquotes.ltd/mt5/MetaTrader5.pkg.zip
        herunterladen.
      Wenn Sie CrossOver verwenden, installieren Sie bitte MetaTrader 5 komplett neu, um die aktuelle 64-Bit-Plattformversion zu erhalten.
    5. Das Tastaturkürzel "Strg+F9" wurde korrigiert. Sie aktiviert die Registerkarte "Handel" in der Toolbox.

    MQL5

    1. Wir schränken weiterhin die Verbreitung älterer Technologien ein, einschließlich der 32-Bit-Komponenten.
      • 32-Bit-Terminals dürfen keine Programme mehr aus dem Markt herunterladen.
      • 32-Bit-Terminals können sich nicht mit dem Hosting-Service verbinden.
      • Die 32-Bit-Version von MetaEditor unterstützt keinen zusätzlichen Dateischutz über MQL5 Cloud Protector.
      • MQL5-Programme, die unter alten MetaEditor-Versionen (vor 5 Jahren oder mehr veröffentlicht) kompiliert wurden, können in der neuen Terminalversion nicht ausgeführt werden.

      Die Unterstützung für die 32-Bit-Plattformversion wurde vor einem Jahr, nach der Veröffentlichung von Build 2361, eingestellt. Wir empfehlen dringend, auf die 64-Bit-Version von MetaTrader 5 umzusteigen, um alle Funktionen der Plattform ohne Einschränkung nutzen zu können.
      Außerdem empfehlen wir allen Verkäufern, die bisher 32-Bit Produktversionen auf den Markt hochgeladen haben, diese mit dem neuesten 64-Bit MetaEditor neu zu kompilieren und die neuen Versionen hochzuladen. Die Möglichkeit, 32-Bit-MQL5-Programme in Terminals laufen zu lassen, wird in Kürze komplett deaktiviert werden.
    2. Hinzugefügt wurde die Unterstützung der Operationen mit komplexen Zahlen.
      Der neuen integrierte Typ "complex" wurde hinzugefügt.
      struct complex
        {
         double             real;   // reeler Teile
         double             imag;   // imaginärer Teil
        };
      Der Typ "complex" kann als Parameter für MQL5-Funktionen per Wert übergeben werden (im Gegensatz zu normalen Strukturen, die nur per Referenz übergeben werden). Bei Funktionen, die aus DLLs importiert werden, muss der Typ "complex" ausschließlich als Referenz übergeben werden.

      Das Suffix 'i' wird verwendet, um komplexe Konstanten zu kennzeichnen:
      complex square(complex c)
        {
         return(c*c);
        }
        
      void OnStart()
        {
         Print(square(1+2i));  // Die Übergaben einer Konstanten als Parameter
        }
      
      // ausgegeben wird "(-3,4)", die komplexe Zahl in Textform
      Für komplexe Zahlen sind derzeit nur einfache Operationen verfügbar: =, +, -, *, /, +=, -=, *=, /=, ==,!=.

      Später wird die Unterstützung weiterer mathematischer Funktionen hinzukommen, die die Berechnung von Absolutwert, Sinus, Cosinus und anderen ermöglichen.

    3. Neuer Fehlercode TRADE_RETCODE_HEDGE_PROHIBITED — das Öffnen einer Position oder das Platzieren einer Pending Order ist nicht erlaubt, wenn Hedge-Positionen verboten sind. Der Fehler wird zurückgegeben, wenn ein Nutzer versucht, eine Handelsoperation auszuführen, wenn das Hedging für das Konto deaktiviert ist und bereits eine entgegengesetzte Order oder Position für dasselbe Symbol existiert.

    MetaEditor

    1. Fehler im Falle eines Abbruchs von Debugging und Profiling im nicht-visuellen Modus wurde korrigiert.
    2. Das Profiling von Indikatoren mit realen Daten wurde korrigiert. Dieses Profiling konnte unter bestimmten Bedingungen nicht gestartet werden.

    VPS

    1. Die Umgebung der Migration auf einen VPS wurde korrigiert. Bei Expert Advisors, die Indikatoren als Ressourcen enthalten, konnte ein Fehler auftreten.

    Signale

    1. Korrigiert wurde die Prüfung des Handelsmodus von kopierten Signale. Der Symbolhandel kann von der Brokerseite eingeschränkt werden, d.h. der Broker kann Bedingungen für "nur long", "nur short" oder "nur close" setzen. In früheren Versionen erforderte die Synchronisation volle Handelsbedingungen, so dass das Kopieren nicht in allen anderen Fällen erlaubt war. Nach dem Update werden teilweise eingeschränkte Bedingungen als "Handel" betrachtet. Diese Fähigkeit wird besonders für Kunden von Börsenmaklern nützlich sein, die Signale kopieren möchten.

    Tester

    1. Prüfungen der Handelssitzung während des Testens korrigiert. Die Ausführung von Handelsoperationen konnte während des Testens unter bestimmten Bedingungen fehlschlagen. In diesem Fall wurde der Fehler "Markt geschlossen" zurückgegeben, auch wenn die Operation innerhalb einer Handelssitzung initiiert worden war.
    Aktualisierte Dokumentation.


    12345