Calcul automatique taille position
Forums › ProRealTime forum Français › Support ProOrder › Calcul automatique taille position
- This topic has 9 replies, 3 voices, and was last updated 3 weeks ago by ArturAgababyan13.
-
-
10/21/2024 at 5:18 PM #239302
Bonjour à toutes et à tous,
J’aurais besoin de votre aide pour résoudre un problème lié au calcul de la taille de la position.
Effectivement, j’aimerais que dans mon backtest le calcul de taille se fasse automatiquement en fonction du montant du portefeuille, du % de risque par trade, du niveau d’entrée et du niveau de stop de protection.
Pour illustrer ça voici un exemple :
- Montant du portefeuille 1000€
- % risque par trade : 2% (perte max 20€ par trade)
- Stop de protection : le plus bas sur x période – 1*atr
- Stop loss en point : abs(niveau d’entrée – top de protection)
- Taille de la position : (20€/Stop loss en point/PointValue)*pipsize
Le problème : lorsque je lance le backtest, aucun trade n’est pris sur sur l’ensemble de l’historique et cela peut importe le montant du portefeuille que je renseigne.
En pièce jointe le résultat du backtest. Je ne sais pas d’où peut venir le problème. J’ai développé l’indicateur de la stratégie que me donne bien les signaux d’achat, donc les conditions d’achat sont valides. Peut-être de la manière dont je calcule la taille de la position ?
Le problème persiste également lorsque j’entre une quantité spécifique : 0.01, 0.1, 0.5, etc.
Pour réaliser la partie de calcul taille de position je me suis basé sur ces ressources :
https://www.prorealcode.com/topic/money-management-how-to-get-the-available-capital-from-the-broker/
https://www.prorealcode.com/blog/learning/money-management-prorealtime-code/
Backtest1234567891011121314151617181920212223242526272829303132333435363738DEFPARAM CumulateOrders = False // Ne pas cumuler les ordresDEFPARAM NoCashUpdate = FalseDEFPARAM MaxOrder = 500once startCapital = 1000// Calcul des indicateurs EMA et CCIema = ExponentialAverage[emaPeriod](Close)fastCCI = CCI[fastCCIperiod](Close)interCCI = CCI[interCCIperiod](Close)slowCCI = CCI[slowCCIperiod](Close)atrValue = AverageTrueRange[atrLength](Typicalprice)// ************************************************* BUY ************************************************* //// Conditions d'achatbuyCond1 = (Close > ema) AND (fastCCI > 0) AND (interCCI > 0) AND (slowCCI crosses over 0)buyCond2 = (Close > ema) AND (slowCCI > 0) AND ((fastCCI crosses over 0) OR (interCCI crosses over 0))buyCond = buyCond1 OR buyCond2// Calcul du stop-losscapital = startCapital + STRATEGYPROFIT // La valeur de mon portefeuillelongStop = Lowest[BarLookback](Low) - (atrValue * atrMult) // La valeur de mon stop lossriskAmount = ROUND(RiskPercent / 100.0) * capital // Le montant max que je risque par tradelongRisk = Close - longStop // L'écart entre l'entrée et le stop losslongPositionSize = abs(round((riskAmount/longRisk)/PointValue)*pipsize)// Entrée en position longueIF not ONMARKET and buyCond THENBUY longPositionSize SHARES AT MARKETSET STOP LOSS longRiskENDIF// Sortie du bayIF LongOnMarket THENSET STOP TRAILING longRiskENDIFMerci d’avance pour votre aide !!!
10/24/2024 at 12:19 PM #23940510/24/2024 at 8:35 PM #239434Bonjour,
Merci pour votre précision. Je viens de faire la manipulation, mais j’ai toujours le même résultat !
En PJ un portefeuille à 10k, à 100k et à 1000k.
Je ne sais pas où est mon erreur. Ce qui est embêtant pour réaliser un backtest.
10/25/2024 at 5:42 PM #23947910/26/2024 at 6:19 PM #239534Effectivement en mettant :
Long Position Size1longPositionSize = 1Cela fonction, mais comment je peux faire pour avoir une taille de position qui s’adapte en fonction de l’évolution du portefeuille et de la règle de 2%?
Je pensais que ce bout de code allait me permettre justement de réaliser ce calcul :
Position size 2% rule1234567// Calcul du stop-losscapital = startCapital + STRATEGYPROFIT // La valeur de mon portefeuillelongStop = Lowest[BarLookback](Low) - (atrValue * atrMult) // La valeur de mon stop lossriskAmount = ROUND(RiskPercent / 100.0) * capital // Le montant max que je risque par tradelongRisk = Close - longStop // L'écart entre l'entrée et le stop losslongPositionSize = abs(round((riskAmount/longRisk)/PointValue)*pipsize)Merci pour l’astuce de la taille de position à 1.
10/26/2024 at 6:28 PM #239536pourquoi vous utilisé pas ce code
123456789REM Money ManagementCapital = 10000Risk = 0.01StopLoss = 10 // Could be our variable XREM Calculate contractsequity = Capital + StrategyProfitmaxrisk = round(equity*Risk)PositionSize = abs(round((maxrisk/StopLoss)/PointValue)*pipsize)10/26/2024 at 7:10 PM #239539Je n’utilise pas ce code car mon stop loss se calcule différemment en fonction du sens du trade. Le code ici c’est uniquement pour une position longue. Or je viens de rédiger la suite pour une position courte.
10/26/2024 at 7:19 PM #23954010/26/2024 at 8:04 PM #239545Oui, comme vous m’avez dit de l’initialiser à 1, j’ai soit +1 pour position longue soit -1 pour position courte.
10/26/2024 at 10:58 PM #239551J’ai trouvé le problème ! Je viens de le résoudre 🙂
123456789101112131415161718192021222324// Ouverture d'une position longueIF NOT ONMARKET AND buyCond THENBUY PositionSizeLong CONTRACTS AT MARKETbuySL = LongStopLossSET STOP PRICE buySLENDIF// Stop suiveur pour la position longueIF LongOnMarket AND LongStopLoss > buySL THENbuySL = LongStopLossSET STOP PRICE buySLENDIF// Ouverture d'une position courteIF NOT ONMARKET AND sellCond THENSELLSHORT PositionSizeShort SHARES AT MARKETsellSL = ShortStopLossSET STOP PRICE sellSLENDIF// Stop suiveur pour la position courteIF ShortOnMarket AND ShortStopLoss > sellSL THENsellSL = ShortStopLossSET STOP PRICE sellSLENDIFMerci à vous !
Achat1 -
AuthorPosts
Find exclusive trading pro-tools on