Besoin d'une formule de moneymanagement LOT size basée sur le SL et le risque du compte !

 

Bonjour, j'ai besoin d'un code/formule qui redimensionne la taille du lot en fonction du pourcentage de risque du compte calculé en incluant le STOPLOSS, et en tenant compte du fait que mon compte est en EUR.

Ce que j'ai est ceci :

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

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

Mais celui-ci ne prend pas en compte le stoploss.

J'ai donc trouvé celle-ci sur Google

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

Et celui-ci

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

Mais aucun d'entre eux ne fonctionne, s'il vous plaît aidez-moi à les corriger, ou donnez-moi un meilleur, merci !

 
  1. Solde du compte * pourcentage = RISK = (OrderOpenPrice - OrderStopLoss)*DIR * OrderLots * DeltaPerlot (Note OOP-OSL inclut le SPREAD)
  2. N'utilisez PAS TickValue par lui-même - DeltaPerlot
  3. Vous devez également vérifier FreeMargin pour éviter le stop out.
 
   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:, lisez le commentaire dans mon DeltaPerlot. N'utilisez PAS la valeur tick seule.
 
yousefh:

Désolé, ce n'est pas bon

WHRoeder:
  1. Solde du compte * pourcentage = RISK = (OrderOpenPrice - OrderStopLoss)*DIR * OrderLots * DeltaPerlot (Note OOP-OSL inclut le SPREAD)
  2. N'utilisez PAS TickValue par lui-même - DeltaPerlot
  3. Vous devez également vérifier FreeMargin pour éviter le stop out.

Ok, je vois votre point de vue, alors voici ma logique et mon calcul pour calculer le pourcentage de risque.


Ce qui dans le code MQL4 ressemble à ceci :

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 );


Un simple 1 liner, rien de compliqué, maintenant s'il vous plaît aidez-moi à insérer ce truc DELTA dont vous avez parlé, je sais que la formule n'est pas complète alors s'il vous plaît aidez-moi.Et s'il vous plaît notez que mon compte est en EURO donc dans la plupart des cas c'est la devise de base.

 
Aidez-moi s'il vous plaît rapidement, je voudrais terminer ce projet avant Noël :)
 
Proximus: Aidez-moi s'il vous plaît rapidement, je voudrais terminer ce projet avant Noël :)
  1. Manque de planification
  2. Maintenant, aidez-moi à insérer ce truc DELTA.
    Avez-vous pris la peine de cliquer sur les liens fournis ?
 
WHRoeder:

  1. Maintenant, s'il te plaît, aide-moi à insérer ce truc DELTA.
    Avez-vous pris la peine de cliquer sur les liens fournis ?

Oui, je l'ai fait, mais je ne comprends pas comment tu l'as inséré dans mon équation, tu as dit que tu en avais besoin :

  MarketInfo(pair, MODE_TICKVALUE)
           / MarketInfo(pair, MODE_TICKSIZE) 
Mais je ne comprends pas comment cela aide mon équation, parce que diviser ces deux nombres donnera un grand nombre au lieu de la taille du tic-tac...
 
Proximus:

Oui, mais je ne comprends pas comment vous avez intégré ça dans mon équation, vous avez dit que vous aviez besoin de ça :

Mais je ne comprends pas comment cela aide mon équation, parce que diviser ces deux nombres donnera un grand nombre au lieu de la taille du tic-tac...

Essayez ce lien : https://www.mql5.com/en/forum/148224.

Peut-être qu'en regardant sous un angle différent, ça pourrait aider.

 
ubzen:

Essayez ce lien : https://www.mql5.com/en/forum/148224.

Peut-être que le fait de regarder sous un angle différent pourrait vous aider.


WTF les gars, ça ne devrait pas être TICKVALUE * TICKSIZE au lieu de TICKVALUE /TICKSIZE? Je pense qu'il y a une grosse erreur.





J'ai juste fait un indicateur rapide qui montre des valeurs séparées, je suppose que TICKVALUE * TICKSIZE est le bon...


Et notez que le compte de démonstration est en EUR donc c'est la devise de base, alors que j'ai fait le même test avec un compte USD et là le POINT était équivalent à TICKVALUE * TICKSIZE car il mesure la valeur de la devise de cotation.

Dossiers :
 

Si j'ai bien compris la question, cela fera le travail pour vous.

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 ; }
Raison: