Ställ dig i kön
Strategier / Volatilitet / DAX Survivor

DAX Survivor

ADX(14) avgör läget. I lugna marknader köper systemet efter en stor nedåtcandle och shortar efter en stor uppåtcandle, och när ADX är hög följer det candlen istället. Long-positioner stängs 30 barer efter den senaste affären och short-positioner efter 5 barer.

VolatilitetLong & shortSwingFTSE 1004 timmar
1.17Profit factor
7,580Nettovinst EUR
55.75%Träffsäkerhet
1,514Affärer
-1,646Max drawdown
5.01Snittaffär

Bästa körningen av 4. FTSE 100, 4 timmar, spread 2, från körning pf:2026-09-24-FTSE100-4h.tsv:2.

Entryregler, long

  1. Breakout-läge: ADX(14) är över 36 och kroppen på en uppåtcandle är större än 1 x ATR(14)
  2. ATR(14) är under 100
  3. Säsongstabellen blockerar inte den aktuella halvmånaden (andra halvan av januari och andra halvan av september är blockerade)

Entryregler, short

  1. Breakout-läge: ADX(14) är över 24 och kroppen på en nedåtcandle är större än 2 x ATR(14)
  2. ATR(14) är under 200

Exitregler

  1. Stäng en short-position 5 barer efter den senaste affären
  2. Ingen stop loss eller vinstmål

Testvillkor

PeriodFram till 2026-09-25
InstrumentFTSE 100, 4 timmar
Spread2 punkter
Kontrakt1
Startkapital1,000,000
KostnaderEndast spread. Courtage och overnight-finansiering ingår inte.
BarerUpp till 200,000 barer, färre där instrumentet har kortare historik
Senast testad2026-09-25
Parametrar (38)
positionSize
Kontrakt per affär
1
atrPeriod
ATR-längd för candlestorlek och volatilitetstak
14
adxPeriod
ADX-längd för regimväxlingen
14
adxLongThreshold
Long: ADX över = breakout-regim, under = mean reversion
36
adxShortThreshold
Short: ADX över = breakout-regim, under = mean reversion
24
atrMaxLong
Inga long-positioner när ATR är på eller över detta
100
atrMaxShort
Inga short-positioner när ATR är på eller över detta
200
longReversionMultiplier
Long efter en nedåtcandle större än så här många ATR
1
longBreakoutMultiplier
Long efter en uppåtcandle större än så här många ATR
1
shortReversionMultiplier
Short efter en uppåtcandle större än så här många ATR
1
shortBreakoutMultiplier
Short efter en nedåtcandle större än så här många ATR
2
maxBarsLong
Stäng en long-position efter så här många barer
30
maxBarsShort
Stäng en short-position efter så här många barer
5
midMonthDay
Dagar upp till detta räknas som första halvan av månaden
15
janFirstHalf
Säsongsvikt, första halvan av januari (noll blockerar nya long-positioner)
3
janSecondHalf
Säsongsvikt, andra halvan av januari (noll blockerar nya long-positioner)
0
febFirstHalf
Säsongsvikt, första halvan av februari (noll blockerar nya long-positioner)
3
febSecondHalf
Säsongsvikt, andra halvan av februari (noll blockerar nya long-positioner)
3
marFirstHalf
Säsongsvikt, första halvan av mars (noll blockerar nya long-positioner)
3
marSecondHalf
Säsongsvikt, andra halvan av mars (noll blockerar nya long-positioner)
2
aprFirstHalf
Säsongsvikt, första halvan av april (noll blockerar nya long-positioner)
3
aprSecondHalf
Säsongsvikt, andra halvan av april (noll blockerar nya long-positioner)
3
mayFirstHalf
Säsongsvikt, första halvan av maj (noll blockerar nya long-positioner)
1
maySecondHalf
Säsongsvikt, andra halvan av maj (noll blockerar nya long-positioner)
1
junFirstHalf
Säsongsvikt, första halvan av juni (noll blockerar nya long-positioner)
1
junSecondHalf
Säsongsvikt, andra halvan av juni (noll blockerar nya long-positioner)
2
julFirstHalf
Säsongsvikt, första halvan av juli (noll blockerar nya long-positioner)
3
julSecondHalf
Säsongsvikt, andra halvan av juli (noll blockerar nya long-positioner)
2
augFirstHalf
Säsongsvikt, första halvan av augusti (noll blockerar nya long-positioner)
2
augSecondHalf
Säsongsvikt, andra halvan av augusti (noll blockerar nya long-positioner)
3
sepFirstHalf
Säsongsvikt, första halvan av september (noll blockerar nya long-positioner)
3
sepSecondHalf
Säsongsvikt, andra halvan av september (noll blockerar nya long-positioner)
0
octFirstHalf
Säsongsvikt, första halvan av oktober (noll blockerar nya long-positioner)
3
octSecondHalf
Säsongsvikt, andra halvan av oktober (noll blockerar nya long-positioner)
2
novFirstHalf
Säsongsvikt, första halvan av november (noll blockerar nya long-positioner)
1
novSecondHalf
Säsongsvikt, andra halvan av november (noll blockerar nya long-positioner)
3
decFirstHalf
Säsongsvikt, första halvan av december (noll blockerar nya long-positioner)
3
decSecondHalf
Säsongsvikt, andra halvan av december (noll blockerar nya long-positioner)
2

Varje körning

Testade marknader och tidsramar

MarknadTidsramPFAffärerTräff %NettoMax DD
FTSE 100Bästa körning4 timmar1.17 1,51455.757,580 EUR-1,646
DAX 40Dagn/a 34758.219,871 EUR-2,471
GBP/USDDagn/a 79955.697,847 USD-7,788
Nasdaq 100Dagn/a 58550.772,959 EUR-1,721

Diagram

Resultat per körning

NettovinstMax drawdown

Koden

ProBuilder, omskriven till husstandard

// ============================================================
// 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 rader till: entry- och exitreglerna.

Uppsättning

Så laddar du in den

  1. Kopiera koden med kopieringsknappen på kodblocket.
  2. I ProRealTime, öppna ett diagram för det instrument och den tidsram du vill testa, öppna sedan ProOrder > Nytt handelssystem och välj "Skapa med programmering".
  3. Klistra in koden, ge systemet ett namn och spara det.
  4. Klicka på "Backtest", ange din egen spread och position size, och kör den innan du överväger att handla den live.

Använda indikatorer

ATRADX
Läs det här förstKända svagheter4 punkter
  • Det finns ingen stop loss eller vinstmål. Affärer avslutas bara på tid, så en skarp rörelse mot en position pågår till barantalet är uppnått.
  • Den bästa körningen på FTSE 100 4 timmar hade en profit factor på 1.17, en tunn edge efter kostnader.
  • På GBP/USD Dag är max drawdown (USD 7,788) nästan lika stor som nettovinsten (USD 7,847.10).
  • Originalversionen skalade storleken efter säsong och ATR. Den testade koden handlar fasta 1 kontrakt, så det är en förenklad version.

Frågor

Om den här strategin

Är DAX Survivor ProOrder-kompatibel?

Ja. Den omskrivna koden har ännu inte kompileringskontrollerats och den publicerade statistiken kommer från den tidigare koden, så testa den i demo innan du går live.

Hur gick det på olika marknader?

FTSE 100 4 timmar gav EUR 7,579.90 över 1,514 affärer. DAX 40 Dag gav EUR 9,870.90, GBP/USD Dag USD 7,847.10 och Nasdaq 100 Dag EUR 2,959.40.

Vad riskerar 1 kontrakt?

Den bästa körningens max drawdown med 1 kontrakt var EUR 1,645.70. Utan någon stop på plats, håll extra marginal över den siffran.

Varför 4-timmesbarer och dagsbarer?

Innehavsperioder på 30 och 5 barer behöver långsammare barer för att fånga en riktig swing. Alla testade rader var 4 timmar eller Dag.

Relaterat

Strategier som den här

ATR Band

Använder samma indikator.

10.31 PF · 53 affärer

Bollinger Reversal

Bästa körning på samma marknad, FTSE 100.

1.74 PF · 117 affärer

Breakout Failures

En liknande profit factor.

1.17 PF · 911 affärer

Regimväxling är en bit av pusslet. Ställ dig i kön till ProRealAlgos för att se resten.

ProRealAlgos-communityn får de fullständiga reglerna, den kompletta koden och den automatiserade portföljen.

Tidigare backtest-resultat är ingen garanti för framtida resultat. Detta är inte finansiell rådgivning. Kurerat och underhållet av ProRealAlgos. ProRealTime™ är ett varumärke som tillhör ProRealTime SAS. prorealalgos.comStatistikDokumentation