# Calcul de position ... Encore ... ?

Bonjour à tous,

Je suis tout nouveau ici :)

Je me suis remis au dév il y a peu (ça faisait environ 12 ans que j'avais pas fait une ligne) - afin d'établir un script de trading. Tout va bien jusqu'au moment ou j'essaie d'établir ma position, je finis par reprendre un bout de code d'ici : https://www.mql5.com/en/forum/388742

```      // Calculate Max Lot Size based on Maximum Risk
double dblLotsRisk( double dbStopLoss, double dbRiskRatio )
{
double
dbLotsMinimum  = SymbolInfoDouble( _Symbol, SYMBOL_VOLUME_MIN       ),
dbLotsMaximum  = SymbolInfoDouble( _Symbol, SYMBOL_VOLUME_MAX       ),
dbLotsStep     = SymbolInfoDouble( _Symbol, SYMBOL_VOLUME_STEP      ),
dbTickSize     = SymbolInfoDouble( _Symbol, SYMBOL_TRADE_TICK_SIZE  ),
dbTickValue    = SymbolInfoDouble( _Symbol, SYMBOL_TRADE_TICK_VALUE ),
dbValueAccount = fmin( fmin(
AccountInfoDouble( ACCOUNT_EQUITY      )  ,
AccountInfoDouble( ACCOUNT_BALANCE     ) ),
AccountInfoDouble( ACCOUNT_MARGIN_FREE ) ),
dbValueRisk    = dbValueAccount * dbRiskRatio,
dbLossOrder    = dbStopLoss * dbTickValue / dbTickSize,
dbCalcLot      = fmin(  dbLotsMaximum,                  // Prevent too greater volume
fmax(  dbLotsMinimum,                  // Prevent too smaller volume
round( dbValueRisk / dbLossOrder       // Calculate stop risk
/ dbLotsStep ) * dbLotsStep ) );       // Align to step value

Print("dbLotsMinimum :                 ", dbLotsMinimum);
Print("dbLotsMaximum :                 ", dbLotsMaximum);
Print("dbLotsStep :                    ", dbLotsStep);
Print("dbTickSize :                    ", dbTickSize);
Print("dbTickValue :                   ", dbTickValue);
Print("dbValueAccount :                ", dbValueAccount);
Print("dbValueRisk :                   ", dbValueRisk);
Print("dbStopLoss :                    ", dbStopLoss);
Print("dbRiskRatio :                   ", dbRiskRatio);
Print("dbLossOrder :                   ", dbLossOrder);
Print("dbLotsStep :                    ", dbLotsStep);
Print("dbCalcLot :                     ", dbCalcLot);

return ( dbCalcLot );
};```

Il semble bien connu ...

Quand je l'exécute, j'obtiens toujours le lot minimal (dbLotsMinimum), quelque soit la taille de ma position - mon risque, etc ...

```2023.08.11 14:45:27.220 2023.08.07 00:00:00   dbLotsMinimum :                 0.01
2023.08.11 14:45:27.220 2023.08.07 00:00:00   dbLotsMaximum :                 10000.0
2023.08.11 14:45:27.220 2023.08.07 00:00:00   dbLotsStep :                    0.01
2023.08.11 14:45:27.220 2023.08.07 00:00:00   dbTickSize :                    0.00001
2023.08.11 14:45:27.220 2023.08.07 00:00:00   dbTickValue :                   0.9081909743980966
2023.08.11 14:45:27.220 2023.08.07 00:00:00   dbValueAccount :                10000.0
2023.08.11 14:45:27.220 2023.08.07 00:00:00   dbValueRisk :                   300.0
2023.08.11 14:45:27.220 2023.08.07 00:00:00   dbStopLoss :                    0.655
2023.08.11 14:45:27.220 2023.08.07 00:00:00   dbRiskRatio :                   0.03
2023.08.11 14:45:27.220 2023.08.07 00:00:00   dbLossOrder :                   59486.50882307533
2023.08.11 14:45:27.220 2023.08.07 00:00:00   dbLotsStep :                    0.01
2023.08.11 14:45:27.220 2023.08.07 00:00:00   dbCalcLot :                     0.01```

Je vous avoue que ça fait maintenant une semaine que je cherche, j'ai fini par partir dans tous les sens et écrire des codes qui n'ont rien à voir, et maintenant je suis un peu perdu, je ne trouve pas de solution. Un peu d'aide si possible ?

Merci d'avance ;)

How to calculate proper lot size ?
• 2022.02.11
• www.mql5.com
Hi, So i'm trying to build a scalping system that watch the market in 5 minutes timeframe and execute trades based on simple algorithm, until here...

`2023.08.11 14:45:27.220 2023.08.07 00:00:00   dbStopLoss :                    0.655`

La valeur de ce paramètre attendue est une distance, pas une valeur absolue. Par example si le prix d'entrée est 0.66, et votre stoploss 0.655, dbStopLoss serait 0.005

Merci beaucoup de ce retour, je vais tester ça très vite et vous tiens informé :)

Bonjour,

Encore une fois merci de votre aide, le calcul de positions fonctionne.

mcorgnet #:

Bonjour,

Encore une fois merci de votre aide, le calcul de positions fonctionne.

Bienvenu.