English Русский 中文 Español 日本語 Português
ABC Trading im Forex

ABC Trading im Forex

MetaTrader 4Beispiele | 14 April 2016, 15:23
1 191 0
MetaQuotes
MetaQuotes

Die Arbeit auf den Finanzmärkten besteht vor allem aus Handelsoperationen. Wir haben alle von der Kindheit eine intuitive Vorstellung vor den Operationen, bei denen es um Kaufen und Verkaufen geht. Aber das Trading im Forex hat seine eigene Besonderheit. In diesem Artikel werden wir die notwendigen Begriffe betrachten, die einige Fachausdrücke erklären. Wir werden auch die MQL4-Funktionen berücksichtigen, die mit diesen Begriffen entsprechen.

Ein bisschen Vorgeschichte


Wir wissen aus unseren Geschichtsbüchern, dass das Geld in der Antike nicht verwendet wurde - es gab natürliche Volkswirtschaft und es gab einen direkten Austausch mit Produkten.  Die Entstehung (Erfindung) des Gelds selbst war ein großer Schritt nach vorn in der Entwicklung der Menschheit. Es erlaubte Menschen praktisch alle Waren um eine universelle Ware auszutauschen - um das Geld. Allerdings je nach dem Land und der Epoche hat die Form der universellen Ware immer variierte, als  Geld war immer eine sehr seltene Ware, die noch in Teile gebrochen werden konnte und auch leicht gelagert oder auch transportiert werden konnte, zum Beispiel Gold oder Silber. Natürlich hat jedes Land heutzutage seine eigene Geschichte und Bräuche, aber auch ihre eigene Währung - die Form der monetären Ressourcen. Aber schon in grauer Vorzeit gab es Handelsbeziehungen zwischen Ländern und die Händler trugen ihre Waren von einem Land in ein anderes Land zu verkaufen. Die Waren wurden entweder um lokale Waren oder um ein Äquivalent ausgetauscht, zum Beispiel um Münzen aus Gold.
 

Heutzutage


Heutzutage werden die Edelmetalle praktisch nicht als Zahlungsart verwendet, so dass Länder bei ihren Zahlungen einen Wechselkurs verwenden. Der Wechselkurs legt den Preis einer Währungseinheit eines Landes in Währungseinheiten eines anderen Landes. Zum Beispiel bedeutet der Kurz von EUR / USD, der 1,25 gleich ist, dass man für ein Euro 1,25 $ bekommt. So ist es für zwei beliebigen frei konvertierbaren Währungen möglich, ihren Wechselkurs zu berechnen. Die großen Devisen werden in der Regel von den Banken bei Import / Export-Operationen durchgeführt, so dass es notwendig geworden ist, Standardwährungspaare und Pauschbeträge einzuführen. Der Name eines Währungspaars (ein Finanzinstrument) im MetaTrader 4 Client Terminal wird als eine Kombination aus Abkürzungen der Währungen geschrieben. Zum Beispiel ist EURUSD - der Kurz von Euro in US-Dollar, GBPJPY - Britische Pfund in japanischen Yens, das heißt, die erste Währung wird immer im Bezug auf die zweite definiert.

Die Währung des Deposites


Obwohl es möglich ist, die Handelsoperationen mit verschiedenen Währungspaaren durchzuführen, wird das Handelsergebnis immer nur in einer Währung geschrieben - in der Währung des Deposites. Wenn die Währung des Deposites US-Dollar ist, dann werden Gewinne und Verluste in US-Dollar angezeigt, wenn es in Euro ist, werden sie natürlich in Euro angezeigt. Sie können Informationen über die Währung Ihres Deposits durch die Funktion  AccountCurrency() erhalten. Diese Funktion kann die Handelsergebnisse in Anlagewährung konvertieren.

Standardkontraktgröße - Standard Lot


Wenn eine Währung gegen eine andere ausgetauscht wird, verwenden man den Begriff «Lot». Lot ist die Anzahl der gekauften oder verkauften Waren. Für jedes Währungspaar kann Lot einen eigenen Wert haben. Derzeit haben die meisten Währungspaare den Wert eines Lots in Höhe von 100 000 (hundert tausend). Aber von was 100 000?   Wenn wir kaufen, dann geben wir Geld für Waren. Wenn wir verkaufen, bekommen wir Geld für Waren. Aber mit Währungen kaufen und verkaufen wir gleichzeitig, da wir eine Währung für eine andere bekommen. Aus diesem Grund ist es üblich, wenn wir kaufen  und geben die zweite Währung, dass wir die erste Währung des Paares bekommen. Ein Standardlot für EURUSD ist - 100 000 Euro. Wenn wir ein Standardlot EURUSD kaufen, bedeutet dies, dass wir 100 000 EURO erhalten und geben eine Menge von US-Dollar. Da die Einnahmen und Ausgaben müssen immer gleich sein, heißt 100 000 EURO = X US-Dollar. Wie können wir dann die Menge von US-Dollar berechnen? Lassen Sie uns Euro mit US-Dollar im Ausdruck ersetzen: 
    

       EURO= k*USD, 
      wo k - der Wechselkurs von EURUSD ist;  
      100 000 (k*USD) = X USD         =>          X= k*100 000; 
      wenn der aktuelle Wechselkurs von EURUSD 1.25 ist, dann X=125 000.


Das heißt, wenn wir ist einen Lot von EURUSD kaufen, bekommen wir 100 000 EUR und geben 125 000 $. Man sagt manchmal - wir haben Euro gekauft und haben US-Dollar verkauft, was das gleiche bedeutet, es wurde EURUSD gekauft. Der Preis des standarten Lots für ein Währungspaar kann man von der Vertragsspezifikation erfahren, oder auch durch die Funktion  MarketInfo(), zum Beispiel:

MarketInfo(Symbol(), MODE_LOTSIZE);

Man kann auch den Textnamen eines Währungspaares eingeben und die Funktion

MarketInfo("EURUSD",  MODE_LOTSIZE);

liefert 100 000 wieder. Es ist in den Informationsdateien geschrieben: MODE_LOTSIZE -  ist die Kontraktgröße in der Basiswährung. Die Basiswährung für EURUSD ist EUR (*). Die Basiswährung für CHFJPY ist Schweizer Franken, und der Preis für ein Lot wird in Schweizer Franken ausgedrückt.



Das Ergebnis der Handelsoperation


Nehmen wir ein anderes Beispiel. Wir kauften einen Lot EURUSD bei 1,2500. Der aktuelle Preis ist 1,2600, so dass wir entschieden haben, das Handeln zu schließen, das heißt, 1 Lot EURUSD zu verkaufen.

Notieren wir die Balance:


      Der Kauf 1 Lot EURUSD bei 1,2500 (eröffnen ein Handeln)  :     + 100 000 EURO    - $125 000 $; 
      1 Lot von EURUSD bei 1,2600 zu verkaufen (schließen das Handeln):  - 100 000 EURО    + $126 000;
      Daraus resultierender Gewinn von der Operation :                                      0 EURO              + $ 1000;

Schlussfolgerung: Der resultierte Gewinn aus der Operation auf EURUSD wird in US-Dollar ausgedrückt, das heißt, in der zweiten Währung des Währungspaares. Versuchen Sie die Ergebnisse eines anderen Handelns selbst zu berechnen: Es wurde 1Lot GBPCHF bei 2,30  gekauft und bei 2,40 geschlossen. Wie viel wird der Gewinn, und in welcher Währung?


Hebel und Marge


Die Handelsoperationen auf Finanzmärkten sind attraktiv deswegen, weil man von der Hebelwirkung profitieren kann. In unserem Beispiel hätten wir beim Kauf eines Lots  EURUSD mehr als 100 000 US-Dollar ($125 000 beim Kurs 1,25) haben müssen. Die meisten Broker ermöglichen den Trader den Hebel zu verwenden. Der Wert des Hebels zeigt, wie viel weniger Kapital zur Verfügung stehen soll, um eine Position zu öffnen. Die Menge des Geldes, welche notwendig ist, um eine Position zu öffnen, nennt man Marge. Ohne Hebel kostet ein Lot EURUSD 100 000 Euro oder $125 000 im Kurs 1,2500. Wenn Ihr Broker Sie dem Hebel von 100 zulässt, dann die notwendige Menge des Geldes, um eine Position zu öffnen, wird 100-mal weniger und wird $ 1250. Der Gewinn, den wir berechnet haben, bleibt aber gleich. Sie können den Wert des Hebels auf dem Handelskonto durch die Funktion AccountLeverage() erfahren. Das heißt, die Marge bei der Eröffnung eines Lots wird definiert als:


      die Marge (in der Basiswährung) = Der Preis des Lots(in der Basiswährung) / Die Größe_des Hebels.

Den Preis der Basiswährung in Bezug auf die Anlagewährung kann man durch den Kurs zwischen der Basiswährung zur Anlagewährung erfahren.


Die Berechnung der Marge


Beispiel:
 
      MarketInfo("GBPJPY", MODE_LOTSIZE) gibt den Wert 70 000 (LS).
      AccountCurrency() liefert den Wert "EUR" (AC). 
      AccountLeverage() liefert 50 (AL).
      Wie können wir den Preis des GBPJPY Vertrags zum jetzigen Zeitpunkt (M) berechnen?  

Die Basiswährung ist GBP, deshalb 

      M 
= 70000 GBP / AL = 70 000*GBPEUR / AL = 70000 / EURGBP / AL.

Wenn der EURGBP im Moment 0,6786 ist, dann

      M
= 70000 / 0.6786 / 50 = 2063.07 EURO.

Wenn der Hebel gleich 100 ist, wird die Marge zwei Mal weniger sein - 1.031,54 Euro. Für den Hebel, der 10 ist, wird die Marge


      M = 70000 / 0.6786 / 10 = 10315.36.

Das heißt, die Größe des Hebels beeinflusst nur die Größe der Marge, welche zur Eröffnung einer Position notwendig ist, aber die beeinflusst nicht die Gewinngröße, die durch das Handeln eines Vertrags bekommen wurde. Es sollte auch daran erinnert werden, dass die Größe der Marge in Euro mit dem Kurs EURGBP zusammen schwankt, denn die Basiswährung ist da Britisches Pfund. In unserem Beispiel haben wir den Kurs GBPEUR mit 1 / EURGBP ersetzt, denn es steht nur das Währungswerkzeug EURGBP zur Verfügen.




Der Punkt - Die minimale Preisänderung


Die Währungspaare im Forex unterscheiden sich voneinander nicht nur durch ihre besonderen Bewegungen, sondern auch durch die Anzahl der Dezimalstellen in ihren Wechselkursen. Zum Beispiel war der Kurs GBPJPY am 29-en Dezember 2006 233,18, während der Schlusskurs von GBPUSD am selben Tag 1,9587 war. Die Anzahl der Dezimalstellen (Genauigkeit) kann man durch die untere Funktion erfahren

MarketInfo(Symbol(), MODE_DIGITS);

Zum Beispiel, die Funktion

MarketInfo("GBPJPY", MODE_DIGITS);
liefert 2 zurück.


Entsprechend wird auch die minimale Preisänderung für verschiedene Währungspaar unterschiedlich sein. Für Yens Paare ist dieser Wert in der Regel 0,01 und für EURUSD wird es 0,0001 sein. Der Wert der minimalen Preisänderung in der Kurswährung nennt man der Punkt (Point), und den kann man durch  die unteren Funktion erhalten:

MarketInfo(Symbol(), MODE_POINT);

Für die Währungspaare sind der Wert der Funktionen

MarketInfo(Symbol(), MODE_POINT); и MarketInfo(Symbol(), MODE_TICKSIZE);

gleich.


Der Preis des Punktes in der Währung des Deposits

Um Risiken zu bewerten, muss der Händler die Größe des Verlustes unter einer offenen Position kennen, wenn der Preis auf eine bestimmte Anzahl der Punkte bewegen wird. Oder umgekehrt - der Händler muss die akzeptable Größe des Verlustes in Punkten von der Größe des Verlustes in Geld berechnen. Zu diesem Zweck kann man diese untere Funktion verwenden

MarketInfo(Symbol(), MODE_TICKVALUE);

die den Wert von einem Punkt in die Anlagewährung zurückliefert. Es muss daran erinnert werden, dass der Preis eines Punktes sich für die Währungspaare ändern wird,  bei denen die zweite Währung zur Anlagewährung nicht gleich sein wird.

Die Größe der Marge für einen Lot


Die letzte betrachtete Funktion

MarketInfo(Symbol(), MODE_MARGINREQUIRED);

liefert die Anzahl der freien Mittel zurück, die bei der Eröffnung eines Lots für Kauf notwendig sind, das heißt, liefert einen standarden Lot beim Preis Ask.

Die beispielhafte Verwendung der Funktionen, die oben betrachtet wurden


Im Folgenden können Sie das Skript sehen, das die Daten für die betrachteten Funktionen zwölf Währungspaare zeigt. Es sollte beachtet werden, dass die benutzerdefinierte Funktion MarginCalculate() in diesem Skript zum Preis eines standard Lots beim Preis Bid  (verkaufen) zurückliefert. Der erwähnte Skript ermöglicht zu lernen, die MQL4-Funktionen in Expert Advisors Algorithmen Money Management(MM - die Kapitalsteuerung) und Risk Management(RM - Risikosteuerung) zu verwenden.

//+------------------------------------------------------------------+
//|                                          SimplySpecification.mq4 |
//|                      Copyright © 2007, MetaQuotes Software Corp. |
//|                                       https://www.metaquotes.net/ |
//+------------------------------------------------------------------+
string SymbolsArray[13] = {"","USDCHF","GBPUSD","EURUSD","USDJPY",
"AUDUSD","USDCAD","EURGBP","EURAUD","EURCHF","EURJPY","GBPJPY","GBPCHF"};
//+------------------------------------------------------------------+
//| string SymbolByNumber                                            |
//+------------------------------------------------------------------+
string GetSymbolString(int Number)
  {
//----
   string res = "";
   res = SymbolsArray[Number];   
//----
   return(res);
  }
//+------------------------------------------------------------------+
//| Eine sehr einfache Funktion für die Margenberechnung für Forex-Symbole.      |
//| Es wird automatisch in der Basiswährung des Kontos berechnet und es funktioniert  |
//| nicht für komplizierte Arten der Kurse, die keine direkte Neuberechnung  |
//| in der Basiswährung des Handelskontos haben.                                |
//+------------------------------------------------------------------+
double MarginCalculate(string symbol, double volume)
  {
   string first    = StringSubstr(symbol,0,3); // Das erste Symbol, zum Beispiel  EUR
   string second   = StringSubstr(symbol,3,3); // Das zweite Symbol, zum Beispiel USD
   string currency = AccountCurrency();        // Die Anlagewährung, zum Beispiel USD
   double leverage = AccountLeverage();        // Der Hebel, zum Beispiel 100
// Die Kontraktgröße, zum Beispiel 100000
   double contract = MarketInfo(symbol, MODE_LOTSIZE);
   double bid      = MarketInfo(symbol, MODE_BID);      // цена бид
//---- Erlauben wir nur Standard-Forex-Symbole wie XXXYYY
   if(StringLen(symbol) != 6)
     {
      Print("MarginCalculate: '",symbol,"' must be standard forex symbol XXXYYY");
      return(0.0);
     }
//---- Überprüfung, ob es Daten gibt
   if(bid <= 0 || contract <= 0) 
     {
      Print("MarginCalculate: no market information for '",symbol,"'");
      return(0.0);
     }
//---- Überprüfen wir die einfachsten Varianten  - ohne Crosskurse
   if(first == currency)   
       return(contract*volume / leverage);           // USDxxx
   if(second == currency)  
       return(contract*bid*volume / leverage);       // xxxUSD
//---- Überprüfen wir normale Crosskurse, suchen die direkte Umwandlung durch die Anlagewährung  
   string base = currency + first;                   // USDxxx
   if(MarketInfo(base, MODE_BID) > 0) 
       return(contract / MarketInfo(base, MODE_BID)*volume / leverage);
//---- Versuchen wir es andersrum
   base = first + currency;                          // xxxUSD
   if(MarketInfo(base, MODE_BID) > 0) 
       return(contract*MarketInfo(base, MODE_BID)*volume / leverage);
//---- es gibt keine Möglichkeit, um es direkt neuzuberechnen
   Print("MarginCalculate: can not convert '",symbol,"'");
   return(0.0);
  }
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   for(int i = 1; i < 13; i++)
     {
      Print("Symbol=",GetSymbolString(i),"  spread=",MarketInfo(GetSymbolString(i),
      MODE_SPREAD),"  margin at 1 lot=",MarginCalculate(GetSymbolString(i),1),
      "  MODE_TICKVALUE=",MarketInfo(GetSymbolString(i),MODE_TICKVALUE),
      ", MODE_TICKSIZE=",MarketInfo(GetSymbolString(i),MODE_TICKSIZE),
      " MODE_MARGINREQUIRED=",MarketInfo(GetSymbolString(i),MODE_MARGINREQUIRED));
     } 
//----
   return(0);
  }
//+------------------------------------------------------------------+

* In den meisten Fällen ist die Basiswährung des Werkzeugs die erste Währung im Währungspaar, aber es können natürlich andere Servereinstellungen sein.

Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/ru/articles/1453

Beigefügte Dateien |
Die Übertragung eines Indikatorcodes in einen Expertcode. Die Struktur eines Indikators Die Übertragung eines Indikatorcodes in einen Expertcode. Die Struktur eines Indikators
Im Beitrag geht es um die Übertragung eines Indikatorcodes in den EA-Code und dem Schreiben der Experten, in denen keinen Aufruf zu benutzerdefinierten Indikatoren gibt. Und der gesamte Programmcode für die Berechnung der nötigen Indikatorwerte wird innerhalb des Expertes sein. Dieser Artikel stellt eine allgemeine Darstellung der Struktur des Indikators, die Emulation der Indikatorpuffer im EA und die Ersetzung der Funktion IndicatorCounted(). Der Artikel baut auf einen Leser, der die Programierungserfahrung mit dem MQL4 hat.
Die Realisierung der dreifarbigen Indikatoren und einige Möglichkeiten für eine maximale Vereinfachung des Indikatoren-Schreibens Die Realisierung der dreifarbigen Indikatoren und einige Möglichkeiten für eine maximale Vereinfachung des Indikatoren-Schreibens
In diesem Artikel betrachtet der Autor einige Methoden zur Erhöhung der Informativität für visuelles Trading. Der Autor analysiert die Realisierung der dreifarbigen Indikatoren, bei deren Aufbau die Daten aus anderen Zeitrahmen verwendet werden, und geht weiter auf die Bibliothek der Indikatoren ein, die bereits im Artikel "Effektive Mittelwertbildungsalgorithmen mit minimalen Lags und ihre Verwendung in Indikatoren" erwähnt wurde.
Automatisch generierte Dokumentation für den MQL5-Code Automatisch generierte Dokumentation für den MQL5-Code
Die meisten Personen, die Codes in Java anlegen, kennen bestimmt die automatisch generierte Dokumentation, die zusammen mit JavaDocs erstellt werden kann. Hierbei geht es um die Ergänzung des Codes durch Anmerkungen auf semi-strukturierte Weise, die dann in eine leicht zu navigierende Hilfe-Datei extrahiert werden können. In der C++ Welt gibt es ebenfalls einige automatische Dokumentations-Generatoren, von denen SandCastle und Doxygen von Microsoft die beiden Spitzenreiter sind. Dieser Beitrag beschreibt die Verwendung von Doxygen zur Erzeugung einer HTML Hilfe-Datei auf Basis strukturierter Anmerkungen im MQL5-Code. Der Versuch hat prima funktioniert und ich glaube, dass die Hilfs-Dokumentation, die Doxygen aus dem MQL5-Code liefert ganz erheblichen Mehrwert mit sich bringt.
Effektive Mittelwertbildungsalgorithmen mit minimalen Lags und ihre Verwendung in Indikatoren Effektive Mittelwertbildungsalgorithmen mit minimalen Lags und ihre Verwendung in Indikatoren
Der Autor beschreibt im Artikel die Entwicklungen der benutzerdefinierten Funktionen, um die Glättung besser als eine normale Mittelungsglättung durchzuführen: JJMASeries(), JurXSeries(), JLiteSeries(), ParMASeries(), LRMASeries(), T3Series(). Dieser Artikel ist der Anwendung dieser Funktionen in Indikatoren gewidmet. Im Artikel informiert der Autor auch über die Indikator-Bibliothek, die basierend auf den oben genannten Funktionen erstellt wurde.