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)
-   -   Lotsize über Margin oder Kontostand berechnen (http://www.expert-advisor.com/forum/showthread.php?t=6152)

MA-EA 19.07.18 17:16

Lotsize über Margin oder Kontostand berechnen
 
Hallo.

Ich würde gerne den Lot-Einsatz automatisch anhand der freien Margin oder besser übers Gesamtkapital des Kontos berechnen lassen. Denn wenn er schon viele Orders geöffnet hat, schrumpft ja auch die verfügbare Margin und ich schätze mal, dass dann jede Order ne andere Lotsize hat...

z.B.

Lot = double x.x % der Free Margin

oder

Lot = double x.x % des Kontostands

oder so in der Art.

Dachte mir, man checkt erst mal, wie viel von der Konto-Währung er für ein Lot hinter legen muss. Oder vielleicht die nötige Margin in Punkten ausgeben. Oder einfach durch den Hebel teilen?

Weiß ich nicht so richtig. :confused:

MA-EA 21.07.18 17:13

Hallo.


Habs mal so versucht. Davon abgesehn, dass ich eigentlich selber nicht mehr durch sehe, müsste das doch eigentlich funktionieren. :rolleyes:

extern string ALSZ="Auto_Lotsize";
extern bool Percent_of_Balance=true;
extern bool Percent_of_Free_Margin=false;

extern string BT1="if both = true";
extern string BT2="Lotsize =";
extern string BT3="Percent_of_Balance";

extern double Auto_Lotsize_Perc=0.72;
extern int Units_of_1_Lot=100000;


Lots=MathMax(MathMin(Lots,MarketInfo(Symbol(),MODE _MAXLOT)),MarketInfo(Symbol(),MODE_MINLOT));

double M_REQ=MarketInfo(Symbol(),MODE_MARGINREQUIRED);//nötige Margin für 1 Lot (100.000)
double A_FM=AccountFreeMargin();//verfügbare Margin
double A_BAL=AccountBalance();//momentaner Kontostand

double Min_L=MarketInfo(Symbol(),MODE_MINLOT);//Mindest_Lot_Einsatz
double Max_L=MarketInfo(Symbol(),MODE_MAXLOT);//Maximaler_Lot_Einsatz

//Einheiten von 1_Lot geteilt durch Mindest_Lot, um später auszurechnen, wie viel Margin für kleinst möglichstes Lot nötig ist.
double U1L_Min_L=NormalizeDouble(Units_of_1_Lot/Min_L*_Point,_Digits);

//Margin_für_1_Lot geteilt durch Ergebnis, um raus zu finden, wie viel Margin für Mindest_Lot benötigt wird.
double M_REQ_Min_L=M_REQ/U1L_Min_L;

//////////////////////////////////////////////////////////////////////////////////////////////////////////////

if(Percent_of_Free_Margin==true&&Percent_of_Balanc e==false){

// Free_Margin / Margin_für_Min_Lot, um rauszufinden, wie viel Min_Lot mit der Free_Margin möglich sind.
double A_FM_M_REQ_Min_L=A_FM/M_REQ_Min_L;

// P_ML = "Possible_Min_Lots" geteilt durch "HP" (Hundred_Percent)
double A_FM_P_ML_HP=A_FM_M_REQ_Min_L/100.0;

Lots=A_FM_P_ML_HP*Auto_Lotsize_Perc;

}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////

if((Percent_of_Balance==true)||(Percent_of_Balance ==true&&Percent_of_Free_Margin==true)){

// Kontostand geteilt durch für Min_Lot nötige Margin, um rauszufinden, wie viel Min_Lot mit Kontostand möglich sind.
double A_BAL_M_REQ_Min_L=A_BAL/M_REQ_Min_L;

// Mit Kontostand_mögliche_Mindest_Lots geteilt durch "HP" (hundred Percent)
double A_BAL_P_ML_HP=A_BAL_M_REQ_Min_L/100.0;

Lots=A_BAL_P_ML_HP*Auto_Lotsize_Perc;

}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////

if(Lots<Min_L)Lots=Min_L;
if(Lots>Max_L)Lots=Max_L;


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:03 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