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: 43749
Benutzer: 7.221
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: Thomas75
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 2 Stunden
- Thomas75
vor 15 Stunden
- JosephTK
vor 2 Tagen
- Hopfen&Mal...
vor 3 Tagen
- frankmicha...
vor einer Woche
- DFeck

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

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 22.08.18
Neues Mitglied
 
Registriert seit: Dec 2017
Beiträge: 3
sazaron befindet sich auf einem aufstrebenden Ast
Standard Forex max Lot für alle Paare

Hi leute,
ich will die maximale lotzahl für alle forex paare haben. leider finde ich nichts dazu in google... das problem ist, dass meine kontowährung nicht mit der währung aller forexpaare übereinstimmt bzw. es mit dann einen "not enought money error" raushaut oder halt zu wenig lots einsetzt. Z.B. bei NZD/JP meine konotwährung ist EUR. Gibts da irgendeine lösung?

hier ist der code den ich atm nutze:

int Percent =100; // % of free margin
double Free =AccountFreeMargin(); // Free margin
double One_Lot=MarketInfo(NULL,MODE_MARGINREQUIRED);// 1 lot price
double Step =MarketInfo(NULL,MODE_LOTSTEP); // Size step changed

double Lots_New=MathFloor(Free*Percent/100/One_Lot/Step)*Step;


und es liegt nicht an der min lot bzw. max lot begrenzung.

hoffentlich kann mir einer hier weiter helfen, danke schon mal
  #2 (permalink)  
Alt 22.08.18
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Soviel ich weiß, haben einige WP andere Margin-Level als Andere WP.

Schätze mal, Du willst in % festlegen, wie viel Lots er kaufen soll. Dann musst Du das glaub ich mit MinLot() berechnen. Bzw. MinLot() in das Ganze mit einbeziehen.

Ach ja, mit jeder offenen Order verändert sich natürlich auch die FreeMargin()...

Ich hatte das irgendwann mal so versucht. Aber irgendwas war glaub ich nicht richtig.
Code:
extern bool Percent_of_Balance=true;//
extern int Units_of_1_Lot=100000;
extern double Auto_Lotsize_Perc=1.0;//
Code:
double Min_L=MarketInfo(Symbol(),MODE_MINLOT);//Mindest_Lot_Einsatz
double Max_L=MarketInfo(Symbol(),MODE_MAXLOT);//Maximaler_Lot_Einsatz

//---------------------------------------------------------------------------------------------

  if(Percent_of_Balance==true){
  
    double M_REQ=MarketInfo(Symbol(),MODE_MARGINREQUIRED);//nötige Margin für 1 Lot (100.000 Units)
    double A_BAL=AccountBalance();//momentaner Kontostand
  
//  Einheiten von 1_Lot geteilt durch Mindest_Lot, um später auszurechnen, wie viel Margin für kleinst mögliches Lot nötig ist:
    double U1L__MinL=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 MREQ__MinL=M_REQ/U1L__MinL;

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

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

    Lots=A_BAL__MinL__HP*Auto_Lotsize_Perc;

}

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

if(Lots<Min_L)Lots=Min_L;
if(Lots>Max_L)Lots=Max_L;
  #3 (permalink)  
Alt 22.08.18
Neues Mitglied
 
Registriert seit: Dec 2017
Beiträge: 3
sazaron befindet sich auf einem aufstrebenden Ast
Standard

danke für die schnelle antwort! Account freemargin benutze ich, weils auch bei 50% freien margin noch ne lot zahl berechnen kann und das mit MODE_MINLOT und MODE_MAXLOT ist nicht das prob.
ich habe den titel etwas schlecht gewählt ich will 100% meines kontos in lots umrechnen egal welche währung. das problem ist, dass die verschiedenen forexpaare verschiedene währungswerte ausgeben d.h. der endwert ist nicht immer EUR sondern was ganz anderes. ich glaube nicht, dass mir hier einer weiter helfen kann ich benutze jetzt eine mischung aus zwei berechnung. wenn die 1. nicht funktioniert dann nehme ich halt die 2.. so bekomme ich keine 100% raus doch besser als nichts. mich fehlt die zeit beim scalpen jedes mal an der lot schraube zu drehen und bei 0.8 trades am tag ist es schon frustrierend, wenn man nen trade verpasst, weil die positions größe nicht passt. ich trade auf elf forexpaare, da ist es mir auch zu viel arbeit, es täglich manuel abzustimmen. Theoretisch könnte ich auch einfach die minlots nehmen doch dann würde ich zeitverlieren , die übersicht verlieren, langsamer positionen schließen und meine statistiken versauen weil ich anstatt 0.8 trades dann z.B. 8-20 trades habe z.B..

hier ist noch die andere berechnung. ka was die genau macht doch es haut mir eine tradebare lotzahl raus, wenn die andere mir nen not enought money error gibt...

double CalculateVolume()
{
double lot_min =MarketInfo(Symbol(),MODE_MINLOT);
double lot_max =MarketInfo(Symbol(),MODE_MAXLOT);
double lot_step=MarketInfo(Symbol(),MODE_LOTSTEP);
double contract=MarketInfo(Symbol(),MODE_LOTSIZE);
Print("contract "+contract);
double vol;
//--- check data
if(lot_min<0 || lot_max<=0.0 || lot_step<=0.0)
{
Print("CalculateVolume: invalid MarketInfo() results [",lot_min,",",lot_max,",",lot_step,"]");
return(0);
}
if(AccountLeverage()<=0)
{
Print("CalculateVolume: invalid AccountLeverage() [",AccountLeverage(),"]");
return(0);
}
//--- basic formula
vol=NormalizeDouble(AccountFreeMargin()*AccountLev erage()/contract,2);
//--- additional calculation
// ...
//--- check min, max and step
vol=NormalizeDouble(vol/lot_step,0)*lot_step;
if(vol<lot_min) vol=lot_min;
if(vol>lot_max) vol=lot_max;
//---
// Print("vol "+vol);
return(vol);
}

Geändert von sazaron (22.08.18 um 13:56 Uhr)
  #4 (permalink)  
Alt 22.08.18
Mitglied
 
Registriert seit: Nov 2015
Beiträge: 136
Adlerauge befindet sich auf einem aufstrebenden Ast
Standard

moin,
du must den Tickvalue in Deine Berechnung mit einbeziehen. Dann kannst Du Lotgroessen berechnen, die deinem eingestellten Prozentsatz der Margin entsprechen.

MarketInfo (Symbol (), MODE_TICKVALUE));

MINLOT und MAXLOT haben damit nichts zu tun.

Geändert von Adlerauge (22.08.18 um 15:25 Uhr)
  #5 (permalink)  
Alt 23.08.18
Premium Mitglied
 
Registriert seit: Apr 2015
Beiträge: 422
Raul0 befindet sich auf einem aufstrebenden Ast
Standard

Du möchtest eine Money Management Berechnung durchführen.

Wieviel Lots Du bei 100% Risiko kaufen kannst, ist das richtig? Dann sollte auch Dein verwendetes StopLoss mit einbezogen werden.
__________________

Easy Trading Assistant
  #6 (permalink)  
Alt 23.08.18
Neues Mitglied
 
Registriert seit: Dec 2017
Beiträge: 3
sazaron befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Adlerauge
moin,
du must den Tickvalue in Deine Berechnung mit einbeziehen. Dann kannst Du Lotgroessen berechnen, die deinem eingestellten Prozentsatz der Margin entsprechen.

MarketInfo (Symbol (), MODE_TICKVALUE));

MINLOT und MAXLOT haben damit nichts zu tun.
ich finde nur sachen, die da einen festen stoplosswert mit einbeziehen...
ich habe auch diverse formeln damit getestet doch es kam nicht raus was passend wäre.

Zitat:
Raul0
Du möchtest eine Money Management Berechnung durchführen.

Wieviel Lots Du bei 100% Risiko kaufen kannst, ist das richtig? Dann sollte auch Dein verwendetes StopLoss mit einbezogen werden.
Ja richtig! stoploss berechne ich mit mit der lotzahl in %.
hier ist der code:

double buttontp = 0.015 ////1.5%
double buttonsl = 0.025 ////2.5%



double PointValue()
{
int Percent =100; // % of free margin
double Free =AccountFreeMargin(); // Free margin
double One_Lot=MarketInfo(NULL,MODE_MARGINREQUIRED);// 1 lot price
double Step =MarketInfo(NULL,MODE_LOTSTEP); // Size step changed

double Lots_New=MathFloor(Free*Percent/100/One_Lot/Step)*Step;
double PipValue=(((MarketInfo(Symbol(),MODE_TICKVALUE)*po int)/MarketInfo(Symbol(),MODE_TICKSIZE))*Lots_New);
double pointValue =PipValue/10;
return(pointValue);
}




tp=Ask+(((AccountFreeMargin()*(buttontp))/PointValue()) *Point);
sl=Ask-(((AccountFreeMargin()*(buttonsl))/PointValue()) *Point);


alternativ habe ich auch ein algorythmus, dass mir die positionen bei z.b. 2% gewinn oder verlust schließt, doch finde ich zu unsicher. lags usw. könnten da einen echt arm machen.


ich habe mir gerade eine neue brechnung ausgedacht, doch die rechnet auch mit der falschen währung, glaube ich... ich erhalte den selben wert wie bei Lots_New...

double lot_min =MarketInfo(Symbol(),MODE_MINLOT);
double minlotgeld=(AccountFreeMargin()-(AccountFreeMarginCheck(Symbol(),OP_BUY,lot_min))) ;
double minlotlot=(Free/minlotgeld*lot_min);
Print("MINLOTLOT "+minlotlot);

Geändert von sazaron (23.08.18 um 12:21 Uhr)
Thema geschlossen

Lesezeichen

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 13:55 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.
-----------------------------------------------------------------------------------------------------------------------------