ADX(14) bepaalt de modus. In rustige markten koopt het systeem na een grote dalende candle en gaat het short na een grote stijgende candle, en wanneer ADX hoog is volgt het de candle juist. Longs sluiten 30 bars na de laatste trade en shorts na 5 bars.
Beste run van 4. FTSE 100, 4 uur, spread 2, uit run pf:2026-09-24-FTSE100-4h.tsv:2.
| Periode | Tot 2026-09-25 |
| Instrument | FTSE 100, 4 uur |
| Spread | 2 punten |
| Contracten | 1 |
| Startkapitaal | 1,000,000 |
| Kosten | Alleen spread. Commissies en overnight financiering zijn niet meegerekend. |
| Bars | Tot 200,000 bars, minder waar het instrument minder historie heeft |
| Laatst getest | 2026-09-25 |
| positionSize Contracten per trade | 1 |
| atrPeriod ATR-lengte voor candlegrootte en volatiliteitsplafond | 14 |
| adxPeriod ADX-lengte voor de regimeschakelaar | 14 |
| adxLongThreshold Longs: ADX erboven = breakout-regime, eronder = mean reversion | 36 |
| adxShortThreshold Shorts: ADX erboven = breakout-regime, eronder = mean reversion | 24 |
| atrMaxLong Geen longs wanneer ATR hierop of hierboven staat | 100 |
| atrMaxShort Geen shorts wanneer ATR hierop of hierboven staat | 200 |
| longReversionMultiplier Long na een dalende candle groter dan dit aantal ATR's | 1 |
| longBreakoutMultiplier Long na een stijgende candle groter dan dit aantal ATR's | 1 |
| shortReversionMultiplier Short na een stijgende candle groter dan dit aantal ATR's | 1 |
| shortBreakoutMultiplier Short na een dalende candle groter dan dit aantal ATR's | 2 |
| maxBarsLong Sluit een long na dit aantal bars | 30 |
| maxBarsShort Sluit een short na dit aantal bars | 5 |
| midMonthDay Dagen tot en met deze gelden als de eerste helft van de maand | 15 |
| janFirstHalf Seizoensgewicht, eerste helft van januari (nul blokkeert nieuwe longs) | 3 |
| janSecondHalf Seizoensgewicht, tweede helft van januari (nul blokkeert nieuwe longs) | 0 |
| febFirstHalf Seizoensgewicht, eerste helft van februari (nul blokkeert nieuwe longs) | 3 |
| febSecondHalf Seizoensgewicht, tweede helft van februari (nul blokkeert nieuwe longs) | 3 |
| marFirstHalf Seizoensgewicht, eerste helft van maart (nul blokkeert nieuwe longs) | 3 |
| marSecondHalf Seizoensgewicht, tweede helft van maart (nul blokkeert nieuwe longs) | 2 |
| aprFirstHalf Seizoensgewicht, eerste helft van april (nul blokkeert nieuwe longs) | 3 |
| aprSecondHalf Seizoensgewicht, tweede helft van april (nul blokkeert nieuwe longs) | 3 |
| mayFirstHalf Seizoensgewicht, eerste helft van mei (nul blokkeert nieuwe longs) | 1 |
| maySecondHalf Seizoensgewicht, tweede helft van mei (nul blokkeert nieuwe longs) | 1 |
| junFirstHalf Seizoensgewicht, eerste helft van juni (nul blokkeert nieuwe longs) | 1 |
| junSecondHalf Seizoensgewicht, tweede helft van juni (nul blokkeert nieuwe longs) | 2 |
| julFirstHalf Seizoensgewicht, eerste helft van juli (nul blokkeert nieuwe longs) | 3 |
| julSecondHalf Seizoensgewicht, tweede helft van juli (nul blokkeert nieuwe longs) | 2 |
| augFirstHalf Seizoensgewicht, eerste helft van augustus (nul blokkeert nieuwe longs) | 2 |
| augSecondHalf Seizoensgewicht, tweede helft van augustus (nul blokkeert nieuwe longs) | 3 |
| sepFirstHalf Seizoensgewicht, eerste helft van september (nul blokkeert nieuwe longs) | 3 |
| sepSecondHalf Seizoensgewicht, tweede helft van september (nul blokkeert nieuwe longs) | 0 |
| octFirstHalf Seizoensgewicht, eerste helft van oktober (nul blokkeert nieuwe longs) | 3 |
| octSecondHalf Seizoensgewicht, tweede helft van oktober (nul blokkeert nieuwe longs) | 2 |
| novFirstHalf Seizoensgewicht, eerste helft van november (nul blokkeert nieuwe longs) | 1 |
| novSecondHalf Seizoensgewicht, tweede helft van november (nul blokkeert nieuwe longs) | 3 |
| decFirstHalf Seizoensgewicht, eerste helft van december (nul blokkeert nieuwe longs) | 3 |
| decSecondHalf Seizoensgewicht, tweede helft van december (nul blokkeert nieuwe longs) | 2 |
Elke run
| Markt | Tijdframe | PF | Trades | Winst % | Netto | Max DD |
|---|---|---|---|---|---|---|
| FTSE 100Beste run | 4 uur | 1.17 | 1,514 | 55.75 | 7,580 EUR | -1,646 |
| DAX 40 | Dagelijks | n/a | 347 | 58.21 | 9,871 EUR | -2,471 |
| GBP/USD | Dagelijks | n/a | 799 | 55.69 | 7,847 USD | -7,788 |
| Nasdaq 100 | Dagelijks | n/a | 585 | 50.77 | 2,959 EUR | -1,721 |
Grafieken
De 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
Nog 35 regels: de instap- en uitstapregels.
Opzet
Vragen
Ja. De herschreven code is nog niet op compileren gecontroleerd en de gepubliceerde statistieken komen van de eerdere code, dus test hem in demo voordat je live gaat.
FTSE 100 4 uur leverde EUR 7,579.90 op over 1,514 trades. DAX 40 Daily leverde EUR 9,870.90 op, GBP/USD Daily USD 7,847.10 en Nasdaq 100 Daily EUR 2,959.40.
De max drawdown van de beste run bij 1 contract was EUR 1,645.70. Omdat er geen stop is, houd extra ruimte boven dat cijfer.
Aanhoudperiodes van 30 en 5 bars hebben langzamere bars nodig om een echte swing te pakken. Alle geteste rijen waren 4 uur of Daily.
Gerelateerd
De ProRealAlgos community krijgt de volledige regels, de complete code en de geautomatiseerde portefeuille.