Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4973
Beiträge: 44245
Benutzer: 7.220
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: JosephTK
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 4 Stunden
- JosephTK
vor 2 Tagen
- Hopfen&Mal...
vor 3 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 269
Gesamt: 269
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 07.05.15
Mitglied
 
Registriert seit: Aug 2014
Ort: Hessen
Beiträge: 101
Dick_Turpin befindet sich auf einem aufstrebenden Ast
Standard 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;
   

  } 

Geändert von Dick_Turpin (07.05.15 um 23:32 Uhr)
  #2 (permalink)  
Alt 07.05.15
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

UsePoint = Multiplier*MarketInfo(argSymbol,MODE_POINT);

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

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #3 (permalink)  
Alt 08.05.15
Mitglied
 
Registriert seit: Aug 2014
Ort: Hessen
Beiträge: 101
Dick_Turpin befindet sich auf einem aufstrebenden Ast
Standard

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
  #4 (permalink)  
Alt 08.05.15
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

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
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #5 (permalink)  
Alt 08.05.15
Mitglied
 
Registriert seit: Aug 2014
Ort: Hessen
Beiträge: 101
Dick_Turpin befindet sich auf einem aufstrebenden Ast
Standard

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
  #6 (permalink)  
Alt 09.05.15
Mitglied
 
Registriert seit: Aug 2014
Ort: Hessen
Beiträge: 101
Dick_Turpin befindet sich auf einem aufstrebenden Ast
Standard

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
  #7 (permalink)  
Alt 09.05.15
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

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
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #8 (permalink)  
Alt 09.05.15
Mitglied
 
Registriert seit: Aug 2014
Ort: Hessen
Beiträge: 101
Dick_Turpin befindet sich auf einem aufstrebenden Ast
Standard

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
  #9 (permalink)  
Alt 09.05.15
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Dick_Turpin Beitrag anzeigen
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
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #10 (permalink)  
Alt 09.05.15
Mitglied
 
Registriert seit: Aug 2014
Ort: Hessen
Beiträge: 101
Dick_Turpin befindet sich auf einem aufstrebenden Ast
Standard

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

Gruß
Dick
Thema geschlossen

Lesezeichen

Stichworte
4 digit, 5 digit, broker, mql4, programmierung, programmierung metatrader, umstellung

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




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





Suchmaschine - Reisen - Wavesnode - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------