MetaTrader 5 herunterladen

Hedging-System zur Verrechnung von Positionen in MetaTrader 5 verfügbar

24 März 2016, 12:22
MetaQuotes Software Corp.
0
1 276

Die MetaTrader 5 Plattform wurde ursprünglich für den Börsenhandel mit Netting erstellt. Beim Netting kann man nur eine Position pro Finanzinstrument haben, deswegen führen alle weiteren Operationen zur Veränderung des Volumens, Schließung oder zur Umkehrung der vorhandenen Position. Um Möglichkeiten von Retail-Tradern zu erweitern, wurde das zweite System der Aufrechnung von Positionen — Hedging — auf der Plattform hinzugefügt. Nun kann man eine Vielzahl von Positionen pro Symbol haben, darunter auch gegenläufige. Dank Hedging kann man Handelstrategien mit dem sogenannten "Locking" umsetzen: wenn sich der Preis gegen den Trader entwickelt, kann der Trader eine Position in einer entgegengesetzten Richtung eröffnen.

Das neue System ist dem System von MetaTrader 4 ähnlich, Trader sind also mit diesem System vertraut. Gleichzeitig können sie von allen Vorteilen der fünften Version der Plattform profitieren — Ausführung von Orders durch mehrere Trades (darunter auch Teilausführung), Mehrwährungs- und Multithread-Tester mit MQL5 Cloud Network und vieles mehr.

Nun kann man mit einem Konto an der Börse traden, wo man nur eine Position pro Symbol haben darf und wo Netting verwendet wird. Gleichzeitig kann man direkt auf derselben Plattform, aber auf einem anderen Konto auf dem Devisenmarkt handeln und Hedging verwenden.

Der Beitrag erläutert Netting und Hedging sowie geht auf die Änderungen ein, die mit der Einführung des zweiten Systems der Aufrechnung verbunden sind.


Die Verrechnung von Positionen hängt vom Handelskonto ab

Der Verrechnungstyp von Positionen wird auf Konto-Ebene gesetzt, er wird in der Überschrift des Fensters im Terminal sowie im Journal angezeigt:

Verrechnungssystem auf dem laufenden Konto

Um ein Demokonto mit Hedging zu eröffnen, aktivieren Sie die entsprechende Option:

Eröffnung eines Demokontos mit Hedging

Wenden Sie sich an Ihren Broker, um ein reales Konto mit Hedging zu eröffnen.


Netting-System

In diesem System kann zur gleichen Zeit nur eine Position pro Symbol vorhanden sein:

  • Wenn es auf einem Symbol bereits eine Position gibt, erhöht die Ausführung eines Trades in der gleichen Richtung das Volumen dieser Position.
  • Die Ausführung eines Trades in einer entgegengesetzten Richtung führt zur Reduzierung des Volumens der vorhandenen Position, ihrer Schließung (wenn das Volumen des Trades dem Volumen der laufenden Position gleich ist) oder Umkehrung (wenn das Volumen des entgegengesetzten Trades größer als das der laufenden Position ist).

Dabei ist es irrelevant, was den Gegentrade hervorgerufen hat — die Ausführung einer Marktorder oder Auslösung einer Pending-Order.

Das Beispiel unten zeigt die Ausführung von zwei Buy-Trades EURUSD mit dem Volumen in Höhe von 0.5 Lots:

Netting

Aus der Ausführung dieser Trades ergab sich eine gemeinsame Position mit dem Volumen in Höhe von einem Lot.


Hedging

Beim Hedging kann man eine Vielzahl von Positionen auf einem und demselben Symbol haben, darunter auch gegensätzliche Positionen.

Wenn auf einem Handelsinstrument eine offene Position vorhanden ist, und der Händler einen neuen Trade ausführt (bzw. eine Pending-Order ausgelöst wird), wird eine neue Position eröffnet. Die vorhandene Position ändert sich nicht.

Das Beispiel unten zeigt die Ausführung von zwei Buy-Trades EURUSD mit dem Volumen in Höhe von 0.5 Lots:

Hedging

Die Ausführung dieser Trades führt zur Eröffnung zwei separater Positionen.


Auswirkung des Verrechnungssystems

Je nach dem gewählten System der Verrechnung, verhalten sich einige Handelsfunktionen unterschiedlich:

  • Die Regeln der Vererbung von Stop-Loss und Take-Profit ändern sich.
  • Um eine Position im Netting-System zu schließen, muss man einen Trade auf demselben Symbol und mit demselben Volumen ausführen, aber in einer entgegengesetzten Richtung. Um eine Position im Hedging-System zu schließen, wählen Sie den Befehl "Position schließen" im Kontextmenü der Position aus.
  • Im Hedging-System kann man eine Position nicht umkehren. De facto wird die laufende Position geschlossen und eine neue mit dem restlichen Volumen eröffnet.
  • Im Hedging-System ist eine neue Bedingung für die Berechnung der Marge verfügbar, und zwar geht es um die abgesicherte Marge.


Neuer Typ der Handelsoperation — Close By

Für Konten mit Hedging wurde ein neuer Typ von Handelsoperationen hinzugefügt — Schließung einer Position zur Gegenposition. Diese Operation ermöglicht es, zwei gegensätzliche Positionen auf einem Instrument gleichzeitig zu schließen. Wenn die Gegenpositionen unterschiedliche Zahl von Lots haben, bleibt nur eine der Orders offen. Ihr Volumen ist der Differenz der Lots der zwei geschlossener Positionen gleich, und die Richtung der Position sowie der Eröffnungspreis stimmen mit der größeren (nach Volumen) Position überein.

Im Gegensatz zur einzelnen Schließung von zwei Positionen, lässt die Schließung zur Gegenposition einen Spread sparen:

  • Bei einzelner Schließung muss der Trader den Spread zweimal zahlen: er schließt den Kauf zum niedrigeren Preis (Bid), und den Verkauf — zum höheren Preis (Ask).
  • Bei der Schließung zur Gegenposition werden die erste Position zum Eröffnungspreis der zweiten Position und die zweite Position zum Eröffnungspreis der ersten Position geschlossen.

Schließung zur Gegenposition

Bei der Schließung der Position zur Gegenposition wird eine Order vom Typ "Close by" platziert. Im Kommentar zur Order sind die Tickets der Positionen angegeben, die geschlossen werden. Die Schließung eines Paares gegenläufiger Positionen erfolgt durch zwei Trades vom Typ "out by". Der Gesamtgewinn/-verlust nach der Schließung der beiden Positionen ist nur in einem Trade angegeben.

Schließung einer Position zur Gegenposition in der Kontohistorie


Berechnung der Marge im Hedging-System

Die Berechnung der Marge erfolgt beim Hedging nach den gleichen Formeln und Grundsätzen, wie im Netting-System. Aber wenn mehrere Positionen auf einem Symbol vorhanden sind, ist die Berechnung durch einige Besonderheiten gekennzeichnet.

Positionen/Orders, die in derselben Richtung eröffnet sind

Für die Positionen wird das Volumen addiert, und ein gewichteter durchschnittlicher Eröffnungspreis wird berechnet. Die erhaltenen Werte werden bei der Berechnung der Marge nach einer Formel entsprechend dem Symboltyp verwendet.

Für Pending-Orders wird die Marge (wenn ihr Koeffizient nicht gleich Null ist) separat berechnet.

Gegenläufige Positionen/Orders

Als abgesichert (gehedgt) gelten die Positionen, die auf einem Symbol, aber in entgegengesetzten Richtungen eröffnet sind. Es bestehen zwei Methoden zur Berechnung der Marge für solche Positionen. Die Berechnungsmethode wird vom Broker bestimmt.

Einstellungen zur Berechnung der abgesicherten Marge in der Spezifikation


Basisberechnung
Nach der größeren Seite
Wird verwendet, wenn "Berechnung nach der größeren Seite" nicht im Feld "Abgesicherte Marge" in der Kontraktspezifikation angegeben ist.

Die Berechnung besteht aus mehreren Phasen:
  • Für restliches Volumen
  • Für abgesichertes Volumen (wenn die Höhe der abgesicherten Marge angegeben ist)
  • Für Pending Orders
Der Endwert stellt die Summe der in jeder Phase berechneten Margen dar.

Berechnung für restliches Volumen
  • Das Gesamtvolumen von allen Positionen und Marktorders für jede der Seiten Buy und Sell berechnen.
  • Den gewichteten durchschnittlichen Eröffnungspreis der Positionen und Orders für jede Seite berechnen: Eröffnungspreis der Position oder Order 1 * Volumen der Position oder Order 1 + ... + Eröffnungspreis der Position oder Order N * Volumen der Position oder Order N) / (Volumen der Position oder Order 1 + ... + Volumen der Position oder Order N).
  • Restliches Volumen berechnen (das Volumen der kleineren Seite vom Volumen der größeren Seite subtrahieren).
  • Anschließend die Marge anhand des berechneten Volumens und des gewichteten Durchschnittspreises nach der Formel je nach Symboltyp berechnen.
  • Um den Koeffizienten der Marge zu berechnen und die Währung der Marge in die Währung der Einlage zu konvertieren, wird der gewichtete Durchschnittswert des Koeffizienten und des Kurses verwendet.

Berechnung für abgesichertes Volumen
Wird verwendet, wenn eine 'Abgesicherte Marge' in der Kontraktspezifikation festgelegt wurde. In diesem Fall wird die Marge sowohl für abgesichertes als auch für restliches Volumen berechnet.

Wenn die Anfangsmarge für das Symbol festgelegt wurde, wird die abgesicherte Marge als absoluter Wert (in Geld) angegeben.

Wenn die Anfangsmarge nicht festgelegt wurde ( = 0), wird die Kontraktgröße im Feld "Abgesicherte Marge" angegeben. Die Marge wird nach einer Formel je nach Symboltyp unter Verwendung der Kontraktgröße berechnet. Es gibt zum Beispiel zwei Positionen Buy EURUSD 1 lot und Sell EURUSD 1 lot, die Kontraktgröße beträgt 100.000. Wenn man 100.000 im Feld "Abgesicherte Marge" angibt, wird die Marge für zwei Positionen als für 1 Lot berechnet. Wenn man 0 angibt, wird keine Marge für das 'gehedgte' Volumen berechnet.

Für jeden abgesicherten Lot wird eine Marge entsprechend der im Feld "Abgesicherte Marge" in der Kontraktspezifikation angegebenen Marge berechnet:
  • Abgesichertes Volumen für alle offenen Positionen und Marktorders berechnen (das restliche Volumen vom Volumen der größeren Seite subtrahieren).
  • Den gewichteten durchschnittlichen Eröffnungspreis von Positionen und Marktorders berechnen: (Eröfffnungspreis der Position oder Order 1 * Volumen der Position oder Order 1 + ... + Eröffnungspreis der Position oder Order N * Volumen der Position oder Order N) / (Volumen der Position oder Order 1 + ... + Volumen der Position oder Order N)...
  • Die Marge anhand des berechneten Volumens, des gewichteten Durchschnittspreises und des Wertes der abgesicherten Marge nach der Formel je nach Symboltyp berechnet.
  • Um den Koeffizienten der Marge zu berechnen und die Währung der Marge in die Währung der Einlage zu konvertieren, wird der gewichtete Durchschnittswert des Koeffizienten und des Kurses verwendet.

Berechnung für Pending Orders
  • Die Marge wird für jeden Typ der Pending Order einzeln berechnet (einzeln für Buy Limit, einzeln für Sell Limit usw).
  • Um den Koeffizienten der Marge zu berechnen und die Währung der Marge in die Währung der Einlage zu konvertieren, wird der gewichtete Durchschnittswert des Koeffizienten und des Kurses für jeden Typ der Pending Orders verwendet.
Wird verwendet, wenn im Feld "Abgesicherte Marge" in der Kontraktspezifikation "Berechnung nach der größeren Seite" angegeben ist.
  • Die Marge für die größere und kleinere Seite für alle offenen Positionen und Marktorders berechnen.
  • Die Marge wird für jeden Typ der Pending Order einzeln berechnet (einzeln für Buy Limit, einzeln für Sell Limit usw).
  • Die Marge nach der größeren Seite addieren: Long-Positionen + Marktorders + Long Pending Orders.
  • Die Marge nach der kleineren Seite addieren: Short-Positionen und Marktorders + Short Pending Orders.
  • Als Endwert der Marge gilt der größere der berechneten Werte.


Änderungen in MQL5

Jede Position hat nun ein eigenes einmaliges Ticket. In der Regel fällt es mit dem Ticket der Order überein, mit der die Position eröffnet wurde. Für alle früher eröffneten Positionen wird ein Ticket nach der Aktualisierung der Terminalversion automatisch gesetzt.

Bei der Modifizierung oder Schließung einer Position geben Sie unbedingt ihr Ticket an (MqlTradeRequest::ticket). Auch im Netting-System kann man das Ticket angeben, die Identifizierung der Position erfolgt allerdings nach dem Symbolnamen.


MqlTradeRequest

Zwei neue Felder in der Struktur von MqlTradeRequest:

  • position — Ticket der Position. Das Feld ist für eine eindeutige Identifizierung bei der Änderung und Schließung einer Position auszufüllen. In der Regel entspricht es dem Ticket der Order, mit der die Position eröffnet wurde.
  • position_by — Ticket der Gegenposition. Wird bei der Schließung einer Position zur Gegenposition verwendet, die auf demselben Symbol, aber in einer entgegengesetzten Richtung eröffnet wurde.
struct MqlTradeRequest
  {
   ENUM_TRADE_REQUEST_ACTIONS    action;           // Typ der ausführenden Aktion 
   ulong                         magic;            // Magic number des Expert Advisors 
   ulong                         order;            // Ticket der Order
   string                        symbol;           // Symbolname
   double                        volume;           // Angefordetes Volumen des Trades in Lots
   double                        price;            // Preis 
   double                        stoplimit;        // Grenze von Stop-Limit
   double                        sl;               // Grenze von Stop-Loss
   double                        tp;               // Grenze von Take Profit
   ulong                         deviation;        // Maximale zulässige Abweichung von dem Preis
   ENUM_ORDER_TYPE               type;             // Ordertyp
   ENUM_ORDER_TYPE_FILLING       type_filling;     // Ordertyp nach Ausführung
   ENUM_ORDER_TYPE_TIME          type_time;        // Ordertyp nach Laufzeit
   datetime                      expiration;       // Ablaufdatum der Order (für Orders vom Typ ORDER_TIME_SPECIFIED)
   string                        comment;          // Kommentar zur Order
   ulong                         position;         // Ticket der Position
   ulong                         position_by;      // Ticket der Gegenposition
  };

MqlTradeTransaction

Zwei gleichartige Felder wurden der Handelstransaktion MqlTradeTransaction hinzugefügt:

  • position — Ticket der Position, auf die sich die Transaktion ausgewirkt hat. Wird für die Transaktionen ausgefüllt, die mit Marktorders (TRADE_TRANSACTION_ORDER_* außer TRADE_TRANSACTION_ORDER_ADD, in der das Ticket der Position noch nicht zugewiesen wurde) und der Historie der Orders (TRADE_TRANSACTION_HISTORY_*) verbunden sind.
  • position_by — Ticket der Gegenposition. Wird bei der Schließung einer Position zur Gegenposition verwendet, die auf demselben Symbol, aber in einer entgegengesetzten Richtung eröffnet wurde. Das Feld wird nur für die Orders ausgefüllt, die eine Position zur Gegenposition (close by) schließen, sowie für die Trades, die eine Position zur Gegenposition (out by) schließen.
struct MqlTradeTransaction
  {
   ulong                         deal;             // Ticket des Trades
   ulong                         order;            // Ticket der Order
   string                        symbol;           // Symbolname
   ENUM_TRADE_TRANSACTION_TYPE   type;             // Typ der Transaktion
   ENUM_ORDER_TYPE               order_type;       // Ordertyp
   ENUM_ORDER_STATE              order_state;      // Status der Order
   ENUM_DEAL_TYPE                deal_type;        // Typ des Trades
   ENUM_ORDER_TYPE_TIME          time_type;        // Ordertyp nach Laufzeit
   datetime                      time_expiration;  // Ablaufdatum der Order
   double                        price;            // Preis 
   double                        price_trigger;    // Preis der Auslösung einer Stop-Limit-Order
   double                        price_sl;         // Stop-Loss-Grenze
   double                        price_tp;         // Take-Profit-Grenze
   double                        volume;           // Volumen in Lots
   ulong                         position;         // Ticket der Position
   ulong                         position_by;      // Ticket der Gegenposition
  };


PositionGetTicket

Die neue Funktion PositionGetTicket liefert das Ticket der Position nach dem Index in der Liste offener Positionen und wählt diese Position für die weitere Arbeit mithilfe von Funktionen PositionGetDouble, PositionGetInteger und PositionGetString automatisch aus.

ulong  PositionGetTicket(
   int  index      // Nummer in der Liste der Positionen
   );


PositionSelectByTicket

Die neue Funktion PositionSelectByTicket wählt eine offene Position für die weitere Arbeit nach dem angegebenen Ticket aus.

bool  PositionSelectByTicket(
   ulong   ticket     // Ticket der Postion
   );


PositionSelect

PositionSelect wählt eine Position nach dem Symbolnamen für die weitere Arbeit mit den Funktionen PositionGetDouble, PositionGetInteger und PositionGetStringaus. Im Hedging-System, in welchem mehrere Positionen auf einem Symbol vorhanden sein können, wählt die Funktion die Position mit dem kleinsten Ticket aus.


ACCOUNT_MARGIN_MODE

Mit der neuen Eigenschaft ACCOUNT_MARGIN_MODE kann man den Berechnungsmodus der Marge und der Verrechnung von Positionen auf dem Konto erhalten:

Identifikator
Beschreibung
ACCOUNT_MARGIN_MODE_RETAIL_NETTING
Wird für den außerbörslichen Handel mit Netting-Modus verwendet (eine Position pro Symbol). Die Marge wird anhand des Symboltyps (SYMBOL_TRADE_CALC_MODE) berechnet.
ACCOUNT_MARGIN_MODE_EXCHANGE
Wird für den Börsenmarkt verwendet. Die Marge wird anhand Diskonte berechnet, die in den Einstellungen des Symbols angegeben werden. Die Diskonte werden vom Broker gesetzt, können aber nicht niedriger als die von der Börse gesetzten Werte sein.
ACCOUNT_MARGIN_MODE_RETAIL_HEDGING
Wird für den außerbörslichen Handel bei einer unabhängigen Verrechnung von Positionen ("Hedging", mehrere Positionen können pro Symbol vorhanden sein). Die Marge wird anhand des Symboltyps (SYMBOL_TRADE_CALC_MODE) und unter Berücksichtigung mehrerer Positionen pro Symbol berechnet.


SYMBOL_MARGIN_HEDGED

Die neue Eigenschaft SYMBOL_MARGIN_HEDGED ermöglicht es Ihnen, die Größe der abgesicherten Marge auf einem Handelsinstrument zu erhalten. Die Besonderheiten der Berechnungen im Hedging sind oben beschrieben.


Neue Konstanten

Da der neue Typ der Handelsoperation "Schließen zur Gegenposition" hinzugefügt wurde, erschienen neue Handelseigenschaften:

  • TRADE_ACTION_CLOSE_BY — neuer Typ der Handelsoperation — Position zur Gegenposition schließen.
  • ORDER_TYPE_CLOSE_BY — neuer Ordertyp — Position zur Gegenposition schließen.
  • ORDER_POSITION_BY_ID  — neue Ordereigenschaft — Ticket der Gegenposition, die bei der Schließung der laufenden verwendet wird.
  • DEAL_ENTRY_OUT_BY — neuer Tradetyp — Position zur Gegenposition schließen.


Hedging und MQL5 Cloud Network — zusätzlicher Bonus

Ab jetzt kann man mithilfe von MetaTrader 5 sowohl an der Börse als auch auf dem Retail-Devisenmarkt mit Hedging handeln. Die Entwickler automatischer Systeme, die Hedging verwenden, haben einen weiteren wichtigen Vorteil bekommen: nun steht ihnen nicht nur der Multispread-Tester, sondern auch die Kapazitäten von MQL5 Cloud Network zur Verfügung.

Aktualisieren Sie Ihre Plattform und nutzen Sie die neuen Möglichkeiten!

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

Universelles Regressionsmodell für die Prognostizierung von Marktpreisen Universelles Regressionsmodell für die Prognostizierung von Marktpreisen

Der Marktpreis wird aus einer stabilen Balance zwischen Angebot und Nachfrage geformt, die ihrerseits von diversen wirtschaftlichen, politischen und psychologischen Faktoren abhängen. Unterschiede in der Natur und den Ursachen der Auswirkungen dieser Faktoren machen es schwierig, alle Komponenten direkt zu betrachten. Dieser Beitrag beschreibt einen Versuch, den Marktpreis basierend auf einem ausgearbeiteten Regressionsmodell zu prognostizieren.

Offenlegen von C#-Code in MQL5 mithilfe nicht gemanagter Exporte Offenlegen von C#-Code in MQL5 mithilfe nicht gemanagter Exporte

In diesem Beitrag stelle ich verschiedene Interaktionsmethoden zwischen MQL5-Code und gemanagtem C#-Code vor. Ich habe auch mehrere Beispiele dafür bereitgestellt, wie MQL5-Strukturen gegen C# angeordnet werden können und wie sich exportierte DLL-Funktionen in MQL5-Scripts aufrufen lassen. Ich bin überzeugt, dass die hier bereitgestellten Beispiele als Basis für zukünftige Forschungen zum Schreiben von DLLs in gemanagtem Code dienen können. Dieser Beitrag bereitet auch Wege für die Nutzung bereits in C# implementierter Bibliotheken in MetaTrader.

Verwendung von Indikatoren in MetaTrader 5 mit dem Machine Learning Framework ENCOG für die Prognostizierung von Zeitreihen Verwendung von Indikatoren in MetaTrader 5 mit dem Machine Learning Framework ENCOG für die Prognostizierung von Zeitreihen

In diesem Beitrag wird die Verbindung von MetaTrader 5 mit ENCOG, einem erweiterten neuronalen Netzwerk und Machine Learning Framework, vorgestellt. Er enthält die Beschreibung und Implementierung eines einfachen neuronalen Netzwerkindikators auf Basis technischer Standardindikatoren und eines Expert Advisors auf Basis eines neuronalen Indikators. Alle Quellcodes, kompilierten Binärdateien, DLLs und Beispiele für eingelernte Netzwerke sind an diesen Beitrag angehängt.

Nutzung von Pseudo-Templates als Alternative für C++-Templates Nutzung von Pseudo-Templates als Alternative für C++-Templates

Dieser Beitrag beschreibt eine Art der Programmierung ohne Templates, allerdings unter Beibehaltung des ihnen eigenen Programmierstils. Er schildert die Implementierung von Templates mithilfe von benutzerdefinierten Methoden und bietet ein vorgefertigtes, angehängtes Script zur Erstellung eines Codes auf Basis festgelegter Templates.