Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Umstieg von 4 digit auf 5 digit Konto (http://www.expert-advisor.com/forum/showthread.php?t=4247)

Dick_Turpin 07.05.15 23:19

Umstieg von 4 digit auf 5 digit Konto
 
Bin jetzt bei meinem Broker auf ein ECN-Konto umgestiegen und damit auch von einem 4-digit auf ein 5-digit Konto.

Meines Wissens muss ich jetzt folgende Werte in meinem EA anpassen:

Slippage * 10
Spread * 10
MinimumProfit * 10
TakeProfit * 10
StopLoss * 10

Habe das heute mal versucht, aber irgend etwas hat z.B. mit dem neuen StopLoss nicht gestimmt, der war irgendwie zu groß. Also der SL soll 40 Pips betragen. Bisher im 4-digit-Konto habe ich den SL dann mit UsePoint multipliziert, das Ergebnis war dann 0.004. Im 5-digit-Konto bekomme ich jetzt 0.04 als SL, da ich die 40 noch zusätzlich mit 10 multipliziere.
Ist es richtig, dass die Variable UsePoint in meinem 4-digit-Konto 0.0001 und in meinem 5-digit-Konto auch genauso 0.0001 beträgt?

Anbei die Funktion für das Digit-Handling

Gruß
Dick

PHP-Code:

void BrokerDigitAdjust(string argSymbol)
  {
   
int Multiplier 1;                                       //bei 2 oder 4 Digits wird nichts umgerechnet und der Multiplier bleibt 1
   
double digits MarketInfo(argSymbol,MODE_DIGITS);        //Digits (Anzahl der Nachkommastellen) des aktuellen Symbols abfragen - Ergebnis ist z.B.: 4.0 bei 4 Nachkommastellen
   
if (digits==|| digits==5Multiplier 10;              //hat das Symbol 3 oder 5 Nachkommastellen (Digits) dann wird ein Multiplier von 10 verwendet
   
if (digits==6Multiplier 100;                          //hat das Symbol 6 Nachkommastellen (Digits) dann wird ein Multiplier von 100 verwendet
   
if (digits==7Multiplier 1000;                         //hat das Symbol 7 Nachkommastellen (Digits) dann wird ein Multiplier von 1000 verwendet
   
UsePoint Multiplier*MarketInfo(argSymbol,MODE_POINT);   //UsePoint erhält die richtigen Nachkommastellen und kann für spätere Berechnungen benutzt werden
   
   
Slippage Slippage Multiplier;
   
Max_Spread Max_Spread Multiplier;
   
   
MinProfit MinProfit Multiplier;
   
TakeProfit TakeProfit Multiplier;
   
Init_StopLoss Init_StopLoss Multiplier;
   

  } 


traderdoc 07.05.15 23:40

UsePoint = Multiplier*MarketInfo(argSymbol,MODE_POINT);

Hier muß das Multiplier raus, sonst doppelt gemobbelt oder die Pipwerte nicht mit Multiplier multiplizieren.

traderdoc

Dick_Turpin 08.05.15 07:23

Danke für die schnelle Antwort traderdoc.

Jetzt noch mal 5 Fragen:

1. Point-Wert ist nur Slippage?

2. Pip-Werte sind Spread, MinimumProfit,TakeProfit und StopLoss?

3. Im 4-digit-konto muss ich mit 0.0001 rechnen. Im 5-digit-konto muss ich auch mit 0.0001 rechnen?

4. die Pip-Werte müssen im 5-digit-konto nicht zusätzlich mit 10 multipliziert werden, wenn ich im 5-digit-konto diese Werte auch mit 0.0001 multipliziere. Lediglich der Point-Wert Slippage muss im 5-digit-konto mit 10 multipliziert werden.

5. Ist diese BrokerDigitAdjust Funktion jetzt für alle unterschiedlichen konten richtig:
PHP-Code:

void BrokerDigitAdjust(string argSymbol)
  {
   
int Multiplier 1;                                       //bei 2 oder 4 Digits wird nichts umgerechnet und der Multiplier bleibt 1
   
double digits MarketInfo(argSymbol,MODE_DIGITS);        //Digits (Anzahl der Nachkommastellen) des aktuellen Symbols abfragen - Ergebnis ist z.B.: 4.0 bei 4 Nachkommastellen
   
if (digits==|| digits==5Multiplier 10;              //hat das Symbol 3 oder 5 Nachkommastellen (Digits) dann wird ein Multiplier von 10 verwendet
   
if (digits==6Multiplier 100;                          //hat das Symbol 6 Nachkommastellen (Digits) dann wird ein Multiplier von 100 verwendet
   
if (digits==7Multiplier 1000;                         //hat das Symbol 7 Nachkommastellen (Digits) dann wird ein Multiplier von 1000 verwendet
   
UsePoint Multiplier*MarketInfo(argSymbol,MODE_POINT);   //UsePoint erhält die richtigen Nachkommastellen und kann für spätere Berechnungen benutzt werden   
   
   
Slippage Slippage Multiplier;
  } 

Gruß
Dick

traderdoc 08.05.15 08:56

Ich kann leider nicht den gesamten rechten Text sehen, vermute aber mal, was da steht.

Danke für die schnelle Antwort traderdoc.

Jetzt noch mal 5 Fragen:

1. Point-Wert ist nur Slippage?
Nein, nur die Slippage wird nur als Pipwert verarbeitet.

2. Pip-Werte sind Spread, MinimumProfit,TakeProfit und StopLoss?
Mit Pipwert meinte ich v.a. die Variablen, die in den Eigenschaften des EA eben als Pips angegeben werden.

3. Im 4-digit-konto muss ich mit 0.0001 rechnen. Im 5-digit-konto muss ich auch mit 0.0001 rechnen?
Ich löse das immer so, dass ich die Variablen mit Pipangaben mit dem Multiplier multipliziere, um später auch damit weiterrechnen zu können und die Points bleiben bei 0,00001.

4. die Pip-Werte müssen im 5-digit-konto nicht zusätzlich mit 10 multipliziert werden, wenn ich im 5-digit-konto diese Werte auch mit 0.0001 multipliziere. Lediglich der Point-Wert Slippage muss im 5-digit-konto mit 10 multipliziert werden.
S.o.

5. Ist diese BrokerDigitAdjust Funktion jetzt für alle unterschiedlichen konten richtig:
PHP-Code:
void BrokerDigitAdjust(string argSymbol)
{
int Multiplier = 1; //bei 2 oder 4 Digits wird nichts umgerechnet und der Multiplier bleibt 1
double digits = MarketInfo(argSymbol,MODE_DIGITS); //Digits (Anzahl der Nachkommastellen) des aktuellen Symbols abfragen - Ergebnis ist z.B.: 4.0 bei 4 Nachkommastellen
if (digits==3 || digits==5) Multiplier = 10; //hat das Symbol 3 oder 5 Nachkommastellen (Digits) dann wird ein Multiplier von 10 verwendet
if (digits==6) Multiplier = 100; //hat das Symbol 6 Nachkommastellen (Digits) dann wird ein Multiplier von 100 verwendet
if (digits==7) Multiplier = 1000; //hat das Symbol 7 Nachkommastellen (Digits) dann wird ein Multiplier von 1000 verwendet
UsePoint = Multiplier*MarketInfo(argSymbol,MODE_POINT); //UsePoint erhält die richtigen Nachkommastellen und kann für spätere Berechnungen benutzt werden

Slippage = Slippage * Multiplier;
}

S.o.

Gruß
Dick


Traderdoc

Dick_Turpin 08.05.15 19:43

Hallo Traderdoc,

also multiplizierst Du z.B. Deinen StopLoss mit dem Multiplier und rechnest aber dann mit den originalen Points (0.00001). Bei mir genau umgekehrt: StopLoss bleibt wie er ist und ich multipliziere den Point-Wert mit dem Multiplier, aber ist doch eigentlich egal wie herum man das macht, oder?

Den Multiplier habe ich jetzt als globale variable definiert, denn den brauch ich z.B. wenn ich den aktuellen Spread ausgeben möchte, dann dividiere ich den Spread noch durch den Multiplier.

Habe ich Dich richtig verstanden, dass die Slippage nur als Pip-Wert genutzt werden kann, d.h. beim OrderSend, egal ob 4-digit oder 5-digit, bleibt der Slippage-Wert gleich und muss nicht geändert werden? Wäre dann folgende BrokerDigitAdjust-Funktion richtig so:

PHP-Code:

void BrokerDigitAdjust(string argSymbol)
  {
   
Multiplier 1;                                           //bei 2 oder 4 Digits wird nichts umgerechnet und der Multiplier bleibt 1 -> weil hier: 1 Pip = 1 Point
   
double digits MarketInfo(argSymbol,MODE_DIGITS);        //Digits (Anzahl der Nachkommastellen) des aktuellen Symbols abfragen - Ergebnis ist z.B.: 4.0 bei 4 Nachkommastellen
   
if (digits==|| digits==5Multiplier 10;              //hat das Symbol 3 oder 5 Nachkommastellen (Digits) dann wird ein Multiplier von 10 verwendet -> weil hier: 1 Pip = 0,1 Point bzw. 10 Points = 1 Pip
   
if (digits==6Multiplier 100;                          //hat das Symbol 6 Nachkommastellen (Digits) dann wird ein Multiplier von 100 verwendet -> weil hier: 1 Pip = 0,01 Point bzw. 100 Points = 1 Pip
   
if (digits==7Multiplier 1000;                         //hat das Symbol 7 Nachkommastellen (Digits) dann wird ein Multiplier von 1000 verwendet -> weil hier: 1 Pip = 0,001 Point bzw. 1000 Points = 1 Pip
   
UsePoint Multiplier*MarketInfo(argSymbol,MODE_POINT);   //UsePoint erhält die richtigen Nachkommastellen und kann für spätere Berechnungen benutzt werden   
   
   
   
Max_Spread Max_Spread Multiplier;
  } 

Schon mal Danke für Deine Geduld, Traderdoc!

Gruß
Dick

Dick_Turpin 09.05.15 11:11

So, jetzt noch mal ein Versuch, das Ganze übersichtlich zusammenzufassen:

Slippage bei 4-Digit-Broker = Slippage
Slippage bei 5-Digit-Broker = Slippage * 10

Spread bei 4-Digit-Broker = Spread
Spread bei 5-Digit-Broker = Spread * 10

TP/SL bei 4-Digit-Broker = TP/SL
TP/SL bei 5-Digit-Broker = TP/SL (wenn UsePoint = Point * 10 = 0.0001)
TP/SL bei 5-Digit-Broker = TP/SL * 10 (wenn UsePoint = Point = 0.00001)

Ist das alles jetzt so richtig?

Gruß
Dick

traderdoc 09.05.15 11:40

Im Prinzip ja, nur ist doch entscheidend, wofür man die Variablen später benutzen will bzw. man kann auch jegliche Digit-Anpassungen in den jeweiligen Brechungsformeln erst anwenden.
Slippage wird nur als Pipwert benutzt, da ist der Fall klar.
Spread könnten man als Pipwert z.B. in Anzeigen nutzen. In Berechnungen wird dann aber meist der Dezimalwert benötigt, also die tatsächliche Differenz aus Ask und Bid.
Ähnlich ist es bei allen anderen Variablen, die als Pipwerte in den Eigenschaften des EAs stehen.

traderdoc

Dick_Turpin 09.05.15 12:33

Klar kommt es noch drauf an, was man wie berechnen will...

Also ich frage z.B. den Spread immer nur vor dem Kauf per MarketInfo ab und kaufe nur, wenn der Spread z.B. kleiner 3 ist. Beim 4-digit-Konto war alles o.k.. Jetzt beim 5-digit-Konto bekomme ich den 10fachen Wert von MarketInfo zurück, deshalb muss ich jetzt auf kleiner 30 prüfen statt kleiner 3.

Danke traderdoc

Gruß
Dick

traderdoc 09.05.15 12:56

Zitat:

Zitat von Dick_Turpin (Beitrag 29710)
Klar kommt es noch drauf an, was man wie berechnen will...

Also ich frage z.B. den Spread immer nur vor dem Kauf per MarketInfo ab und kaufe nur, wenn der Spread z.B. kleiner 3 ist. Beim 4-digit-Konto war alles o.k.. Jetzt beim 5-digit-Konto bekomme ich den 10fachen Wert von MarketInfo zurück, deshalb muss ich jetzt auf kleiner 30 prüfen statt kleiner 3.

Danke traderdoc

Gruß
Dick

Das mit dem Spread kann man auch auf zweierlei Art lösen.
Wenn man z.B. in den Variablen 3 Pips eingibt und man will im Programm prüfen lassen, ob der aktuelle Spread größer ist als 3, dann kann man das lösen:
1. if (aktueller Spread > Spreadvariable * Multiplier)
Oder
2. if ( aktueller Spread/Multiplier > Spreadvariable)

Wenn beim 5-DigitBroker der aktuelle! Spread dann als Dezimalwert weiterverarbeitet werden soll, muß mit 0,00001 (oder 0,001 z.B. bei allen YPY-Pärchen) multipliziert werden.

Im Endeffekt läuft bei den Währungspaaren!!! alles darauf hinaus, die Pipwerte auf die 4. (2.) nach dem Komma zu normieren.

traderdoc

Dick_Turpin 09.05.15 22:03

Nochmals Danke traderdoc. Jetzt hab ich endlich das Thema mit der Umstellung auf 5-digits hinter mir :)

Gruß
Dick


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:20 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum