MetaTrader 5 build 1430: Aktualisierung des Exposure-Tabs

Es wurde ein neuer Algorithmus für die Zusammensetzung des Reiters "Aktiva" für den Wertpapiermarkt implementiert

16 September 2016

Terminal

  1. Es wurde ein neuer Algorithmus für die Zusammensetzung des Reiters "Aktiva" für den Wertpapiermarkt implementiert. Nun passt das Terminal die Anzeige der Aktiva an, je nach dem welches Risikomanagementsystem genutzt wird: Retail Forex, Futures oder Börsenmodell.

    Denjenigen, die Devisen oder Futures an einer Börse handeln, hilft der Reiter "Belastung" ihre aktuelle Lage auf dem Markt zu erfassen. Eine und dieselbe Währung kann in verschiedenen Symbolen vorkommen: als eine Währung in einem Paar, als Basiswährung usw. Sie können zum Beispiel entgegengesetzte Positionen auf GBPUSD, USDJPY und GBPJY haben. Sie können z.B. entgegengesetzte Positionen auf GBPUSD, USDJPY und GBPJY haben. In diesem Fall kann es problematisch sein zu verstehen, wie viel Devisen Sie haben und wie viel Sie schulden. Noch komplizierter ist es, wenn Sie nicht drei solche Positionen haben, sondern viel mehr. In diesem Fall können Sie den Kontostand im Reiter "Belastung" ansehen.
    Schauen wir uns ein Beispiel mit den gleichen drei Positionen an:

    Buy GBPJPY 1 lot at 134.027 — 100 000 GBP bekommen, 134 027 000 JPY gegeben
    Sell USDJPY 1 lot at 102.320 — 100 000 USD gegeben, 102 320 000 JPY bekommen
    Sell GBPUSD 1 lot at 1.30923 — 100 000 GBP gegeben, 103 920 USD bekommen

    Wir haben 100.000 GPB gleichzeitig gekauft und verkauft. Insgesamt haben wir 0 GBP, und diese Währung wird im Tab "Belastung" nicht angezeigt. US-Dollar: bei einer Transaktion gegeben, bei der anderen - bekommen. Der Reiter "Aktiva" berechnet den Endbetrag und addiert ihn zum aktuellen Kontostand, denn die Währung der Anlage ist auch USD. JPY kam in zwei Transaktionen vor, der Reiter zeigt den Endwert an.




    Diejenigen, die nach dem Börsenmodell handeln, können diesem Tab entnehmen, wie das Geld genutzt wird. Im Gegensatz zum vorherigen Modell wird das Geld bei der Ausführung von Trades direkt abgezogen/gutgeschrieben. Beim Kauf EURRUB bekommen Sie Euro, und abgezogen vom Konto wird der entsprechende Betrag in Rubel. Während des Handels kann der Kontostand sogar einen negativen Wert annehmen, und zwar wenn Sie mit geliehenen Mitteln handeln und erworbene Aktiva als Sicherung dienen. In dieser Situation hilft Ihnen der Reiter "Aktiva" den Kontostand zu verstehen.

    Darüber hinaus wird hier der Liquidationswert angezeigt — die Summe der Geldmittel auf dem Konto und der Wert (das Ergebnis) der Schließung aktueller Positionen zum Marktpreis.





  2. Es wurde ein Fehler bei der Anzeige des Transaktionstyps in der Historie behoben.
  3. Eine wiederholte Anzeige des Fensters mit Informationen über Risiken wurde bei einer erneuten Verbindung mit dem Handelskonto korrigiert.
  4. Das Arbeiten mit dem Dialog der Auswahl von Handelsinstrumenten bei einer großen Anzahl der Symbolen (ein tausend und mehr) wurde optimiert und korrigiert.
  5. Die Anzeige von Levels der eingebauten Indikatoren wurde korrigiert, die anhand von Moving Average berechnet werden (Bollinger Bands, Adaptive Moving Average usw.). Das Problem trat beim Zeichnen der Indikatoren in einem separaten Unterfenster auf.
  6. Es wurde ein Fehler behoben, der dazu geführt hatte, dass das Platzieren einer Futures-Order nicht möglich war. Der Fehler trat auf, wenn ein Preis in der Order mit der im Kontrakt festgelegten oberen oder unteren Preisgrenze übereinstimmte.

MQL5

  1. Die Kompilierung von MQL5-Programmen wurde optimiert und beschleunigt.
  2. Für Klassen, Strukturen und Funktionen wurde die Unterstützung der Modifier final und override hinzugefügt.

    Modifier final für Klassen und Strukturen
    Das Vorhandensein des final Modifiers bei der Deklaration der Struktur verbietet eine weitere Vererbung. Wenn es nicht notwendig ist, die Klasse (Struktur) weiter zu modifizieren oder wenn keine Änderungen aus Sicherheitsgründen zulässig sind, deklarieren Sie diese mit dem final Modifier. Dabei werden alle Glieder der Struktur implizit auch als final gelten.
    class CFoo final
      {
      //--- Body der Klasse
      };
     
    class CBar : public CFoo
      {
      //--- Body der Klasse
      };
    Bei einem Versuch der Vererbung von einer Struktur mit dem final Modifier, wie im Beispiel oben, gibt der Compiler einen Fehler aus:
    cannot inherit from 'CFoo' as it has been declared as 'final'
    see declaration of 'CFoo'

    Modifier override für Funktionen
    Der override Modifier bedeutet, dass die zu deklarierende Funktion die Methode der Basisklasse unbedingt überschreiben muss. Dank diesem Modifier kann man Fehler beim Überschreiben vermeiden, wie z.B. zufällige Änderung der Methodensignatur. In der Basisklasse ist zum Beispiel die Methode func definiert, die die Variable vom Typ int als Argument hat:
    class CFoo
      {
       void virtual func(int x) const { }
      };
    Weiter wird die Methode in der abgeleiteten Klasse neu definiert:
    class CBar : public CFoo
      {
       void func(short x) { }
      };
    Aber durch einen Fehler ändert sich der Typ des Arguments von int zu short. In diesem Fall wird die Methode nicht mehr überschrieben, sondern überladen. In einigen Situationen kann der Compiler entsprechend dem Algorithmus der überladenen Funktion eine in der Basisklasse definierte Methode statt einer überschriebenen auswählen.

    Um solche Fehler zu vermeiden, sollte man der Methode den override Modifier hinzufügen.
    class CBar : public CFoo
      {
       void func(short x) override { }
      };
    Wenn die Signatur beim Überschreiben geändert wird, kann der Compiler keine Methode mit der gleichen Signatur in der Basisklasse finden und gibt einen Kompilierungsfehler aus:
    'CBar::func' method is declared with 'override' specifier but does not override any base class method

    Modifier final für Funktionen

    Der Modifier final funktioniert umgekehrt: er verbietet, Methoden in abgeleiteten Klassen zu überschreiben. Wenn die Implementierung der Methode abgeschlossen ist, deklarieren Sie diese mit dem final Modifier, damit sie später garantiert nicht verändert wird.
    class CFoo
      {
       void virtual func(int x) final { }
      };
     
    class CBar : public CFoo
      {
       void func(int) { }
      };
     
    Bei einem Versuch der Vererbung von einer Struktur mit dem final Modifier, wie im Beispiel oben, gibt der Compiler einen Fehler aus:
    'CFoo::func' method declared as 'final' cannot be overridden by 'CBar::func'
    see declaration of 'CFoo::func'
  3. Die Kompilierung von Template-Funktionen mit Standardparametern wurde korrigiert.

Market

  1. Es wurde eine Reihe von Fehlern beim Sortieren von Produkten im Market behoben.

Tester

  1. Die Aktualisierung aktueller Marktpreise offener Orders und Positionen wurde im visuellen Modus des Strategietesters korrigiert.
  2. Slippage bei der Ausführung von Buy Limit und Sell Limit Orders beim Testen anhand Börseninstrumenten beseitigt.
  3. Es wurde ein Fehler behoben, der in einigen Fällen zur Generierung falscher Preise im Testmodus "Nur Eröffnungspreise" führte.
  4. Die Generierung der OnTradeTransaction Events beim Testen korrigiert.
  5. Beim Testen anhand realer Ticks wird die Information über die Nichtübereinstimmung der Tick-Preise (Bid oder Last, je nach dem anhand welchen Preises der Balken gebildet wird) mit Low oder High des aktullen Minutenbalkens im Journal des Strategietesters angezeigt.

MetaEditor

  1. Es wurden Fehler der Anzeige von Daten des Profilings in Quellcode-Dateien behoben.
  2. Die Dokumentation wurde aktualisiert.