Indikatoren
Jeder Indikator, den die Regel-Engine kennt, mit seinen Parametern und Ausgabefeldern.
Ein Indikator wird innerhalb eines Leaf als `{indicator: <kind>, ...params}` referenziert. Jede Art liefert ein oder mehrere Ausgabefelder, die du über `field: <name>` ansprichst (lass `field` weg, um das erste Feld zu nehmen). Multi-Timeframe wird über `timeframe: '4h'` auf jedem Indikator unterstützt.
| Art | Parameter | Ausgabefelder | Typische Verwendung |
|---|---|---|---|
| ema | period (>=1) | value | Trendfilter. `ema20 > ema50` für Up-Bias. |
| sma | period (>=1) | value | Wie EMA, aber ohne Glättungs-Memory. |
| rsi | period (default 14, >=2) | value (0–100) | Mean Reversion. `rsi < 30` long, `rsi > 70` short. |
| macd | fast (12), slow (26), signal (9); fast < slow | line, signal, hist | Momentum. `hist crosses_above 0` als Einstieg. |
| bollinger | period (20), std_mult (2.0) | mid, upper, lower | Volatilitäts-Hülle. `close < lower` für Bounce-Einstiege. |
| atr | period (14, >=2) | value | Stop-Distanz-Sizing. `stop = entry - atr14 * 2`. |
| atr_sma | atr_period (default 14), sma_period (default 14) | value (smoothed ATR), atr (raw) | Ruhigere Volatilitätsbasis. `atr14 > atr_sma` = Volatilität steigt. |
| stochastic | period (14), smooth_d (3) | k, d (beide 0–100) | Kreuzung der 20-/80-Linien für Mean Reversion. |
| adx | period (14) | adx, plus_di, minus_di | `adx > 25` = im Trend. Mit `plus_di > minus_di` für Up-Bias kombinieren. |
| vwap | anchor (session/day/week/month/rolling), period (20, nur rolling) | value | Fair-Value-Referenz. `close > vwap` = überdurchschnittlicher Preis. |
| volume_ma | period (20) | value | Breakout-Bestätigung. `volume > volume_ma * 1.5`. |
| donchian | period (default 20, >=2) | upper, lower, mid | Ausbruchskanal. `close > upper` für Ausbruchs-Einstiege; `mid` als Trendreferenz. |
| swing | lookback (1) | last_high, last_low, prev_high, prev_low | Breakout-Einstiege (`close > last_high`) und HH-/HL-Filter. |
| s_trend | lookback (1) | value (-1 / 0 / +1) | Trendregime im SMC-Stil (BOS/CHoCH) — flippt nach zwei Swing-Breakouts derselben Seite. |
| blackflag_fts | atr_period (14), atr_factor (1.6), fib_lookback (8) | trail, extreme, state, fib1, fib2, fib3 | SuperTrend-Variante mit Black Flags modifizierter TR und einer 38,2- / 50- / 61,8-Fib-Pullback-Leiter. |
| super_trend | atr_period (10), factor (3.0) | trail, state | Standard-SuperTrend auf `hl2`. `state == 1` Long-Regime, `state == -1` Short-Regime. |
| trend_magic | cci_period (20), atr_period (5), atr_mult (1.0) | trail, state, cci | CCI-gefilterter ATR-Trailing-Stop. Der Stop zieht in Trendrichtung nach, solange der CCI mit dem Regime übereinstimmt. |
| ema_pullback | ema_fast (100), ema_slow (200), ema_regime (500), atr_period (14), … | long_signal, short_signal, ema_fast, ema_slow, ema_regime, atr, wait_long, wait_short | Zusammengesetztes Long/Short-Einstiegsmodell. `long_signal == 1` für Einstieg bei bestätigtem Rücksetzer. |
| vfi | length (130), coef (0.2), v_coef (2.5), signal (5) | vfi, signal, hist | Volume Flow Indicator. Oszillator — `vfi > 0` Akkumulation, `< 0` Distribution, `hist` für Kreuzungssignale. |
| market_structure | swing_lookback (5) | state, bos_signal, choch_signal, pivot_high, pivot_low, last_pivot_high, last_pivot_low | SMC-Marktstruktur auf Swing-Pivots. `state` = aktuelles Regime, `bos_signal` / `choch_signal` feuern eine Kerze lang. |
| fair_value_gap | min_gap_pct (0.0), expire_bars (0 = nie) | bull_top, bull_bottom, bear_top, bear_bottom, bull_signal, bear_signal, bull_filled, bear_filled | 3-Kerzen-Imbalance mit Fill-Tracking. Mit `bull_signal` bei FVG-Bildung einsteigen, `bull_filled` zur Verfolgung der Mitigation nutzen. |
| order_block | swing_lookback (5), retest_tolerance_pct (0.1) | bull_top, bull_bottom, bear_top, bear_bottom, bull_signal, bear_signal, bull_retest, bear_retest, bull_mitigated, bear_mitigated | Letzte gegenläufige Kerze vor einem BOS. `bull_retest` triggert, wenn der Preis in die Zone zurückkehrt. |
| equal_highs_lows | lookback (10), tolerance_pct (0.05) | eqh_level, eql_level, eqh_signal, eql_signal, eqh_swept, eql_swept | Liquidity-Pool-Erkennung. `eqh_swept` bestätigt einen Stop-Hunt über gleichen Hochs — ein häufiger Reversal-Trigger. |
| prior_period_levels | (keine Parameter — basiert auf dem Kerzen-Zeitstempel) | pdh, pdl, pdo, pdc, pwh, pwl, pwo, pwc, pmh, pml, pmo, pmc | Vortages-/Vorwochen-/Vormonats-H/L/O/C. `close > pdh` für Momentum-Filter auf Bruch des Vortageshochs. |
| premium_discount_zones | trailing_lookback (50) | trailing_top, trailing_bottom, premium_top, premium_bottom, equilibrium_top, equilibrium_bottom, discount_top, discount_bottom, current_zone | Fib-Zonen-Klassifikation der nachlaufenden Range. `current_zone == 'discount'` für SMC-Long-Bias. |
Neuer Indikator-Katalog
Die zehn Indikatoren, die in den Wellen Pine-Port und SMC-Clean-Room hinzugekommen sind. Jede Karte listet Beschreibung, Parameter mit Standardwerten, Ausgabefelder und ein zum Kopieren bereites YAML-Snippet.
Exponential Moving Average (EMA)
emaExponentieller gleitender Durchschnitt — eine Trendlinie, die jüngere Kurse stärker gewichtet und daher schneller dreht als ein SMA. Die Steigung zeigt die Richtung; ein schneller über einem langsamen EMA signalisiert Aufwärtsneigung.
- Parameter:
- period (20)
- Felder:
- value
YAML
leaf:
lhs: { price: close }
op: gt
rhs: { indicator: ema, period: 50, field: value }
dir: longSimple Moving Average (SMA)
smaEinfacher gleitender Durchschnitt — der schlichte Durchschnittsschlusskurs über N Kerzen, eine glatte Trendlinie. Kurs über dem SMA bedeutet Aufwärtsneigung; Kreuzungen zweier SMAs zeigen Trendwechsel.
- Parameter:
- period (20)
- Felder:
- value
YAML
leaf:
lhs: { price: close }
op: gt
rhs: { indicator: sma, period: 200, field: value }
dir: longRelative Strength Index (RSI)
rsiRelative-Stärke-Index — ein Momentum-Oszillator von 0 bis 100. Klassisch: unter 30 überverkauft (Longs suchen), über 70 überkauft (Shorts suchen), 50 als Trend-Drehpunkt.
- Parameter:
- period (14)
- Felder:
- value
YAML
leaf:
lhs: { indicator: rsi, period: 14, field: value }
op: lt
rhs: { value: 30 }
dir: longMACD
macdMoving Average Convergence/Divergence — Momentum aus dem Abstand zwischen schnellem und langsamem EMA. Histogramm-Nulldurchgang oder MACD-Linie kreuzt Signallinie markieren Momentum-Wechsel.
- Parameter:
- fast (12), slow (26), signal (9)
- Felder:
- line, signal, hist, fast_ema, slow_ema
YAML
leaf:
lhs: { indicator: macd, field: hist }
op: crosses_above
rhs: { value: 0 }
dir: longBollinger Bands
bollingerEin gleitender Durchschnitt mit Volatilitätsbändern (± N Standardabweichungen). Berührt der Kurs das untere Band, ist eine Gegenbewegung möglich; die Bandbreite zeigt die Volatilität.
- Parameter:
- period (20), std_mult (2.0)
- Felder:
- mid, upper, lower
YAML
leaf:
lhs: { price: close }
op: lt
rhs: { indicator: bollinger, period: 20, field: lower }
dir: longStochastic Oscillator
stochasticStochastik-Oszillator — die Lage des Schlusskurses in der jüngsten Hoch-Tief-Spanne, als %K und geglättetes %D (0–100). Unter 20 überverkauft, über 80 überkauft; %K kreuzt %D als Einstiegstiming.
- Parameter:
- period (14), smooth_d (3)
- Felder:
- k, d
YAML
leaf:
lhs: { indicator: stochastic, field: k }
op: crosses_above
rhs: { indicator: stochastic, field: d }
dir: longAverage Directional Index (ADX)
adxAverage Directional Index — misst die Trendstärke (nicht die Richtung) von 0 bis 100, mit +DI/−DI für die Richtung. Über ~25 zeigt einen echten Trend; +DI über −DI für Aufwärtsneigung.
- Parameter:
- period (14)
- Felder:
- adx, plus_di, minus_di
YAML
leaf:
lhs: { indicator: adx, period: 14, field: adx }
op: gt
rhs: { value: 25 }
dir: longAverage True Range (ATR)
atrAverage True Range — die durchschnittliche Spannweite einer Kerze, also wie stark sich der Kurs üblicherweise bewegt. Dient vor allem dazu, Stops und Ziele an die Volatilität anzupassen (z. B. Stop = Einstieg − 2×ATR).
- Parameter:
- period (14)
- Felder:
- value
YAML
# ATR is typically used for stop sizing, e.g.
risk:
stop: { anchor: atr, indicator: atr14, mult: 2.0 }ATR (smoothed)
atr_smaEin geglätteter ATR — der einfache gleitende Durchschnitt des ATR — als ruhigere Volatilitätsbasis. Der Vergleich des rohen ATR damit zeigt, ob die Volatilität steigt oder fällt.
- Parameter:
- atr_period (14), sma_period (14)
- Felder:
- value, atr
YAML
leaf:
lhs: { indicator: atr, period: 14, field: value }
op: gt
rhs: { indicator: atr_sma, atr_period: 14, sma_period: 14, field: value }
dir: longVolume-Weighted Average Price (VWAP)
vwapVolumengewichteter Durchschnittspreis — der nach Volumen gewichtete Durchschnittspreis, verankert an Session, Tag, Woche oder Monat. Über dem VWAP dominieren Käufer; ein verbreiteter Fair-Value-Bezug und Mean-Reversion-Magnet.
- Parameter:
- anchor (session), period (20)
- Felder:
- value
YAML
leaf:
lhs: { price: close }
op: gt
rhs: { indicator: vwap, anchor: session, field: value }
dir: longVolume Moving Average
volume_maEin gleitender Durchschnitt des Volumens — die Basislinie für 'normale' Beteiligung. Volumen deutlich über dem Durchschnitt (z. B. 1,5×) bestätigt die Überzeugung hinter einem Ausbruch.
- Parameter:
- period (20)
- Felder:
- value
YAML
leaf:
lhs: { price: volume }
op: gt
rhs: { indicator: volume_ma, period: 20, field: value }
dir: longDonchian Channel
donchianDonchian-Kanal — das höchste Hoch und tiefste Tief der letzten N Kerzen. Ein Schluss über dem oberen Band ist ein klassischer Ausbruchs-Einstieg; die Mittellinie dient als Trendreferenz.
- Parameter:
- period (20)
- Felder:
- upper, lower, mid
YAML
leaf:
lhs: { price: close }
op: gt
rhs: { indicator: donchian, period: 20, field: upper }
dir: longVolume Flow Indicator
vfiMarkos Katsanos' Volume Flow Indicator — ein geglätteter, volumengewichteter Oszillator, der die Vorzeichen über die Nulllinie wechselt, wenn Akkumulation in Distribution übergeht. Kombiniere das Histogramm mit einem Trendfilter für Bestätigungseinstiege.
- Parameter:
- length (130), coef (0.2), vcoef (2.5), signal_length (5), smooth_vfi (false)
- Felder:
- vfi, signal, hist
YAML
leaf:
lhs: { indicator: vfi, length: 130, field: hist }
op: crosses_above
rhs: { value: 0 }
dir: longSwing High / Low
swingJüngste Swing-Pivots — das letzte bestätigte Hoch und Tief sowie das vorige Paar. Bausteine für Ausbruchs-Einstiege (Schluss über dem letzten Hoch) und Higher-High-/Higher-Low-Trendfilter.
- Parameter:
- lookback (1)
- Felder:
- last_high, last_low, prev_high, prev_low
YAML
leaf:
lhs: { price: close }
op: gt
rhs: { indicator: swing, lookback: 5, field: last_high }
dir: longStructural Trend
s_trendStruktureller Trendzustand (+1 auf, −1 ab, 0 neutral) aus bestätigten Swing-Brüchen — er dreht erst nach zwei gleichseitigen Ausbrüchen und filtert so Rauschen. Ein schlanker Regimefilter.
- Parameter:
- lookback (2)
- Felder:
- value
YAML
leaf:
lhs: { indicator: s_trend, lookback: 2, field: value }
op: eq
rhs: { value: 1 }
dir: longSuperTrend
super_trendDer klassische SuperTrend — ATR-bebänderter Trailing-Stop auf hl2. `state` wechselt zwischen +1 und -1 nur bei einem Close jenseits des gegenüberliegenden Bandes.
- Parameter:
- atr_period (10), factor (3.0)
- Felder:
- trail, state
YAML
leaf:
lhs: { indicator: super_trend, atr_period: 10, factor: 3.0, field: state }
op: eq
rhs: { value: 1 }
dir: longTrend Magic
trend_magicCCI-gefilterter ATR-Trailing-Stop. Der Trail zieht nur dann zum Preis nach, wenn der CCI mit der vorherrschenden Richtung übereinstimmt — ruhiger als SuperTrend in der Seitwärtsphase.
- Parameter:
- period (20), atr_period (5), coeff (1.0)
- Felder:
- trail, state, cci
YAML
leaf:
lhs: { bar: close }
op: gt
rhs: { indicator: trend_magic, atr_period: 5, atr_mult: 1.0, field: trail }
dir: longBlack Flag Futures Trading System
blackflag_ftsSuperTrend-Variante von Black Flag. Verwendet eine modifizierte True Range und ergänzt eine dreistufige Fibonacci-Pullback-Leiter (38,2 / 50 / 61,8) für Teil-Mitnahmen oder gestaffelte Wiedereinstiege innerhalb eines laufenden Trends.
- Parameter:
- atr_period (28), atr_factor (5.0), trail_type (modified), fib1 (0.618), fib2 (0.786), fib3 (0.886)
- Felder:
- trail, extreme, state, fib1, fib2, fib3
YAML
leaf:
lhs: { indicator: blackflag_fts, atr_period: 14, atr_factor: 1.6, field: state }
op: eq
rhs: { value: 1 }
dir: longEMA Pullback
ema_pullbackEin vollständiges Long-&-Short-Einstiegsmodell: drei EMAs definieren Trend und Regime, dann wartet es auf einen Rücksetzer (innerhalb Toleranz) und einen ATR-gesteuerten Auslöser, bevor long_signal / short_signal feuert.
- Parameter:
- ema_fast (100), ema_slow (200), ema_regime (500), atr_period (14), atr_sma (50), atr_mult_long (1.0), atr_mult_short (1.5), pullback_tol_pct (0.1), max_wait_bars (50)
- Felder:
- long_signal, short_signal, ema_fast, ema_slow, ema_regime, atr, wait_long, wait_short
YAML
leaf:
lhs: { indicator: ema_pullback, field: long_signal }
op: eq
rhs: { value: 1 }
dir: longMarktstruktur (BOS / CHoCH)
market_structureErkennt Pivots und emittiert bei jedem Pivot-Bruch einen Break of Structure oder einen Change of Character. Das `state`-Feld führt das aktuelle Regime, sodass du es als Stateful-Trendfilter nutzen kannst.
- Parameter:
- swing_length (50)
- Felder:
- state, bos_signal, choch_signal, pivot_high, pivot_low
YAML
leaf:
lhs: { indicator: market_structure, swing_lookback: 5, field: bos_signal }
op: eq
rhs: { value: 1 }
dir: longOrder Block
order_blockLetzte gegenfarbige Kerze vor einem Break of Structure. Der Block bleibt scharf, bis der Preis ihn retestet (`bull_retest`) oder durch ihn hindurchläuft (`bull_mitigated`).
- Parameter:
- swing_length (10)
- Felder:
- bull_top, bull_bottom, bear_top, bear_bottom, bull_signal, bear_signal
YAML
leaf:
lhs: { indicator: order_block, swing_lookback: 5, field: bull_retest }
op: eq
rhs: { value: 1 }
dir: longFair Value Gap (FVG)
fair_value_gap3-Kerzen-Imbalance: eine Lücke zwischen dem Docht von bar[n-2] und dem Docht von bar[n]. Verfolgt die Zone, bis der Preis sie füllt; `bull_signal` feuert bei der Bildung, `bull_filled` feuert, wenn die Lücke geschlossen wird.
- Parameter:
- min_gap_pct (0)
- Felder:
- bull_top, bull_bottom, bear_top, bear_bottom, bull_signal, bear_signal
YAML
leaf:
lhs: { indicator: fair_value_gap, min_gap_pct: 0.1, field: bull_signal }
op: eq
rhs: { value: 1 }
dir: longGleiche Hochs / Tiefs
equal_highs_lowsLiquidity-Pool-Detektor. Markiert ein Level, wenn aufeinanderfolgende Hochs (oder Tiefs) innerhalb von `tolerance_pct` voneinander liegen. `eqh_swept` feuert in der Kerze, in der das Level genommen wird — ein häufiger Stop-Hunt-Reversal-Trigger.
- Parameter:
- swing_length (3), threshold (0.1), atr_period (200)
- Felder:
- eqh_level, eql_level, eqh_signal, eql_signal
YAML
leaf:
lhs: { indicator: equal_highs_lows, lookback: 10, field: eqh_swept }
op: eq
rhs: { value: 1 }
dir: shortVorperioden-Levels (PDH / PDL / PWH / PWL …)
prior_period_levelsOpen / High / Low / Close des Vortages, der Vorwoche und des Vormonats. Wird aus dem Kerzen-Zeitstempel berechnet — keine Parameter. Nützlich für Momentum-Trades auf Bruch der Vorperiode und Mean-Reversion-Trades zum Vortages-Close.
- Parameter:
- none
- Felder:
- pdh, pdl, pwh, pwl, pmh, pml
YAML
leaf:
lhs: { bar: close }
op: gt
rhs: { indicator: prior_period_levels, field: pdh }
dir: longMulti-Timeframe
Füge `timeframe: '4h'` zu einer beliebigen Indikator-Spec hinzu, um sie auf einem höheren Timeframe zu berechnen und den Wert wieder auf die Basis-Bars deiner Strategie zu broadcasten. Die Engine kümmert sich um das Resampling — du schreibst weiterhin Regeln gegen Bars deines gewählten Basis-Intervalls.
Beispiel
leaf:
lhs: { indicator: rsi, period: 14, timeframe: '4h' }
op: lt
rhs: { value: 35 }
dir: longWarmup & NaN-Handling
Indikatoren liefern NaN, bis sie genug Bars haben, um ehrlich zu sein. Ein Leaf, das NaN trägt, gibt False zurück — es wirft keinen Fehler, es enthält sich. Das heißt, neue Strategien können in den ersten N Bars eines Backtests untätig wirken; das ist korrekt.