Calculer la quantité de lots à prendre, money-management

Présentation, Développement, Améliorations et Ressources pour les Stratégies de Trading Automatique.

Modérateur : Administrateurs

Message
Auteur
Avatar de l’utilisateur
Pierre8r
Membre assidu
Messages : 276
Inscription : 28 sept. 2013, 07:54

Calculer la quantité de lots à prendre, money-management

#1 Message par Pierre8r »

Bonjour,

Money-management
Je recherche un script ou du code MQL4 pour calculer la quantité de lots à prendre, si l’on ne souhaite pas perdre plus qu’une somme déterminée.
Si vous avez ça et que vous etes pret à partager, je suis intéressé.

Voir également :
http://www.videobourse.fr/forum-forex/v ... 387#p62386

neo-13
Professionnel certifié
Messages : 427
Inscription : 28 févr. 2015, 17:53

Re: Calculer la quantité de lots à prendre, money-management

#2 Message par neo-13 »

Slt,
ca ne réponds pas exactement à ta question, mais à partir de ce script tu pourras aisément arriver à ta demande.
Le script ci dessous, permet de calculer la quantité à acheter à partir d'une valeur de pip déterminée et ce pour chaque paire.
Ex: tu souhaites savoir combien acheter de GBP/AUD afin que la valeur du pip de cette paire soit de x euros.
Dans le code ci dessous:
Soit tu travailles comme moi, c'est à dire que depuis un seul EA, je trade plusieurs paires (si mon EA fonctionne sur 10 paires, je ne colle pas 1 EA/graphique, soit 10 graphiques) je crée un tableau de paires et ensuite l'EA fait une boucle, d'où la boucle de tab_valA. Sinon si tu travailles 1 EA/graph alors tu remplaces tab_valA par symbol() et tu enlèves la boucle for.
RiskByPip est la valeur du pip que tu souhaites.
A partir de là entre la valeur du pip et ta demande qui est "une somme", le rapport est, je pense, rapide à faire.

Code : Tout sélectionner

void CalculNbContract()
{ 
  double pipValue=0;
  
  for(int i=1;i<ArraySize(tab_valA);i++)
  {
    if(StringSubstr(tab_valA[i],0,3)=="EUR")
    {  
       if(StringSubstr(tab_valA[i],3,3)=="JPY")
         pipValue=NormalizeDouble(10/(iClose(tab_valA[i],0,1)/100),2);
       else
         pipValue=NormalizeDouble(10/iClose(tab_valA[i],0,1),2);                                                                                                      
       tab_contratA[i]=NormalizeDouble(riskByPip/pipValue,2);       
       
    }
    else                   
    {
       if(StringSubstr(tab_valA[i],3,3)=="JPY")
         pipValue=NormalizeDouble(10/(iClose("EUR"+StringSubstr(tab_valA[i],3,3),0,1)/100),2);
       else
         pipValue=NormalizeDouble(10/iClose("EUR"+StringSubstr(tab_valA[i],3,3),0,1),2);
      tab_contratA[i]=NormalizeDouble(riskByPip/pipValue,2);
    }
  }      
}

Répondre