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

MetaQuotes | 24 März, 2016

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:

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:


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:

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:

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:

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:


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!