L'ADX(14) décide du mode. Sur les marchés calmes, le système achète après une grande bougie baissière et passe short après une grande bougie haussière, et quand l'ADX est élevé il suit plutôt la bougie. Les longs se clôturent 30 bars après le dernier trade et les shorts après 5 bars.
Meilleure exécution sur 4. FTSE 100, 4 heures, spread 2, à partir de l'exécution pf:2026-09-24-FTSE100-4h.tsv:2.
| Période | Jusqu'au 2026-09-25 |
| Instrument | FTSE 100, 4 heures |
| Spread | 2 points |
| Contrats | 1 |
| Capital de départ | 1,000,000 |
| Coûts | Spread uniquement. Les commissions et le financement overnight ne sont pas inclus. |
| Barres | Jusqu'à 200,000 barres, moins lorsque l'instrument a moins d'historique |
| Dernier test | 2026-09-25 |
| positionSize Contrats par trade | 1 |
| atrPeriod Longueur de l'ATR pour la taille des bougies et le plafond de volatilité | 14 |
| adxPeriod Longueur de l'ADX pour le changement de régime | 14 |
| adxLongThreshold Longs : ADX au-dessus = régime breakout, en dessous = mean reversion | 36 |
| adxShortThreshold Shorts : ADX au-dessus = régime breakout, en dessous = mean reversion | 24 |
| atrMaxLong Pas de longs quand l'ATR est à ce niveau ou au-dessus | 100 |
| atrMaxShort Pas de shorts quand l'ATR est à ce niveau ou au-dessus | 200 |
| longReversionMultiplier Long après une bougie baissière plus grande que ce nombre d'ATR | 1 |
| longBreakoutMultiplier Long après une bougie haussière plus grande que ce nombre d'ATR | 1 |
| shortReversionMultiplier Short après une bougie haussière plus grande que ce nombre d'ATR | 1 |
| shortBreakoutMultiplier Short après une bougie baissière plus grande que ce nombre d'ATR | 2 |
| maxBarsLong Clôturer un long après ce nombre de bars | 30 |
| maxBarsShort Clôturer un short après ce nombre de bars | 5 |
| midMonthDay Les jours jusqu'à celui-ci comptent comme la première moitié du mois | 15 |
| janFirstHalf Poids saisonnier, première moitié de janvier (zéro bloque les nouveaux longs) | 3 |
| janSecondHalf Poids saisonnier, seconde moitié de janvier (zéro bloque les nouveaux longs) | 0 |
| febFirstHalf Poids saisonnier, première moitié de février (zéro bloque les nouveaux longs) | 3 |
| febSecondHalf Poids saisonnier, seconde moitié de février (zéro bloque les nouveaux longs) | 3 |
| marFirstHalf Poids saisonnier, première moitié de mars (zéro bloque les nouveaux longs) | 3 |
| marSecondHalf Poids saisonnier, seconde moitié de mars (zéro bloque les nouveaux longs) | 2 |
| aprFirstHalf Poids saisonnier, première moitié d'avril (zéro bloque les nouveaux longs) | 3 |
| aprSecondHalf Poids saisonnier, seconde moitié d'avril (zéro bloque les nouveaux longs) | 3 |
| mayFirstHalf Poids saisonnier, première moitié de mai (zéro bloque les nouveaux longs) | 1 |
| maySecondHalf Poids saisonnier, seconde moitié de mai (zéro bloque les nouveaux longs) | 1 |
| junFirstHalf Poids saisonnier, première moitié de juin (zéro bloque les nouveaux longs) | 1 |
| junSecondHalf Poids saisonnier, seconde moitié de juin (zéro bloque les nouveaux longs) | 2 |
| julFirstHalf Poids saisonnier, première moitié de juillet (zéro bloque les nouveaux longs) | 3 |
| julSecondHalf Poids saisonnier, seconde moitié de juillet (zéro bloque les nouveaux longs) | 2 |
| augFirstHalf Poids saisonnier, première moitié d'août (zéro bloque les nouveaux longs) | 2 |
| augSecondHalf Poids saisonnier, seconde moitié d'août (zéro bloque les nouveaux longs) | 3 |
| sepFirstHalf Poids saisonnier, première moitié de septembre (zéro bloque les nouveaux longs) | 3 |
| sepSecondHalf Poids saisonnier, seconde moitié de septembre (zéro bloque les nouveaux longs) | 0 |
| octFirstHalf Poids saisonnier, première moitié d'octobre (zéro bloque les nouveaux longs) | 3 |
| octSecondHalf Poids saisonnier, seconde moitié d'octobre (zéro bloque les nouveaux longs) | 2 |
| novFirstHalf Poids saisonnier, première moitié de novembre (zéro bloque les nouveaux longs) | 1 |
| novSecondHalf Poids saisonnier, seconde moitié de novembre (zéro bloque les nouveaux longs) | 3 |
| decFirstHalf Poids saisonnier, première moitié de décembre (zéro bloque les nouveaux longs) | 3 |
| decSecondHalf Poids saisonnier, seconde moitié de décembre (zéro bloque les nouveaux longs) | 2 |
Chaque exécution
| Marché | Unité de temps | PF | Trades | % de réussite | Net | Max DD |
|---|---|---|---|---|---|---|
| FTSE 100Meilleure exécution | 4 heures | 1.17 | 1,514 | 55.75 | 7,580 EUR | -1,646 |
| DAX 40 | Journalier | n/a | 347 | 58.21 | 9,871 EUR | -2,471 |
| GBP/USD | Journalier | n/a | 799 | 55.69 | 7,847 USD | -7,788 |
| Nasdaq 100 | Journalier | n/a | 585 | 50.77 | 2,959 EUR | -1,721 |
Graphiques
Le code
// ============================================================ // DAX Survivor // ProRealAlgos Strategy Library | prorealalgos.com // Type: Volatility // Direction: Long & short // Timeframe tested: 4 hours // ============================================================ // --- Settings --- DEFPARAM CumulateOrders = false // --- Parameters --- positionSize = 1 // contracts per trade atrPeriod = 14 // ATR length for candle size and volatility cap adxPeriod = 14 // ADX length for the regime switch adxLongThreshold = 36 // longs: ADX above = breakout regime, below = mean reversion adxShortThreshold = 24 // shorts: ADX above = breakout regime, below = mean reversion atrMaxLong = 100 // no longs when ATR is at or above this atrMaxShort = 200 // no shorts when ATR is at or above this longReversionMultiplier = 1 // long after a down candle larger than this many ATRs longBreakoutMultiplier = 1 // long after an up candle larger than this many ATRs shortReversionMultiplier = 1 // short after an up candle larger than this many ATRs shortBreakoutMultiplier = 2 // short after a down candle larger than this many ATRs maxBarsLong = 30 // close a long after this many bars maxBarsShort = 5 // close a short after this many bars midMonthDay = 15 // days up to this count as the first half of the month // Seasonal weights per half month. Only zero matters now: zero blocks new longs. janFirstHalf = 3 janSecondHalf = 0 febFirstHalf = 3 febSecondHalf = 3 marFirstHalf = 3 marSecondHalf = 2 aprFirstHalf = 3 aprSecondHalf = 3 mayFirstHalf = 1 maySecondHalf = 1 junFirstHalf = 1 junSecondHalf = 2 julFirstHalf = 3 julSecondHalf = 2 augFirstHalf = 2 augSecondHalf = 3 sepFirstHalf = 3 sepSecondHalf = 0 octFirstHalf = 3 octSecondHalf = 2 novFirstHalf = 1 novSecondHalf = 3 decFirstHalf = 3 decSecondHalf = 2 // --- Indicators --- atrValue = AverageTrueRange[atrPeriod] adxValue = ADX[adxPeriod] candleBody = abs(open - close) longVolatilityOk = atrValue < atrMaxLong shortVolatilityOk = atrValue < atrMaxShort longBreakoutRegime = adxValue > adxLongThreshold longReversionRegime = adxValue < adxLongThreshold shortBreakoutRegime = adxValue > adxShortThreshold shortReversionRegime = adxValue < adxShortThreshold firstHalf = Day <= midMonthDay IF CurrentMonth = 1 THEN IF firstHalf THEN seasonWeight = janFirstHalf ELSE seasonWeight = janSecondHalf ENDIF ELSIF CurrentMonth = 2 THEN IF firstHalf THEN seasonWeight = febFirstHalf ELSE seasonWeight = febSecondHalf ENDIF ELSIF CurrentMonth = 3 THEN IF firstHalf THEN seasonWeight = marFirstHalf ELSE seasonWeight = marSecondHalf ENDIF ELSIF CurrentMonth = 4 THEN IF firstHalf THEN seasonWeight = aprFirstHalf ELSE seasonWeight = aprSecondHalf ENDIF ELSIF CurrentMonth = 5 THEN IF firstHalf THEN seasonWeight = mayFirstHalf ELSE seasonWeight = maySecondHalf ENDIF ELSIF CurrentMonth = 6 THEN IF firstHalf THEN seasonWeight = junFirstHalf ELSE seasonWeight = junSecondHalf ENDIF ELSIF CurrentMonth = 7 THEN IF firstHalf THEN seasonWeight = julFirstHalf ELSE seasonWeight = julSecondHalf ENDIF ELSIF CurrentMonth = 8 THEN IF firstHalf THEN seasonWeight = augFirstHalf ELSE seasonWeight = augSecondHalf ENDIF ELSIF CurrentMonth = 9 THEN IF firstHalf THEN seasonWeight = sepFirstHalf ELSE seasonWeight = sepSecondHalf ENDIF ELSIF CurrentMonth = 10 THEN IF firstHalf THEN seasonWeight = octFirstHalf ELSE seasonWeight = octSecondHalf ENDIF ELSIF CurrentMonth = 11 THEN IF firstHalf THEN seasonWeight = novFirstHalf ELSE seasonWeight = novSecondHalf ENDIF ELSE IF firstHalf THEN seasonWeight = decFirstHalf ELSE seasonWeight = decSecondHalf ENDIF ENDIF // The weight used to scale size; with fixed size a zero weight still means "no long". seasonAllowsLong = seasonWeight <> 0
35 lignes de plus : les règles d'entrée et de sortie.
Configuration
Questions
Oui. Le code réécrit n'a pas encore été vérifié à la compilation et les statistiques publiées proviennent du code antérieur, donc testez-le en démo avant de passer en réel.
FTSE 100 4 heures a rapporté EUR 7,579.90 sur 1,514 trades. DAX 40 Journalier a rapporté EUR 9,870.90, GBP/USD Journalier USD 7,847.10 et Nasdaq 100 Journalier EUR 2,959.40.
Le max drawdown de la meilleure exécution à 1 contrat était de EUR 1,645.70. En l'absence de stop, gardez une marge supplémentaire au-dessus de ce chiffre.
Des durées de détention de 30 et 5 bars nécessitent des bars plus lents pour capter un vrai swing. Toutes les lignes testées étaient en 4 heures ou en Journalier.
Voir aussi
La communauté ProRealAlgos obtient les règles complètes, le code complet et le portefeuille automatisé.