dca strategie. pas d’erreur mais ne donne aucun resultat !
Forums › ProRealTime forum Français › Support ProOrder › dca strategie. pas d’erreur mais ne donne aucun resultat !
- This topic has 2 replies, 2 voices, and was last updated 3 days ago by
arrot.
-
-
08/27/2025 at 8:35 AM #250096
bjr,
j’ai réalisé un backtest de la stratégie DCA
il n’y a pas d’erreur de code mais je n’obtiens aucun résultat
pouvez vous m’aider
merci,
AT
// ========================================
// STRATEGIE DCA (DOLLAR COST AVERAGING)
// ========================================DEFPARAM CumulateOrders = true // cumul des positions
// — PARAMETRES DE LA STRATEGIE —
DCAInterval = 20 // Nombre de barres entre chaque achat DCA
InvestAmount = 1000 // Montant en cash à investir à chaque fois
MaxPositions = 10 // Nombre maximum de positions simultanées
StopLossPct = 15 // Stop loss en pourcentage (15 = -15%)
TakeProfitPct = 20 // Take profit en pourcentage (20 = +20%)// — VARIABLES —
ONCE BarsSinceLastBuy = 0
ONCE TotalPositions = 0
ONCE TotalInvestment = 0
ONCE AveragePrice = 0// — COMPTEUR DE BARRES —
BarsSinceLastBuy = BarsSinceLastBuy + 1// — CONDITION D’ACHAT DCA —
// Acheter tous les X barres si on n’a pas atteint le maximum de positions
IF BarsSinceLastBuy >DCAInterval AND TotalPositions < MaxPositions THEN BUY InvestAmount CASH AT MARKET BarsSinceLastBuy = 0 TotalPositions = TotalPositions + 1 TotalInvestment = TotalInvestment + InvestAmount IF COUNTOFLONGSHARES > 0 THEN
AveragePrice = TotalInvestment / COUNTOFLONGSHARES
ENDIF
endif// — CONDITIONS DE SORTIE —
// Stop Loss : Vendre si le prix descend sous le seuil défini
IF LONGONMARKET AND Close <= AveragePrice * (1 - StopLossPct/100) THEN SELL AT MARKET // Réinitialiser les variables TotalPositions = 0 TotalInvestment = 0 AveragePrice = 0 BarsSinceLastBuy = 0 ENDIF // Take Profit : Vendre si le prix monte au-dessus du seuil défini IF LONGONMARKET AND Close >= AveragePrice * (1 + TakeProfitPct/100) THEN
SELL AT MARKET
// Réinitialiser les variables
TotalPositions = 0
TotalInvestment = 0
AveragePrice = 0
BarsSinceLastBuy = 0
ENDIF// — VERSION ALTERNATIVE AVEC MOYENNES MOBILES —
// Décommentez ces lignes pour ajouter un filtre de tendance// MM20 = AVERAGE[20](CLOSE)
// MM50 = AVERAGE[50](CLOSE)// Condition d’achat DCA améliorée avec filtre de tendance
// IF BarsSinceLastBuy >= DCAInterval AND TotalPositions < MaxPositions AND MM20 > MM50 THEN
// BUY InvestAmount CASH AT MARKET
// BarsSinceLastBuy = 0
// TotalPositions = TotalPositions + 1
// TotalInvestment = TotalInvestment + InvestAmount
// IF COUNTOFLONGSHARES > 0 THEN
// AveragePrice = TotalInvestment / COUNTOFLONGSHARES
// ENDIF
// ENDIF// ========================================
// PARAMETRES DE BACKTEST RECOMMANDES
// ========================================
//
// 1. Capital initial : 50 000 € (pour permettre 10 achats de 1000€)
// 2. Spread : Selon l’instrument (ex: 2 points pour CAC40)
// 3. Commission : Selon votre courtier
// 4. Période de test : Au moins 2-3 ans pour évaluer la robustesse
// 5. Timeframe : H1 ou D1 pour éviter le bruit
//
// METRIQUES A ANALYSER :
// – Gain total et pourcentage
// – Maximum Drawdown
// – Ratio gain/perte
// – Nombre de trades gagnants/perdants
// – Profit Factor
// – Sharpe Ratio (si disponible)// ========================================
// VARIANTES A TESTER
// ========================================
//
// 1. DCA avec RSI : Acheter seulement si RSI < 70 // 2. DCA avec support/résistance // 3. DCA pyramidal : Augmenter la taille lors des baisses // 4. DCA avec stop time : Arrêter après X mois // 5. DCA adaptatif : Modifier l'intervalle selon la volatilité08/27/2025 at 9:51 AM #250102Bonjour. J’ai modifié le moins possible ton code pour qu’il soit fonctionnel.
J’ai ajouté au tout début le calcul de la variable totalpositions et de averageprice.1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556// ========================================// STRATEGIE DCA (DOLLAR COST AVERAGING)// ========================================dEFPARAM CumulateOrders = true // Pas de cumul des position// --- PARAMETRES DE LA STRATEGIE ---DCAInterval = 20 // Nombre de barres entre chaque achat DCAInvestAmount = 1000 // Montant en cash à investir à chaque foisMaxPositions = 10 // Nombre maximum de positions simultanéesStopLossPct = 15 // Stop loss en pourcentage (15 = -15%)TakeProfitPct = 20 // Take profit en pourcentage (20 = +20%)// --- VARIABLES ---ONCE BarsSinceLastBuy = 0ONCE TotalPositions = 0ONCE TotalInvestment = 0ONCE AveragePrice = 0if not onmarket thenTotalPositions=0elseIF COUNTOFLONGSHARES > 0 THENAveragePrice = TotalInvestment / COUNTOFLONGSHARESENDIFendif// --- COMPTEUR DE BARRES ---BarsSinceLastBuy = BarsSinceLastBuy + 1// --- CONDITION D'ACHAT DCA ---// Acheter tous les X barres si on n'a pas atteint le maximum de positionsIF BarsSinceLastBuy >DCAInterval AND TotalPositions < MaxPositions THENBUY InvestAmount CASH AT MARKETBarsSinceLastBuy = 0TotalPositions = TotalPositions + 1TotalInvestment = TotalInvestment + InvestAmountendif// --- CONDITIONS DE SORTIE ---// Stop Loss : Vendre si le prix descend sous le seuil définiIF LONGONMARKET AND Close <= AveragePrice * (1 - StopLossPct/100) THENSELL AT MARKET// Réinitialiser les variablesTotalPositions = 0TotalInvestment = 0AveragePrice = 0BarsSinceLastBuy = 0ENDIF// Take Profit : Vendre si le prix monte au-dessus du seuil définiIF LONGONMARKET AND Close >= AveragePrice * (1 + TakeProfitPct/100) THENSELL AT MARKET// Réinitialiser les variablesTotalPositions = 0TotalInvestment = 0AveragePrice = 0BarsSinceLastBuy = 0ENDIFgraphonprice AveragePricegraphonprice AveragePrice * (1 + TakeProfitPct/100) coloured("blue")graphonprice AveragePrice * (1 - StopLossPct/100)coloured("red")De plus, je te transmets une variante de ce code pour que tu puisses voir une autre façon de calculer le prix moyen ainsi que la sortie par take profit et stop loss.
1234567891011121314151617181920212223242526272829303132333435// ========================================// STRATEGIE DCA (DOLLAR COST AVERAGING)// ========================================DEFPARAM CumulateOrders = true // Pas de cumul des positions// --- PARAMETRES DE LA STRATEGIE ---DCAInterval = 20 // Nombre de barres entre chaque achat DCAInvestAmount = 1000 // Montant en cash à investir à chaque foisMaxPositions = 10 // Nombre maximum de positions simultanéesStopLossPct = 15 // Stop loss en pourcentage (15 = -15%)TakeProfitPct = 20 // Take profit en pourcentage (20 = +20%)// --- VARIABLES ---ONCE BarsSinceLastBuy = 0// --- COMPTEUR DE BARRES ---BarsSinceLastBuy = BarsSinceLastBuy + 1if not onmarket thenTotalPositions=0TotalInvestment = 0endif// --- CONDITION D'ACHAT DCA ---// Acheter tous les X barres si on n'a pas atteint le maximum de positionsIF BarsSinceLastBuy > DCAInterval AND TotalPositions < MaxPositions THENBUY InvestAmount CASH AT MARKETBarsSinceLastBuy = 0TotalPositions=TotalPositions+1TotalInvestment = TotalInvestment + InvestAmountendif// --- CONDITIONS DE SORTIE ---set target %profit TakeProfitPctset stop %loss StopLossPctgraphonprice positionpricegraphonprice positionprice * (1 - StopLossPct/100) coloured("red")graphonprice positionprice * (1 + TakeProfitPct/100) coloured("blue")graph TotalInvestment1 user thanked author for this post.
08/31/2025 at 5:42 AM #250215 -
AuthorPosts
Find exclusive trading pro-tools on