Stratégie pattern de retournement
Forums › ProRealTime forum Français › Support ProOrder › Stratégie pattern de retournement
-
-
09/04/2025 at 10:46 AM #250344
Bonjours
J’ai codé la stratégie, mai vue que c la première je pense avoir oublié des trucs, et si possible de backtest la stratégie pour voir si elle et rentable sur le long terme, vous pouvez apporter des modifications.
Sur le Dax en 1 min.
09/04/2025 at 12:58 PM #250349Votre code est impossible à voir car si petit, mais il n’est pas non plus convivial dans un .jpg.
Postez votre code par copier-coller en utilisant le bouton bleu – Insérer le code PRT – sur la flèche verte ci-jointe et je le testerai sur ma plateforme pour vous.
09/04/2025 at 1:20 PM #250351// ============================
// STRATÉGIE PATTERN RETOURNEMENT DAX
// ============================DEFPARAM CumulateOrders = False
DEFPARAM PreLoadBars = 500// — Heikin Ashi —
haClose = (open + high + low + close) / 4
haOpen = (haOpen[1] + haClose[1]) / 2
haHigh = max(high, haOpen, haClose)
haLow = min(low, haOpen, haClose)// — Détection du pattern —
// Impulsion
impulseUp = haClose > haOpen AND haClose > haHigh[1]
impulseDown = haClose < haOpen AND haClose < haLow[1] // Hésitation hesitation = (haHigh - haClose > 1 AND haClose – haLow > 1)// Validation du retournement
reversalUp = impulseDown[1] AND hesitation AND haClose > haHigh[1]
reversalDown = impulseUp[1] AND hesitation AND haClose < haLow[1] // ============================ // FILTRE JOUR & HEURE // ============================ isTradingDay = dayofweek >= 1 AND dayofweek <= 5 isTradingHour = time >= 083000 AND time < 200000 // ============================ // CONDITIONS D’ENTRÉE // ============================ // Entrée en long IF isTradingDay AND isTradingHour AND reversalUp THEN BUY 1 CONTRACT AT MARKET stopLevel = lowest[5](low) // stop initial SET STOP pLOSS (close - stopLevel) * pipsize ENDIF // Entrée en short IF isTradingDay AND isTradingHour AND reversalDown THEN SELLSHORT 1 CONTRACT AT MARKET stopLevel = highest[5](high) SET STOP pLOSS (stopLevel - close) * pipsize ENDIF // ============================ // STOP SUIVEUR DYNAMIQUE // ============================ IF longonmarket THEN profitPoints = close - tradeprice(1) // Activation du stop suiveur à +8 points IF profitPoints >= 8 THEN
newStop = tradeprice(1) + 2 // +2 points au-dessus du prix d’entrée
step = FLOOR((profitPoints – 8) / 4)
newStop = MAX(newStop, tradeprice(1) + step * 4 + 2)
SET STOP ploss (tradeprice(1) – newStop) * pipsize
ENDIF
ENDIFIF shortonmarket THEN
profitPoints = tradeprice(1) – closeIF profitPoints >= 8 THEN
newStop = tradeprice(1) – 2 // -2 points sous le prix d’entrée
step = FLOOR((profitPoints – 8) / 4)
newStop = MIN(newStop, tradeprice(1) – step * 4 – 2)
SET STOP ploss (newStop – tradeprice(1)) * pipsize
ENDIF
ENDIF// ============================
// CLÔTURE FORCÉE À 20h00
// ============================
IF time >= 200000 THEN
IF longonmarket THEN
SELL AT MARKET
ENDIF
IF shortonmarket THEN
EXITSHORT AT MARKET
ENDIF
ENDIF09/04/2025 at 2:28 PM #250353123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566// ==============================// DAX REVERSAL PATTERN STRATEGY// ================================DEFPARAM CumulateOrders = FalseDEFPARAM PreLoadBars = 500// — Heikin Ashi —haClose = (open + high + low + close) / 4haOpen = (haOpen[1] + haClose[1]) / 2haHigh = max(high, max(haOpen, haClose))haLow = min(low, max(haOpen, haClose))// — Détection du pattern —// ImpulsionimpulseUp = haClose > haOpen AND haClose > haHigh[1]impulseDown = haClose < haOpen AND haClose < haLow[1] // Hésitationhesitation = (haHigh - haClose > 1 AND haClose - haLow > 1)// Validation du retournementreversalUp = impulseDown[1] AND hesitation AND haClose > haHigh[1]reversalDown = impulseUp[1] AND hesitation AND haClose < haLow[1] // ============================ // FILTRE JOUR & HEURE // ============================isTradingDay = dayofweek >= 1 AND dayofweek <= 5isTradingHour = time >= 083000 AND time < 200000 // ============================ // CONDITIONS D’ENTRÉE // ============================ // Entrée en longIF isTradingDay AND isTradingHour AND reversalUp THENBUY 1 CONTRACT AT MARKETstopLevel = lowest[5](low) // stop initialSET STOP pLOSS (close - stopLevel) * pipsizeENDIF// Entrée en shortIF isTradingDay AND isTradingHour AND reversalDown THENSELLSHORT 1 CONTRACT AT MARKETstopLevel = highest[5](high)SET STOP pLOSS (stopLevel - close) * pipsize//ENDIF // ============================ // STOP SUIVEUR DYNAMIQUE // ============================IF longonmarket THENprofitPoints = close - tradeprice(1) // Activation du stop suiveur à +8 points IF profitPoints >= 8 THENnewStop = tradeprice(1) + 2 // +2 points au-dessus du prix d’entréestep = FLOOR((profitPoints - 8) / 4)newStop = MAX(newStop, tradeprice(1) + step * 4 + 2)SET STOP ploss (tradeprice(1) - newStop) * pipsizeENDIFENDIFIF shortonmarket THENprofitPoints = tradeprice(1) - closeIF profitPoints >= 8 THENnewStop = tradeprice(1) - 2 // -2 points sous le prix d’entréestep = FLOOR((profitPoints - 8) / 4)newStop = MIN(newStop, tradeprice(1) - step * 4 - 2)SET STOP ploss (newStop - tradeprice(1)) * pipsizeENDIFENDIF// ============================// CLÔTURE FORCÉE À 20h00// ============================IF time >= 200000 THENIF longonmarket THENSELL AT MARKETENDIFIF shortonmarket THENEXITSHORT AT MARKETENDIFENDIF1 user thanked author for this post.
09/04/2025 at 4:13 PM #250358La définition correcte des bougies HA est la suivante :
12345678// — Heikin Ashi —haClose = (open + high + low + close) / 4once xOpen = openIF BarIndex > 0 THENhaOpen = (haOpen[1] + haClose[1]) / 2ENDIFhaHigh = max(high, max(haOpen, haClose))haLow = min(low, max(haOpen, haClose))1 user thanked author for this post.
09/04/2025 at 4:15 PM #25035909/04/2025 at 5:59 PM #250363Ok merci les modifications, avait vous pu backtest la stratégie.
09/04/2025 at 8:32 PM #25036509/04/2025 at 9:31 PM #250366Le problème j’ai pas encore accès prorealtime, et oui je veux bien les résultats si ça vous dérange pas.
Merci.
09/05/2025 at 8:19 AM #250371Voir ci-joint. Je n’ai pas réussi à le rendre aussi parfait que possible.
Votre code publié n’ouvrirait pas de transactions ; il y avait plusieurs erreurs, j’ai trié ces erreurs et le résultat est joint.
Si vous voulez voir les modifications que j’ai apportées, entrez votre code et mon code (dans le fichier .itf) dans ce « diffchecker ».
-
AuthorPosts
Find exclusive trading pro-tools on