Rejoindre la communauté
banner_forum
Devenez membre de la plus grande
communauté francophone sur le Forex
Partagez, échangez et apprenez en gagnant des crédits sur votre compte de trading

[QUIZ MQL] Quel est le meilleur moyen de calculer la taille d'une position ?

  • furynick

    Depuis que je programme en MQL je me heurte toujours à cette question : comment calculer la taille de lot qui respectera mon MM sachant que 2 cas sont à prendre en compte :
    - SL connu
    - pas de SL

    La problématique est la suivante :
    J'ai un compte de trading disposant de 1000 EUR en 300:1 et je souhaites ouvrir une position sur USDJPY en respectant un MM de 1,5%, comment dois-je calculer la taille de ma position ?

    Autant dire tout de suite que je n'ai pas la réponse et je suis curieux de savoir comment les codeurs du forum s'y prendraient.
    A vos claviers.
  • furynick

    Je me suis penché jusqu'à présent sur la piste suivante :
    Code
    double lotSize, risk = 1.5; string s = "USDJPY"; // ou Symbol() pour utiliser l'instrument courant double minLot = MarketInfo(s, MODE_MINLOT); Print("minLot = ", minLot); double marginCheck = AccountFreeMarginCheck(Symbol(), OP_BUY, minLot); Print("marginCheck = ", marginCheck); if (marginCheck > 0) { double usedMarginByMinLot = MathAbs(AccountFreeMargin() - marginCheck); Print("usedMarginByMinLot = ", usedMarginByMinLot); double allowedMargin = AccountFreeMargin() * risk / 100; Print("allowedMargin = ", allowedMargin); if (allowedMargin > usedMarginByMinLot) { lotSize = minLot * allowedMargin / usedMarginByMinLot; Print("lotSize = ", lotSize); } else { Print("Not enough money"); } } else { Print("Not enough money"); }

    Le problème de cette méthode est que je ne maitrise pas son comportement en cas d'ordre BUY passés après un ou plusieurs ordres SELL (les free margin check s'annulent donc on obtiens potentiellement des tailles de lot délirants).

    Si on connait le stop c'est plus simple, on peut utiliser MarketInfo avec MODE_TICKSIZE et MODE_TICKVALUE pour calculer la taille du lot en fonction de la différence entre le Ask/Bid et le stop (on calcule le nombre de points entre les deux et on se sert de l'AccountEquity pour faire la règle de 3).
  • furynick

    Tiens, je vais déterrer ce post pour y mettre la formule de calcul de la taille de lot en connaissant le stop :
    Code
    function computeLotSize(string symbol, double SLInPips) { if (SLInPips == 0) return(0); double pip2point = MarketInfo(symbol, MODE_POINT) * MathPow(10, MarketInfo(symbol, MODE_DIGITS) % 2); return((AccountEquity() * risk / 100) / (SLInPips * pip2point * MarketInfo(symbol, MODE_TICKVALUE))); }