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.
Bästa körningen av 4. FTSE 100, 4 timmar, spread 2, från körning pf:2026-09-24-FTSE100-4h.tsv:2.
| Period | Fram till 2026-09-25 |
| Instrument | FTSE 100, 4 timmar |
| Spread | 2 punkter |
| Kontrakt | 1 |
| Startkapital | 1,000,000 |
| Kostnader | Endast spread. Courtage och overnight-finansiering ingår inte. |
| Barer | Upp till 200,000 barer, färre där instrumentet har kortare historik |
| Senast testad | 2026-09-25 |
| 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
| Marknad | Tidsram | PF | Affärer | Träff % | Netto | Max DD |
|---|---|---|---|---|---|---|
| FTSE 100Bästa körning | 4 timmar | 1.17 | 1,514 | 55.75 | 7,580 EUR | -1,646 |
| DAX 40 | Dag | n/a | 347 | 58.21 | 9,871 EUR | -2,471 |
| GBP/USD | Dag | n/a | 799 | 55.69 | 7,847 USD | -7,788 |
| Nasdaq 100 | Dag | n/a | 585 | 50.77 | 2,959 EUR | -1,721 |
Diagram
Koden
// ============================================================ // 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
Frågor
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.
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.
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.
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
ProRealAlgos-communityn får de fullständiga reglerna, den kompletta koden och den automatiserade portföljen.