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`. |
| 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 | period (20, rollendes Fenster) | value | Fair-Value-Referenz. `close > vwap` = überdurchschnittlicher Preis. |
| volume_ma | period (20) | value | Breakout-Bestätigung. `volume > volume_ma * 1.5`. |
| trend | period (50), slope_lookback (5) | value (-1 / 0 / +1) | Kategorialer Trendfilter. `trend == 1` für Aufwärts, `== -1` für Abwärts. |
| 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. |
| s_trend_valid | lookback (1) | value (-1 / 0 / +1) | Wie s_trend, aber jeder Breakout muss vom Close des nächsten Bars bestätigt werden. |
| 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. |
| 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.
Black 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 (14), atr_factor (1.6), fib_lookback (8)
- 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: 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:
- cci_period (20), atr_period (5), atr_mult (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: 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), v_coef (2.5), signal (5)
- Felder:
- vfi, signal, hist
YAML
leaf:
lhs: { indicator: vfi, length: 130, field: hist }
op: crosses_above
rhs: { value: 0 }
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_lookback (5)
- Felder:
- state, bos_signal, choch_signal, pivot_high, pivot_low, last_pivot_high, last_pivot_low
YAML
leaf:
lhs: { indicator: market_structure, swing_lookback: 5, field: bos_signal }
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.0), expire_bars (0 = nie)
- Felder:
- bull_top, bull_bottom, bear_top, bear_bottom, bull_signal, bear_signal, bull_filled, bear_filled
YAML
leaf:
lhs: { indicator: fair_value_gap, min_gap_pct: 0.1, field: bull_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_lookback (5), retest_tolerance_pct (0.1)
- Felder:
- bull_top, bull_bottom, bear_top, bear_bottom, bull_signal, bear_signal, bull_retest, bear_retest, bull_mitigated, bear_mitigated
YAML
leaf:
lhs: { indicator: order_block, swing_lookback: 5, field: bull_retest }
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:
- lookback (10), tolerance_pct (0.05)
- Felder:
- eqh_level, eql_level, eqh_signal, eql_signal, eqh_swept, eql_swept
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:
- (keine)
- Felder:
- pdh, pdl, pdo, pdc, pwh, pwl, pwo, pwc, pmh, pml, pmo, pmc
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.