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)
-   -   automatische LotSize Berechnung (Fehlerhaft?) (http://www.expert-advisor.com/forum/showthread.php?t=6967)

MarkusWilhelm89 08.04.21 08:26

automatische LotSize Berechnung (Fehlerhaft?)
 
Hi,
ich möchte in meinem EA klassisch die LotSize automatisch anhand des StopLoss errechnen lassen.
Für Forex klappt die Berechnung auch aber für CFD nicht.
Wenn ich es zB beim DAX30 laufen lasse, ist die LotSize um den Faktor 10 zu hoch (--> zB statt 0.20 macht er 2.00)
Kann mir jemand sagen, wo mein Fehler liegt?:confused:

Code:

Lots = NormalizeDouble((AccountBalance()/100*Risk)/(StopLoss*MarketInfo(Symbol(),MODE_TICKVALUE)),NK_Stelle);

traderdoc 08.04.21 09:13

Das liegt an der Angabe des Stoploss.
Pips sind nicht Punkte.
Pips sind nicht Pipetten usw.
D.h. die Werte des Stoploss müssen exakt zum Tickvalue passen.

traderdoc

MarkusWilhelm89 08.04.21 10:43

Hi,
ja das stimmt, das habe ich wie folgt bisher gelöst... (siehe Code)
Dadurch kann der EA die Eingabe von int StopLoss in weiteren Berechnungen nutzen... weil wenn zB der DAX von 15.000 --> 15.100 steigt, sind es für mich 100 Pkt... wenn ich im MetaTrader mit der Maus dann aber die Linie ziehe zeigt er 1.000 Pkt an

Als Lösung für mein Probleme sollte ich dann also auch für die LotSize Berechnung nochmal soetwas in dieser Art mit einbauen, oder?

Code:

double Points = _Point;
if(MarketInfo(Symbol(),MODE_PROFITCALCMODE)==0) Points = _Point;  //Forex

if(MarketInfo(Symbol(),MODE_PROFITCALCMODE)==1 && MarketInfo(Symbol(),MODE_DIGITS)==1) Points  = _Point*10;  //CFD mit 1 NK Stelle

if(MarketInfo(Symbol(),MODE_PROFITCALCMODE)==1 && MarketInfo(Symbol(),MODE_DIGITS)==2) Points = _Point*100;    //CFD mit 2 NK Stellen


MarkusWilhelm89 08.04.21 12:42

Ich habe jetzt mal einfach einen Faktor ergänzt, glaubst du dass ist sinnvoll/korrekt oder der falsche Berechnungsweg?

Code:

Lots_Faktor = MarketInfo(Symbol(),MODE_LOTSIZE)*MarketInfo(Symbol(),MODE_TICKSIZE);
so dass es dann heißt:
Code:

Lots = NormalizeDouble( ((AccountBalance()/100*Risk)/(StopLoss*MarketInfo(Symbol(),MODE_TICKVALUE))*Lots_Faktor),NK_Stelle);
oder alternativ

Lots = NormalizeDouble( (AccountBalance()/100*Risk)/((StopLoss/Lots_Faktor)*MarketInfo(Symbol(),MODE_TICKVALUE)), NK_Stelle);


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:23 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