Op de wachtlijst
Strategieën / Volatiliteit / DAX Survivor

DAX Survivor

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.

VolatiliteitLong & shortSwingFTSE 1004 uur
1.17Profit factor
7,580Nettowinst EUR
55.75%Winstpercentage
1,514Trades
-1,646Max drawdown
5.01Gem. trade

Beste run van 4. FTSE 100, 4 uur, spread 2, uit run pf:2026-09-24-FTSE100-4h.tsv:2.

Instapregels, long

  1. Breakout-modus: ADX(14) is boven 36 en de body van een stijgende candle is groter dan 1 x ATR(14)
  2. ATR(14) is onder 100
  3. De seizoenstabel blokkeert de huidige halve maand niet (de tweede helft van januari en de tweede helft van september zijn geblokkeerd)

Instapregels, short

  1. Breakout-modus: ADX(14) is boven 24 en de body van een dalende candle is groter dan 2 x ATR(14)
  2. ATR(14) is onder 200

Uitstapregels

  1. Sluit een short 5 bars na de laatste trade
  2. Geen stop loss of target

Testomstandigheden

PeriodeTot 2026-09-25
InstrumentFTSE 100, 4 uur
Spread2 punten
Contracten1
Startkapitaal1,000,000
KostenAlleen spread. Commissies en overnight financiering zijn niet meegerekend.
BarsTot 200,000 bars, minder waar het instrument minder historie heeft
Laatst getest2026-09-25
Parameters (38)
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

Geteste markten en tijdframes

MarktTijdframePFTradesWinst %NettoMax DD
FTSE 100Beste run4 uur1.17 1,51455.757,580 EUR-1,646
DAX 40Dagelijksn/a 34758.219,871 EUR-2,471
GBP/USDDagelijksn/a 79955.697,847 USD-7,788
Nasdaq 100Dagelijksn/a 58550.772,959 EUR-1,721

Grafieken

Resultaten per run

NettowinstMax drawdown

De code

ProBuilder, herschreven naar huisstandaard

// ============================================================
// 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

Zo laad je hem in

  1. Kopieer de code met de kopieerknop op het codeblok.
  2. Open in ProRealTime een grafiek van het instrument en tijdframe dat je wilt testen en open dan ProOrder > New trading system en kies "Create with programming".
  3. Plak de code, geef het systeem een naam en sla het op.
  4. Klik op "Backtest", stel je eigen spread en position size in en voer hem uit voordat je overweegt er live mee te traden.

Gebruikte indicatoren

ATRADX
Lees dit eerstBekende zwaktes4 punten
  • Er is geen stop loss of winstdoel. Trades eindigen alleen op tijd, dus een scherpe beweging tegen een positie in loopt door tot het aantal bars is bereikt.
  • De beste run op FTSE 100 4 uur had een profit factor van 1.17, een dunne edge na kosten.
  • Op GBP/USD Daily is de max drawdown (USD 7,788) bijna gelijk aan de nettowinst (USD 7,847.10).
  • De originele versie schaalde de positiegrootte naar seizoen en ATR. De geteste code handelt een vaste 1 contract, dus het is een vereenvoudigde versie.

Vragen

Over deze strategie

Is DAX Survivor ProOrder-compatibel?

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.

Hoe presteerde hij over de markten heen?

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.

Wat riskeert 1 contract?

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.

Waarom 4 uur- en dagbars?

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

Strategieën zoals deze

ATR Band

Gebruikt dezelfde indicator.

10.31 PF · 53 trades

Bollinger Reversal

Beste run op dezelfde markt, FTSE 100.

1.74 PF · 117 trades

Breakout Failures

Een vergelijkbare profit factor.

1.17 PF · 911 trades

Regimeschakelen is één stuk van de puzzel. Ga op de ProRealAlgos-wachtlijst om de rest te zien.

De ProRealAlgos community krijgt de volledige regels, de complete code en de geautomatiseerde portefeuille.

Backtestresultaten uit het verleden bieden geen garantie voor de toekomst. Dit is geen financieel advies. Samengesteld en onderhouden door ProRealAlgos. ProRealTime™ is een handelsmerk van ProRealTime SAS. prorealalgos.comStatsDocumentatie