Auf die Warteliste
Strategien / Volatilität / DAX Survivor

DAX Survivor

ADX(14) entscheidet über den Modus. In ruhigen Märkten kauft das System nach einer großen Abwärtskerze und geht short nach einer großen Aufwärtskerze, und wenn der ADX hoch ist, folgt es stattdessen der Kerze. Longs werden 30 Bars nach dem letzten Trade geschlossen und Shorts nach 5 Bars.

VolatilitätLong & ShortSwingFTSE 1004 Stunden
1.17Profit Factor
7,580Nettogewinn EUR
55.75%Trefferquote
1,514Trades
-1,646Max Drawdown
5.01Durchschn. Trade

Bester von 4 Durchläufen. FTSE 100, 4 Stunden, Spread 2, aus Durchlauf pf:2026-09-24-FTSE100-4h.tsv:2.

Einstiegsregeln, Long

  1. Breakout-Modus: ADX(14) liegt über 36 und der Körper einer Aufwärtskerze ist größer als 1 x ATR(14)
  2. ATR(14) liegt unter 100
  3. Die Saisontabelle blockiert den aktuellen Halbmonat nicht (zweite Hälfte Januar und zweite Hälfte September sind blockiert)

Einstiegsregeln, Short

  1. Breakout-Modus: ADX(14) liegt über 24 und der Körper einer Abwärtskerze ist größer als 2 x ATR(14)
  2. ATR(14) liegt unter 200

Ausstiegsregeln

  1. Einen Short 5 Bars nach dem letzten Trade schließen
  2. Kein Stop Loss oder Ziel

Testbedingungen

ZeitraumBis 2026-09-25
InstrumentFTSE 100, 4 Stunden
Spread2 Punkte
Kontrakte1
Startkapital1,000,000
KostenNur Spread. Kommissionen und Overnight-Finanzierung sind nicht enthalten.
BarsBis zu 200,000 Bars, weniger wo das Instrument weniger Historie hat
Zuletzt getestet2026-09-25
Parameter (38)
positionSize
Kontrakte pro Trade
1
atrPeriod
ATR-Länge für Kerzengröße und Volatilitätsobergrenze
14
adxPeriod
ADX-Länge für den Regimewechsel
14
adxLongThreshold
Longs: ADX darüber = Breakout-Regime, darunter = Mean Reversion
36
adxShortThreshold
Shorts: ADX darüber = Breakout-Regime, darunter = Mean Reversion
24
atrMaxLong
Keine Longs, wenn der ATR auf oder über diesem Wert liegt
100
atrMaxShort
Keine Shorts, wenn der ATR auf oder über diesem Wert liegt
200
longReversionMultiplier
Long nach einer Abwärtskerze, die größer ist als so viele ATRs
1
longBreakoutMultiplier
Long nach einer Aufwärtskerze, die größer ist als so viele ATRs
1
shortReversionMultiplier
Short nach einer Aufwärtskerze, die größer ist als so viele ATRs
1
shortBreakoutMultiplier
Short nach einer Abwärtskerze, die größer ist als so viele ATRs
2
maxBarsLong
Einen Long nach so vielen Bars schließen
30
maxBarsShort
Einen Short nach so vielen Bars schließen
5
midMonthDay
Tage bis hierhin zählen als erste Hälfte des Monats
15
janFirstHalf
Saisonale Gewichtung, erste Hälfte Januar (null blockiert neue Longs)
3
janSecondHalf
Saisonale Gewichtung, zweite Hälfte Januar (null blockiert neue Longs)
0
febFirstHalf
Saisonale Gewichtung, erste Hälfte Februar (null blockiert neue Longs)
3
febSecondHalf
Saisonale Gewichtung, zweite Hälfte Februar (null blockiert neue Longs)
3
marFirstHalf
Saisonale Gewichtung, erste Hälfte März (null blockiert neue Longs)
3
marSecondHalf
Saisonale Gewichtung, zweite Hälfte März (null blockiert neue Longs)
2
aprFirstHalf
Saisonale Gewichtung, erste Hälfte April (null blockiert neue Longs)
3
aprSecondHalf
Saisonale Gewichtung, zweite Hälfte April (null blockiert neue Longs)
3
mayFirstHalf
Saisonale Gewichtung, erste Hälfte Mai (null blockiert neue Longs)
1
maySecondHalf
Saisonale Gewichtung, zweite Hälfte Mai (null blockiert neue Longs)
1
junFirstHalf
Saisonale Gewichtung, erste Hälfte Juni (null blockiert neue Longs)
1
junSecondHalf
Saisonale Gewichtung, zweite Hälfte Juni (null blockiert neue Longs)
2
julFirstHalf
Saisonale Gewichtung, erste Hälfte Juli (null blockiert neue Longs)
3
julSecondHalf
Saisonale Gewichtung, zweite Hälfte Juli (null blockiert neue Longs)
2
augFirstHalf
Saisonale Gewichtung, erste Hälfte August (null blockiert neue Longs)
2
augSecondHalf
Saisonale Gewichtung, zweite Hälfte August (null blockiert neue Longs)
3
sepFirstHalf
Saisonale Gewichtung, erste Hälfte September (null blockiert neue Longs)
3
sepSecondHalf
Saisonale Gewichtung, zweite Hälfte September (null blockiert neue Longs)
0
octFirstHalf
Saisonale Gewichtung, erste Hälfte Oktober (null blockiert neue Longs)
3
octSecondHalf
Saisonale Gewichtung, zweite Hälfte Oktober (null blockiert neue Longs)
2
novFirstHalf
Saisonale Gewichtung, erste Hälfte November (null blockiert neue Longs)
1
novSecondHalf
Saisonale Gewichtung, zweite Hälfte November (null blockiert neue Longs)
3
decFirstHalf
Saisonale Gewichtung, erste Hälfte Dezember (null blockiert neue Longs)
3
decSecondHalf
Saisonale Gewichtung, zweite Hälfte Dezember (null blockiert neue Longs)
2

Jeder Durchlauf

Getestete Märkte und Zeiteinheiten

MarktZeiteinheitPFTradesTreffer %NettoMax DD
FTSE 100Bester Durchlauf4 Stunden1.17 1,51455.757,580 EUR-1,646
DAX 40Täglichn/a 34758.219,871 EUR-2,471
GBP/USDTäglichn/a 79955.697,847 USD-7,788
Nasdaq 100Täglichn/a 58550.772,959 EUR-1,721

Charts

Ergebnisse je Durchlauf

NettogewinnMax Drawdown

Der Code

ProBuilder, auf Hausstandard umgeschrieben

// ============================================================
// 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 weitere Zeilen: die Einstiegs- und Ausstiegsregeln.

Setup

So laden Sie es

  1. Kopieren Sie den Code mit der Schaltfläche Kopieren im Codeblock.
  2. Öffnen Sie in ProRealTime einen Chart des Instruments und der Zeiteinheit, die Sie testen möchten, öffnen Sie dann ProOrder > Neues Handelssystem und wählen Sie "Mit Programmierung erstellen".
  3. Fügen Sie den Code ein, geben Sie dem System einen Namen und speichern Sie es.
  4. Klicken Sie auf "Backtest", legen Sie Ihren eigenen Spread und Ihre eigene Position Size fest und lassen Sie sie laufen, bevor Sie erwägen, sie live zu handeln.

Verwendete Indikatoren

ATRADX
Bitte zuerst lesenBekannte Schwächen4 Punkte
  • Es gibt keinen Stop Loss und kein Gewinnziel. Trades enden nur zeitlich, daher läuft eine scharfe Bewegung gegen eine Position, bis die Bar-Anzahl erreicht ist.
  • Der beste Durchlauf auf FTSE 100 4 Stunden hatte einen Profit Factor von 1.17, ein dünner Edge nach Kosten.
  • Auf GBP/USD Täglich entspricht der max Drawdown (USD 7,788) nahezu dem Nettogewinn (USD 7,847.10).
  • Die Originalversion skalierte die Größe nach Saison und ATR. Der getestete Code handelt fest 1 Kontrakt, es ist also eine vereinfachte Version.

Fragen

Über diese Strategie

Ist DAX Survivor ProOrder-kompatibel?

Ja. Der neu gefasste Code wurde noch nicht auf Kompilierfähigkeit geprüft und die veröffentlichten Statistiken stammen aus dem früheren Code, testen Sie ihn daher im Demo, bevor Sie live gehen.

Wie hat sie über die Märkte hinweg abgeschnitten?

FTSE 100 4 Stunden erzielte EUR 7,579.90 über 1,514 Trades. DAX 40 Täglich erzielte EUR 9,870.90, GBP/USD Täglich USD 7,847.10 und Nasdaq 100 Täglich EUR 2,959.40.

Was riskiert 1 Kontrakt?

Der max Drawdown des besten Durchlaufs betrug bei 1 Kontrakt EUR 1,645.70. Da kein Stop vorhanden ist, halten Sie zusätzlichen Spielraum über diesem Wert.

Warum 4-Stunden- und Tagesbars?

Haltedauern von 30 und 5 Bars benötigen langsamere Bars, um einen echten swing zu erfassen. Alle getesteten Zeilen waren 4 Stunden oder Täglich.

Verwandt

Strategien wie diese

ATR Band

Verwendet denselben Indikator.

10.31 PF · 53 Trades

Bollinger Reversal

Bester Durchlauf auf demselben Markt, FTSE 100.

1.74 PF · 117 Trades

Breakout Failures

Ein ähnlicher Profit Factor.

1.17 PF · 911 Trades

Der Regimewechsel ist ein Teil des Puzzles. Treten Sie der ProRealAlgos Warteliste bei, um den Rest zu sehen.

Die ProRealAlgos Community erhält die vollständigen Regeln, den kompletten Code und das automatisierte Portfolio.

Vergangene Backtest-Ergebnisse sind keine Garantie für zukünftige Ergebnisse. Dies ist keine Finanzberatung. Kuratiert und gepflegt von ProRealAlgos. ProRealTime™ ist eine Marke der ProRealTime SAS. prorealalgos.comStatistikDokumentation