Jump to content
Tom Next - Daytrading Community

Recommended Posts

Posted (edited)

Kurze Frage,

 

ich will für ein EA das Volumen/Lotgröße berechnen, sodass dieses bei SL genau den gewünschen Prozentsatz der Kontogröße riskiert.

 

Also Beispiel:

 

Kontogröße 8888€

SL = 77 Pips

Risiko% = 2%

Lot = ?

 

Wert eines Pips = Pipfaktor * Volumen / Kurs * 100000

Volumen = Pipveränderung(SL) / Kurs / Wert eines Pips

 

Die Formeln hab ich mir bisschen aus den Fingern gesaugt da liegt bestimmt auch der Fehler. Das Problem ist das die 2. Formel von der 1. abhängt aber in der 1. Formel das Volumen gefordert ist obwohl das anschließend in der 2. erst errechnet werden soll.!? Desweiteren frag ich mich bei der 100000, da nur für Standardlot gültig, was wenn Mini oder Mikro Lot, gibts da nicht eine automatische Erkennung durch der EA? Am besten alles automatisch auslesen ausser natürlich SL und Risiko%

 

Gruß

Edited by Forex1+
Posted

Hallo,

 

hier macht das diese Funktion, weiss gar nicht mehr wo ich die herhabe:

 

double calcLotSize(string symbol,double stopdiff,double riskAbs) {

//producing a valid lotsize

double lot_step= MarketInfo(symbol,MODE_LOTSTEP);

double minlot= MarketInfo(symbol,MODE_MINLOT);

double maxlot= MarketInfo(symbol,MODE_MAXLOT);

if (stopdiff > 0){

double lots=(riskAbs*MarketInfo(symbol,MODE_TICKSIZE))/(stopdiff*MarketInfo(symbol,MODE_TICKVALUE));

} else lots = minlot;

lots= MathFloor(lots/lot_step)*lot_step;

lots= MathMin(maxlot,lots); // no empty orders, not trading too much ;)

//Print ("Lots: ",lots);

if(lots > maxlots) lots = maxlots;

if(lots

return(lots);

}

 

Nicht ganz sauber programmiert, 'maxlots' fast am Ende ist extern definiert und kam mal später dazu nachdem der Script drumrum mit zu engem Stop mal freidrehte.

 

Als Anregung

 

Lutz

  • Upvote 1
Posted

Hallo,

[...]

//Print ("Lots: ",lots);

if(lots > maxlots) lots = maxlots;

if(lots

return(lots);

}

 

Nicht ganz sauber programmiert, 'maxlots' fast am Ende ist extern definiert und kam mal später dazu nachdem der Script drumrum mit zu engem Stop mal freidrehte.

 

Als Anregung

 

Lutz

 

Kann man auch so machen dann:

lots = MathMax(MathMin(lots, MarketInfo(Symbol(),MODE_MAXLOT)),minlot);

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...