Benötige Moneymanagement LOT size Formel basierend auf SL und Account Risk!

 

Hallo, ich brauche bitte einen Code / Formel, die die Losgröße basierend auf Konto Risiko % berechnet, indem Sie die STOPLOSS, und unter Berücksichtigung, dass mein Konto in EUR ist.

Was ich habe, ist dies:

extern double RISK=1;  //1% RISK
double LOT;

LOT = NormalizeDouble(AccountEquity()*RISK/10000,2);

Aber diese berücksichtigt nicht den Stoploss

Also habe ich bei der Google-Suche diese Formel gefunden

lot=NormalizeDouble(AccountBalance( )*MaximumRisk/StopLoss/(MarketInfo(Symbol(), MODE_TICKVALUE)),2);

Und diese hier

lot = Risk * AccountEquity() / MarketInfo(Symbol(), MODE_TICKVALUE) / Stop;

Aber nichts davon funktioniert, bitte helfen Sie mir, sie zu reparieren, oder geben Sie mir eine bessere, danke!

 
  1. Kontostand * Prozent = RISIKO = (OrderOpenPrice - OrderStopLoss)*DIR * OrderLots * DeltaPerlot (Anmerkung: OOP-OSL beinhaltet den SPREAD)
  2. Verwenden Sie NICHT TickValue selbst - DeltaPerlot
  3. Sie müssen auch FreeMargin überprüfen, um StopOut zu vermeiden
 
   double Spread=MarketInfo(Symbol(),MODE_SPREAD)/Q;
   double Risk=(RiskPercent*AccountEquity())/100;//this means if your balance 1000$ & RiskPercent=10% >> you going to risk 100$
   double lot=Risk/((StopLoss+Spread)*MarketInfo(Symbol(),MODE_TICKVALUE)*Q);//Make Sure to Define Your StopLoss & Q=10 in 5 digits or Q=1 in 4 Digits 
 
yousefh:, lesen Sie den Kommentar in meinem DeltaPerlot. Verwenden Sie NICHT Tick-Wert selbst.
 
yousefh:

Sorry, das ist nicht gut

WHRoeder:
  1. Kontostand * Prozent = RISIKO = (OrderOpenPrice - OrderStopLoss)*DIR * OrderLots * DeltaPerlot (Anmerkung: OOP-OSL beinhaltet den SPREAD)
  2. Verwenden Sie NICHT TickValue selbst - DeltaPerlot
  3. Sie müssen auch FreeMargin überprüfen, um Stop Out zu vermeiden

Ok, ich sehe Ihren Punkt, also hier ist meine Logik und Berechnung, wie ich das RISK % berechne


Im MQL4-Code sieht das so aus:

extern double MYSTOPLOSS = 50;  // CUSTOM SL SIZE IN PIPS AFTER THE STOPLEVEL
extern double  RISK =2; // 2% ACCOUNT RISK

double LOT =(AccountEquity()*RISK)/(100*(MarketInfo(Symbol(),MODE_STOPLEVEL)+MYSTOPLOSS)* Point *100000 );


Ein einfacher 1-Liner, nichts kompliziertes, jetzt bitte helfen Sie mir, dass DELTA Zeug einfügen, die Sie gesprochen haben, ich weiß, die Formel ist nicht vollständig, so bitte helfen Sie mir.und bitte beachten Sie, dass mein Konto in EURO ist so in den meisten Fällen seine Basiswährung.

 
Helfen Sie mir bitte schnell, ich möchte dieses Projekt vor Weihnachten fertigstellen :)
 
Proximus: Helfen Sie mir bitte schnell, ich möchte dieses Projekt vor Weihnachten beenden :)
  1. Mangelnde Planung
  2. Jetzt helfen Sie mir bitte, das DELTA-Zeug einzufügen
    Hast du dir die Mühe gemacht, auf die angegebenen Links zu klicken?
 
WHRoeder:

  1. Und jetzt hilf mir bitte, das DELTA-Zeug einzufügen.
    Haben Sie sich die Mühe gemacht, auf die angegebenen Links zu klicken?

Ja, das habe ich, aber ich verstehe nicht, wie Sie das in meine Gleichung einfügen, Sie sagten, Sie brauchen das:

  MarketInfo(pair, MODE_TICKVALUE)
           / MarketInfo(pair, MODE_TICKSIZE) 
Aber ich verstehe nicht, wie das meiner Gleichung hilft, denn wenn man diese beiden Zahlen teilt, erhält man eine große Zahl anstelle der Zeckengröße...
 
Proximus:

Ja, das habe ich, aber ich verstehe nicht, wie Sie das in meine Gleichung einbauen, Sie sagten, Sie brauchen das:

Aber ich verstehe nicht, wie das meiner Gleichung hilft, denn wenn man diese beiden Zahlen teilt, erhält man eine große Zahl anstelle der Zeckengröße...

Versuchen Sie diesen Link: https://www.mql5.com/en/forum/148224.

Vielleicht hilft es, die Sache aus einem anderen Blickwinkel zu betrachten.

 
ubzen:

Versuchen Sie diesen Link: https://www.mql5.com/en/forum/148224.

Vielleicht hilft es, das Ganze aus einem anderen Blickwinkel zu betrachten.


WTF Jungs, sollte das nicht TICKVALUE * TICKSIZE statt TICKVALUE /TICKSIZE sein? Ich glaube, da liegt ein großer Fehler vor.





Ich habe gerade einen schnellen Indikator erstellt, der separate Werte anzeigt. Ich denke, TICKVALUE * TICKSIZE ist der richtige...


Und beachten Sie die Demo-Konto ist in EUR, so dass die Basiswährung ist, während ich den gleichen Test mit einem USD-Konto und dort der PUNKT war gleichbedeutend mit TICKVALUE * TICKSIZE, weil es das Zitat Währungswert misst.

Dateien:
 

Wenn ich die Frage richtig verstanden habe, wird dies die Aufgabe für Sie erledigen.

for( i=0; i<=ot; i++ ) for( z=0; z<=10; z++ )
      {
         if( long_orders_array_ATF[i][z] > 0 )
         for (zz=0; zz<=10; zz++)
         { 
            OrderSelect(zz,SELECT_BY_POS,MODE_TRADES);
            if (OrderTicket()==long_orders_array_ATF[i][z]) zz=ot+2; 
            if (ot+2<=zz)  
            long_potencial_loss = (OrderLots() * (OrderOpenPrice() - OrderStopLoss()))*100000;
            long_sum_potencial_loss = long_sum_potencial_loss + long_potencial_loss;
         }
      }
...

lot_size = ((((free-long_sum_potencial_loss) * percent_depo)/100.0)/pips)/100000 ; }