Forex1+ Posted June 7, 2013 Report Posted June 7, 2013 (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 PipsRisiko% = 2%Lot = ? Wert eines Pips = Pipfaktor * Volumen / Kurs * 100000Volumen = 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 June 7, 2013 by Forex1+
lutzs Posted June 7, 2013 Report Posted June 7, 2013 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 1
conglom-o Posted June 7, 2013 Report Posted June 7, 2013 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);
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now