Dokumentation

Block-Referenz

Vollständige Referenz aller 70 Blöcke im partiqon-Graph-Editor. Jeder Block hat ein streng typisiertes Socket-System: Number, Bar, Boolean, DateTime. Ungültige Verbindungen werden vor der Ausführung abgelehnt.

Mit tunable markierte Blöcke können der PSO-Optimierung ausgesetzt werden. Alle Indikatoren werden ausschließlich auf geschlossenen Bars berechnet — kein Lookahead-Bias.

Source13 Aggregator8 Indicator21 Gate4 Compare5 Logic4 Math11 Sink4

Source

Rohdaten-Eingaben: Bar-Kurse, Tick-Kurse, Positionszustand, Zeitkonstanten. Source-Blöcke haben keine Eingänge.

Tick Price
Source.Tick.Price
Aktuellste Tick-Bid/Ask/Mid-Kurse aus Live-Daten. Nur verfügbar, wenn der Graph-Timeframe auf TICKS eingestellt ist. Für Bar-basierte Graphs stattdessen Source.Bar.Current verwenden.
bidNumber — für SHORT-Einstiege
midNumber — für Indikatoren
askNumber — für LONG-Einstiege
Current Bar
Source.Bar.Current
Der gerade geschlossene Bar. Die primäre Datenquelle für Bar-basierte Graphs. Nicht verfügbar für Tick-Daten (stattdessen Tick Price → Aggregator verwenden).
barBar — geschlossener OHLCV-Bar
Current Time
Source.Time.Now
Unix-Millisekunden-Timestamp des aktuellen Bar-Schlusses. Direkt in Gate.Session leiten oder mit Source.Constant.DateTime vergleichen, um zeitbedingte Logik zu bauen.
timeDateTime — Unix ms
Constant (Number)
Source.Constant.Number
Eine feste Zahl, die sich bar-zu-bar nicht ändert. Als tunable markieren, um sie der PSO-Optimierung auszusetzen — der Optimierer durchsucht dann den angegebenen Bereich.
valueNumber
valuenumber Standard 0tunable
Constant (Time)
Source.Constant.DateTime
Eine feste Tageszeit in CET (z.B. 09:00). Nützlich für Vergleiche mit Source.Time.Now, um eigene Session-Filter zu bauen.
valueDateTime
hourinteger 0–23, Standard 9
minuteinteger 0–59, Standard 0
Constant (Boolean)
Source.Constant.Boolean
Ein fester Boolean-Wert (true/false). Nützlich, um einen Gate-Zweig vorübergehend zu deaktivieren, ohne neu zu verdrahten.
valueBoolean
valueboolean Standard true
Bar → Field
Source.Bar.Field
Extrahiert ein einzelnes numerisches Feld aus einem Bar-Objekt. Verwenden, um ein bestimmtes Preisfeld (z.B. close) in einen Math- oder Compare-Block zu führen.
barBar
valueNumber
fieldenum open | high | low | close | volume | bid | ask, Standard close
Bars Since Entry
Source.BarsSinceEntry
Anzahl Bars seit Positionseröffnung. Gibt −1 zurück, wenn keine Position offen ist; 0 auf dem Einstiegsbar; 1 auf dem nächsten Bar usw. Mit Compare.GTE für zeitbasierte Ausstiege kombinieren.
valueNumber — −1 wenn flat
High Since Entry
Source.HighSinceEntry
Verfolgt das maximale bar.high seit Positionseröffnung. Gibt 0 zurück, wenn keine Position offen ist. Klassische Verwendung: HighSinceEntry − (ATR × mult)Sink.UpdateStop für einen Chandelier-Trailing-Stop bei Longs.
valueNumber — 0 wenn flat
Low Since Entry
Source.LowSinceEntry
Verfolgt das minimale bar.low seit Positionseröffnung. Gibt 0 zurück, wenn keine Position offen ist. Spiegelbild von High Since Entry für Short-Positionen: LowSinceEntry + (ATR × mult) → Trailing-Stop.
valueNumber — 0 wenn flat
Position Entry Price
Source.PositionEntryPrice
Der Fill-Preis der aktuell offenen Position. Gibt 0 zurück, wenn keine Position offen ist. Verwenden, um Abstand zum Einstieg für Gewinnziel- oder Breakeven-Logik zu berechnen.
valueNumber — 0 wenn flat
Position Stop-Loss
Source.PositionStopLoss
Das aktuelle Stop-Loss-Preisniveau der offenen Position. Gibt 0 zurück, wenn keine Position offen ist. Als Untergrenze in Trailing-Logik verwenden: Math.Max(PositionStopLoss, neuerTrail) verhindert, dass der Stop nach hinten wandert.
valueNumber — 0 wenn flat
Position PnL (points)
Source.PositionPnLPoints
Unrealisierter P&L in Kurspunkten: close − entry für Longs, entry − close für Shorts. Gibt 0 zurück, wenn keine Position offen ist. Mit Compare.GT kombinieren, um Trailing-Stop-Aktivierung zu gaten (z.B. erst ab +20 Punkten Gewinn).
valueNumber — 0 wenn flat

Aggregator

Timeframe-Resampling. Alle Aggregatoren geben ausschließlich den letzten vollständig geschlossenen Bar aus — keine partiellen Bars, kein Lookahead. Ein Bar bleibt stabil bis der nächste schliesst.

Tick→M1 Aggregator
Aggregator.TickToBar.M1
Aggregiert Roh-Tick-Kurse zu 1-Minuten-OHLC-Bars. Source.Tick.Price → mid in price einspeisen, dann Bar-Ausgang an Indikatoren leiten. Nur im Tick-Datenmodus verfügbar.
priceNumber
barBar — fertiggestellter M1-Bar
Tick→M5 Aggregator
Aggregator.TickToBar.M5
Aggregiert Roh-Tick-Kurse zu 5-Minuten-OHLC-Bars. Gleiche Semantik wie Tick→M1, jedoch mit 5-Minuten-Granularität.
priceNumber
barBar — fertiggestellter M5-Bar
M1 Aggregator
Aggregator.M1
Pass-through für M1-Bars. Ausgang ist identisch mit dem Eingang. Für Graph-Symmetrie beim Mischen von M1- und höheren Timeframe-Aggregatoren im selben Graph.
barBar
M5 Aggregator
Aggregator.M5
Resampled feinere Bars (z.B. M1) auf M5. Ausgang ändert sich nur beim Schluss eines neuen M5-Bars — stabil während der M5-Periode.
barBar
barBar — letzter geschlossener M5-Bar
M15 Aggregator
Aggregator.M15
Resampled feinere Bars auf M15. Für Multi-Timeframe-Setups: z.B. M5-Graph, der Einstiege über M15-EMA-Slope filtert.
barBar
barBar — letzter geschlossener M15-Bar
M30 Aggregator
Aggregator.M30
Resampled feinere Bars auf M30. Kein Lookahead — Ausgang ist beim letzten abgeschlossenen M30-Bar eingefroren.
barBar
barBar — letzter geschlossener M30-Bar
M60 (H1) Aggregator
Aggregator.M60
Resampled feinere Bars auf 60-Minuten- (H1-) Bars. Stabil während der Stunde; gibt neuen Bar bei jedem H1-Schluss aus.
barBar
barBar — letzter geschlossener H1-Bar
Daily (D1) Aggregator
Aggregator.D1
Resampled Intraday-Bars auf Tagesbars (Tagesgrenze UTC+1 Mitternacht). Gibt den letzten abgeschlossenen Tagesbar aus — stabil den ganzen Tag. Mit Indicator.EMA für einen sauberen Tages-Trendfilter verwenden.
barBar
barBar — letzter geschlossener Tagesbar

Indicator

Technische Indikatoren, berechnet auf geschlossenen Bars. Alle geben 0 zurück, bis genug Historie vorhanden ist. Formeln in Standardnotation: N = Periode, t = aktueller Bar.

EMA
Indicator.EMA
Exponential Moving Average. Gewichtet aktuelle Schlusskurse stärker als ältere. Der Glättungsfaktor α bestimmt die Abklingrate.
α = 2 / (N + 1) EMA[t] = close[t] × Î± + EMA[t-1] × (1 - α) Start: EMA[N-1] = SMA der ersten N Schlusskurse
bar →Bar
value ←Number
periodinteger 2–500, Standard 20tunable
SMA
Indicator.SMA
Simple Moving Average. Arithmetisches Mittel der letzten N Schlusskurse. Reagiert langsamer als EMA — gut für stabile Trendfilter und Bollinger-Band-Mittellinie.
SMA[t] = (close[t] + close[t-1] + … + close[t-N+1]) / N
bar →Bar
value ←Number
periodinteger 2–500, Standard 20tunable
ATR
Indicator.ATR
Average True Range. Richtungsfreies Volatilitätsmaß. Die True Range erfasst das Maximum aus aktuellem Kerzenkörper, Gap-Up und Gap-Down gegenüber dem vorherigen Schlusskurs. ATR ist der Wilder-geglättete Durchschnitt davon.
TR[t] = max(high[t] − low[t], |high[t] − close[t-1]|, |low[t] − close[t-1]|) ATR[t] = (ATR[t-1] × (N-1) + TR[t]) / N (Wilder-Glättung) Start: ATR[N-1] = Mittelwert(TR[0..N-1])
bar →Bar
value ←Number
periodinteger 2–200, Standard 14
RSI
Indicator.RSI
Relative Strength Index (0–100). Misst Momentum durch Vergleich von durchschnittlichen Gewinnen und Verlusten mit Wilder-Glättung. Klassische Schwellenwerte: <30 überverkauft (Long-Signal), >70 überkauft (Short-Signal).
ΔC[t] = close[t] − close[t-1] Gain[t] = max(ΔC, 0), Loss[t] = max(−ΔC, 0) AvgGain / AvgLoss: Wilder-EMA(N) von Gain / Loss RS = AvgGain / AvgLoss RSI = 100 − 100 / (1 + RS)
bar →Bar
value ←Number 0–100
periodinteger 2–100, Standard 14
ADX
Indicator.ADX
Average Directional Index (0–100). Misst die Stärke eines Trends unabhängig von der Richtung. ADX >25 = starker Trend; ADX <20 = kein Trend / Range. Berechnet intern +DI und −DI, gibt aber nur ADX aus.
+DM = high[t] − high[t-1] wenn > 0 sonst 0 (und > −DM) −DM = low[t-1] − low[t] wenn > 0 sonst 0 (und > +DM) +DM, −DM, TR mit Wilder-EMA(N) glätten +DI = 100 × Glatt(+DM) / ATR(N) −DI = 100 × Glatt(−DM) / ATR(N) DX = 100 × |+DI − −DI| / (+DI + −DI) ADX = Wilder-EMA(DX, N)
bar →Bar
value ←Number 0–100
periodinteger 2–100, Standard 14
VWAP
Indicator.VWAP
Volume Weighted Average Price. Setzt täglich zurück (UTC+1 Mitternacht). Repräsentiert den volumengewichteten „fairen Kurs" des Tages. Kehrt am Sitzungsbeginn auf 0 zurück, bis der erste Bar eintrifft.
TP[t] = (high[t] + low[t] + close[t]) / 3 VWAP[t] = Σ(TP[i] × vol[i], i=Sitzungsbeginn..t) / Σ(vol[i], i=Sitzungsbeginn..t) Zurücksetzen: täglich um UTC+1 Mitternacht
bar →Bar
value ←Number
Stochastic
Indicator.Stochastic
Stochastik-Oszillator (0–100). %K misst, wo der Schlusskurs innerhalb der jüngsten High-Low-Spanne liegt; %D glättet %K. Extreme (<20 überverkauft, >80 überkauft) signalisieren Umkehrungen; %K/%D-Kreuzungen zeigen Momentum-Shifts an.
%K[t] = 100 × (close[t] − Tiefst(low, k_period)) / (Höchst(high, k_period) − Tiefst(low, k_period)) %D[t] = SMA(%K, d_period)
bar →Bar
k ←Number schnelle Stochastik 0–100
d ←Number Signallinie 0–100
k_periodinteger 2–100, Standard 14
d_periodinteger 1–50, Standard 3
Bollinger Bands
Indicator.BollingerBands
Volatilitätsbänder: SMA ± σ × Standardabweichung. Kurs am unteren Band = statistisch extrem günstig (Long-MR-Einstieg). Squeeze (enge Bänder) = Volatilitätskompression, oft vor Ausbruch.
Middle = SMA(close, N) σ_std = Populations-Standardabweichung von close über N Bars Upper = Middle + sigma × Ïƒ_std Lower = Middle − sigma × Ïƒ_std
bar →Bar
upper / middle / lower ←Number
periodinteger 2–500, Standard 20
sigmanumber 0.1–5.0, Standard 2.0
Highest(N)
Indicator.Highest
Rollierendes Maximum eines Bar-Feldes über die letzten N Bars (aktueller Bar eingeschlossen). Für Donchian-artige Ausbruchsniveaus oder Widerstandserkennung.
Highest[t] = max(field[t], field[t-1], …, field[t-N+1])
bar →Bar
value ←Number
periodinteger 2–500, Standard 20
fieldenum open|high|low|close, Standard high
Lowest(N)
Indicator.Lowest
Rollierendes Minimum eines Bar-Feldes über die letzten N Bars. Spiegelbild von Highest(N) — für Donchian-Unterstützungsniveaus oder Einstiegs-Trigger unterhalb von jüngsten Tiefs.
Lowest[t] = min(field[t], field[t-1], …, field[t-N+1])
bar →Bar
value ←Number
periodinteger 2–500, Standard 20
fieldenum open|high|low|close, Standard low
Consecutive Up/Down Bars
Indicator.ConsecutiveBars
Zählt die aktuelle Serie aufeinanderfolgender Bars mit steigendem/fallendem Schlusskurs. Der Gegenzähler wird bei einem Richtungswechsel auf 0 zurückgesetzt. Für Streak-Umkehrungs-Einstiege: z.B. 4+ fallende Bars → Long-Fade.
wenn close[t] > close[t-1]: up_count += 1; down_count = 0 wenn close[t] < close[t-1]: down_count += 1; up_count = 0
bar →Bar
up_count ←Number setzt bei Down-Bar auf 0 zurück
down_count ←Number setzt bei Up-Bar auf 0 zurück
Swing High
Indicator.SwingHigh
Erkennt bestätigte Pivot-Hochs mit einem N-Bar-Fraktal: bar[t].high muss das Maximum von bar[t-N..t+N] sein. Da N Bars der rechten Seite abschließen müssen, löst das Signal N Bars nach dem eigentlichen Pivot aus — kein Lookahead-Bias. confirmed als Einstiegs-Trigger für Breakout-Retest- oder Pivot-Fade-Strategien verwenden.
Pivot bei bar[p] wenn: high[p] = max(high[p-N .. p+N]) Bestätigung bei bar[p+N] (rechte Seite vollständig) price = high[p] (gehalten bis zum nächsten Pivot)
bar →Bar
price ←Number letztes bestätigtes Swing-High-Niveau
confirmed ←Boolean nur auf dem Bestätigungs-Bar true
lookbackinteger 1–50, Standard 5tunable
Swing Low
Indicator.SwingLow
Spiegelbild von Swing High für Pivot-Tiefs. Löst N Bars nach dem eigentlichen Tiefpunkt aus, sobald N Bars der rechten Seite das Minimum bestätigt haben. price als strukturellen Stop-Anker oder confirmed als Gegentrend-Einstiegs-Trigger verwenden.
Pivot bei bar[p] wenn: low[p] = min(low[p-N .. p+N]) Bestätigung bei bar[p+N] price = low[p] (gehalten bis zum nächsten Pivot)
bar →Bar
price ←Number letztes bestätigtes Swing-Low-Niveau
confirmed ←Boolean nur auf dem Bestätigungs-Bar true
lookbackinteger 1–50, Standard 5tunable
MACD
Indicator.MACD
Moving Average Convergence Divergence. Klassischer Momentum-Indikator: Die MACD-Linie misst den Abstand zweier EMAs. Die Signallinie ist eine EMA des MACD. Das Histogramm macht Divergenzen sichtbar. CrossesAbove(macd, signal) für Einstiegssignale oder Vorzeichen-Wechsel des Histogramms für Momentum-Shifts verwenden.
MACD[t] = EMA(close, fast) − EMA(close, slow) signal[t] = EMA(MACD, signal_period) histogram[t] = MACD[t] − signal[t] Positives Histogramm → aufwärts aufbauendes Momentum
bar →Bar
macd ←Number MACD-Linie
signal ←Number Signallinie
histogram ←Number MACD − Signal
fast_periodinteger 2–200, Standard 12
slow_periodinteger 5–500, Standard 26
signal_periodinteger 2–100, Standard 9
Efficiency Ratio (ER)
Indicator.EfficiencyRatio
Kaufman Efficiency Ratio. Teilt die Netto-Kursbewegung über N Bars durch die Gesamt-Pfadlänge (Summe absoluter Bar-zu-Bar-Änderungen). ER → 1,0 = sauberer Trend; ER → 0,0 = Rauschen/Range. DAX-Forschung: 78,5 % der Tage haben ER < 0,15. Compare.GT(er, 0,4) für Trend-Strategien, Compare.LT(er, 0,15) für Mean-Reversion-Strategien.
direction = |close[t] − close[t-N]| noise = Σ |close[i] − close[i-1]| für i = t-N+1 .. t ER[t] = direction / noise (Bereich 0,0–1,0) Gibt 0 zurück bis N+1 Bars verfügbar sind
bar →Bar
value ←Number 0,0–1,0
periodinteger 2–500, Standard 20tunable
Keltner Channel
Indicator.KeltnerChannel
ATR-basierter Volatilitätsumschlag um eine EMA. Im Gegensatz zu Bollinger Bands (Standardabweichungs-basiert) bleibt der Kanal in Range-Märkten enger und weitet sich während Trends aus — besser für Fade-MR-Einstiege. Squeeze (BB innerhalb Keltner) signalisiert bevorstehende Volatilitätsexpansion.
middle = EMA(close, ema_period) upper = middle + mult × ATR(atr_period) lower = middle − mult × ATR(atr_period)
bar →Bar
upper / middle / lower ←Number
ema_periodinteger 2–500, Standard 20tunable
atr_periodinteger 2–200, Standard 14
multnumber 0.1–10.0, Standard 2.0tunable
Z-Score
Indicator.ZScore
Rollierender statistischer Z-Score von bar.close im Verhältnis zu seinem jüngsten Mittelwert und seiner Standardabweichung. Z < −2 = statistisch günstig (Long-MR-Einstieg); Z > +2 = statistisch teuer (Short-MR-Einstieg).
mean[t] = SMA(close, N) std[t] = Populations-Standardabweichung von close über N Bars Z[t] = (close[t] − mean[t]) / std[t] Gibt 0 zurück bis N Bars vorhanden. std=0 → Z=0.
bar →Bar
value ←Number typischer Bereich ±1,5 bis ±3,0
periodinteger 2–500, Standard 20tunable
Pivot Points
Indicator.PivotPoints
Klassische Floor-Pivot-Punkte, berechnet aus dem Vortags-H/L/C (UTC+1). Alle 7 Niveaus werden einmal täglich aktualisiert und sind intraday stabil. Gibt 0 für alle Ausgänge zurück, bis der erste vollständige Handelstag abgeschlossen ist.
P = (prev_H + prev_L + prev_C) / 3 R1 = 2P − prev_L R2 = P + (prev_H − prev_L) R3 = prev_H + 2 × (P − prev_L) S1 = 2P − prev_H S2 = P − (prev_H − prev_L) S3 = prev_L − 2 × (prev_H − P)
bar →Bar
p ←Number Pivot-Punkt
r1, r2, r3 ←Number Widerstandsniveaus 1–3
s1, s2, s3 ←Number Unterstützungsniveaus 1–3
Support & Resistance
Indicator.SupportResistance
Kombiniertes Strukturniveau-Modell. Kombiniert Pivot-Fraktale, Sitzungshoch/-tief, Vortages-H/L, Overnight-Range, Wochenhochs/-tiefs, Opening Range und runde Zahlen. Niveaus innerhalb von merge_zone_pts werden zusammengeführt. Proximity-Gates verwenden ATR-Vielfache, um die „Touch Zone" zu definieren.
Niveauquellen: • N-Bar Pivot-Fraktal-Hochs/-Tiefs (pivot_lookback) • Sitzungshoch/-tief (Zurücksetzen bei session_open_hour) • Vorheriger Kalendertag H/L • Overnight-Range H/L (22:00–overnight_end_hour CET) • Wochentliche Mo–Fr H/L • Opening Range H/L (erste or_duration_minutes) • Runde Zahlen (alle round_number_step Punkte) Zusammenführen: Niveaus innerhalb merge_zone_pts → ein Niveau at_support = dist_support ≤ touch_zone_atr_mult × ATR
barBar
atr_valueNumber von Indicator.ATR
support / resistanceNumber nächstes Strukturniveau
dist_support / dist_resistanceNumber ATR-Einheiten
at_support / at_resistanceBoolean Proximity-Gate
session_high, session_lowNumber
prev_day_high, prev_day_lowNumber
overnight_high, overnight_lowNumber
weekly_high, weekly_lowNumber
or_high, or_lowNumber Opening Range
or_completeBoolean OR-Fenster geschlossen
pivot_lookbackinteger 3–50, Standard 10tunable
touch_zone_atr_multnumber 0.1–2.0, Standard 0.5tunable
merge_zone_ptsnumber 1–50, Standard 5tunable
round_number_stepnumber 10–1000, Standard 100
session_open_hourinteger 0–23, Standard 8
or_duration_minutesinteger 5–120, Standard 30tunable
Second Attempt
Indicator.SecondAttempt
Löst is_second_attempt=true auf dem Bar aus, an dem der Kurs nach einem sauberen Pullback das Niveau zum zweiten Mal anfährt. SupportResistance.support in level einspeisen. Der zweite Versuch ist statistisch stärker — schwache Stops wurden beim ersten Versuch bereits herausgeholt.
Zustandsmaschine pro Niveau: RUHEND → BERÜHRUNG (close innerhalb Touch-Zone) BERÜHRUNG → PULLBACK (mindestens pullback_min_atr wegbewegt) PULLBACK → BERÜHRUNG (zweiter Anlauf) → is_second_attempt = true (löst einmal aus) attempt_count erhöht sich bei jedem Anlauf max_bars_between: setzt Zustand zurück, wenn zu viel Zeit vergeht
bar →Bar
level →Number z.B. SupportResistance.support
atr →Number
is_second_attempt ←Boolean
attempt_count ←Number
is_supportboolean Standard true
pullback_min_atrnumber 0.1–3.0, Standard 0.5tunable
max_bars_betweeninteger 3–100, Standard 20tunable
Break + Retest
Indicator.LevelBreakRetest
Erkennt einen bestätigten Niveaudurchbruch (Schlusskurs N×ATR jenseits des Niveaus) und wartet dann auf einen Retest von der neuen Seite. is_retest_long löst aus, wenn ehemaliger Widerstand zur neuen Unterstützung wird. is_retest_short löst aus, wenn ehemalige Unterstützung zum neuen Widerstand wird. is_breakout bleibt true, während auf den Retest gewartet wird.
Durchbruch bestätigt: close > level + break_atr_mult × ATR (aufwärts) → is_breakout = true, broken_level = level Retest (long): close < broken_level + touch_zone_atr_mult × ATR → is_retest_long = true (löst einmal aus) Zustand setzt zurück, wenn max_retest_bars überschritten
bar →Bar
level →Number
atr →Number
is_breakout ←Boolean true während Wartezeit auf Retest
is_retest_long ←Boolean einmal auf Long-Retest-Bar
is_retest_short ←Boolean einmal auf Short-Retest-Bar
broken_level ←Number
break_atr_multnumber 0.1–2.0, Standard 0.3tunable
touch_zone_atr_multnumber 0.1–2.0, Standard 0.5tunable
max_retest_barsinteger 3–60, Standard 15tunable

Gate

Einstiegsfilter und Regime-Klassifikation. Gate-Blöcke steuern, wann Trades erlaubt sind — basierend auf Tageszeit, Trend, Volatilität oder Marktregime. Gate-Ausgänge in Logic.And mit Eintrittsbedingungen verketten.

Session Filter
Gate.Session
True, wenn der Timestamp des aktuellen Bars innerhalb des konfigurierten CET-Zeitfensters liegt. Sperrt Einstiege außerhalb der Handelszeiten oder in Phasen geringer Liquidität.
bar →Bar
allowed ←Boolean
start_hourinteger 0–23, Standard 7
start_minuteinteger 0–59, Standard 0
end_hourinteger 0–23, Standard 20
end_minuteinteger 0–59, Standard 0
use_cetboolean Standard true
Trend Gate
Gate.TrendGate
Sperrt LONG-Einstiege, wenn der ATR-normalisierte EMA-Slope einen starken Abwärtstrend anzeigt. Für Mean-Reversion-Strategien gedacht, die keinen starken Abwärtstrend kontern sollen. Der slope-Ausgang ist für weitere Gatings oder Plot verfügbar.
slope[t] = (EMA[t] − EMA[t − slope_lookback]) / (ATR[t] × slope_lookback) (ATR-normalisiert) allow_long = slope[t] ≥ block_long_below_slope
bar →Bar
allow_long ←Boolean
slope ←Number + = Aufwärtstrend, − = Abwärtstrend
ema_periodinteger 5–500, Standard 50
atr_periodinteger 2–200, Standard 14
slope_lookbackinteger 2–200, Standard 12
block_long_below_slopenumber −5.0–5.0, Standard −0.5tunable
Volatility Gate
Gate.VolatilityGate
Sperrt ALLE Einstiege, wenn der ATR-Perzentilrang (rollierendes Ranking) die Schwelle überschreitet. Verhindert Handel bei extremen Volatilitätsspitzen (z.B. Flash Crashes, Makrodatenveröffentlichungen). Der percentile-Ausgang zeigt den rollierenden Rang 0–1.
atr_history = rollierendes Fenster von ATR(atr_period)-Werten percentile[t] = Rang von ATR[t] in atr_history / len(atr_history) (0=kleinstes, 1=größtes) allow_entry = percentile[t] ≤ block_above_percentile
bar →Bar
allow_entry ←Boolean
percentile ←Number 0–1 ATR-Rang
atr_periodinteger 2–200, Standard 14
percentile_windowinteger 100–20000, Standard 2000
block_above_percentilenumber 0.0–1.0, Standard 0.80tunable
Regime Filter
Gate.RegimeFilter
Klassifiziert den Markt in vier sich gegenseitig ausschließende Regime anhand eines Mehr-Signal-Modells. Jedes Regime ist als Boolean-Ausgang verfügbar, damit unterschiedliche Strategie-Logik ans passende Regime geknüpft werden kann.
Verwendete Eingaben: EMA(fast) / EMA(slow) Slope + Separation ATR-Perzentil (rollierend) Range-Kompressionsverhältnis (aktuell vs. historisch) Regime: TRENDING = |slope| ≥ min_slope UND sep ≥ min_sep UND ATR ≥ min_atr_for_trending MEAN_REVERTING = |slope| ≤ max_slope UND atr_pct ≤ max_pct BREAKOUT = range_compression ≤ bo_min_range_compression UND ATR ≥ min_atr_for_breakout NEUTRAL = keines der obigen Alle erfordern min_bars_in_regime aufeinanderfolgende Bars
bar →Bar
is_trending ←Boolean
is_mean_reverting ←Boolean
is_breakout ←Boolean
is_neutral ←Boolean
ema_fast_periodinteger Standard 20   ema_slow_periodinteger Standard 50
trending_min_ema_slopenumber Standard 0.3tunable
trending_min_ema_separationnumber Standard 0.15tunable
mr_max_ema_slopenumber Standard 0.15tunable
mr_max_atr_percentilenumber Standard 0.4tunable
min_atr_for_trendingnumber Standard 15.0tunable
min_atr_for_breakoutnumber Standard 12.0tunable

Compare

Numerische Vergleichsoperatoren. Zwei Number-Eingänge → ein Boolean-Ausgang. Alle Blöcke haben Eingänge a und b (Number) und Ausgang value (Boolean).

BlockTypLogikHinweise
a > bCompare.GTtrue wenn a > bstreng, keine Toleranz
a ≥ bCompare.GTEtrue wenn a ≥ b
a < bCompare.LTtrue wenn a < bstreng
a ≤ bCompare.LTEtrue wenn a ≤ b
a ≈ bCompare.EQ|a − b| < εParameter epsilon, Standard 1e-9

Logic

Boolesche Logikgatter zum Kombinieren von Bedingungen. AND/OR/NOT haben keine Parameter. IF-THEN-ELSE überbrückt Boolean-Bedingungen zu numerischen Werten.

BlockTypEingängeAusgangLogik
ANDLogic.Anda, b (Boolean)Booleana UND b
ORLogic.Ora, b (Boolean)Booleana ODER b
NOTLogic.Nota (Boolean)BooleanNICHT a
IF-THEN-ELSELogic.IfThenElsecondition (Bool), value_if_true, value_if_false (Number)Numbercondition ? a : b

Logic.And zum Kombinieren von Gate-Bedingungen (Session AND Regime AND Eintrittssignal) verwenden. Logic.IfThenElse zum Auswählen zwischen zwei Stop-Distanzen basierend auf einer Bedingung oder zum Implementieren einer Breakeven-Schutzlogik.

Math

Arithmetische Operationen auf Number-Streams. Die meisten haben zwei Number-Eingänge und einen Number-Ausgang. Kreuzungsblöcke geben Boolean aus. Rolling-Blöcke arbeiten über ein Historiefenster.

BlockTypFormel / Hinweise
a + bMath.Addvalue = a + b
a − bMath.Subvalue = a − b. Anwendung: HighSinceEntry − ATR×mult für Trailing
a × bMath.Mulvalue = a × b. Anwendung: ATR × Konstante für dynamisches Stop-Sizing
a ÷ bMath.Divvalue = a / b. Gibt 0 zurück wenn |b| < 1e-12 (verhindert NaN-Propagation)
|a|Math.AbsBetrag von a. Einzelner Eingang.
min(a,b)Math.Minvalue = min(a, b)
max(a,b)Math.Maxvalue = max(a, b). Anwendung: max(PositionStopLoss, neuerTrail) = Stop nur enger ziehen
a crosses above bMath.CrossesAbovetrue nur auf dem Bar, wo a von ≤ b nach > b wechselt (prev_a ≤ b UND a > b)
a crosses below bMath.CrossesBelowtrue nur auf dem Bar, wo a von ≥ b nach < b wechselt
Rolling SMAMath.RollingSMASMA eines Upstream-Number-Streams über param period (2–1000, Standard 20)tunable. Eingang: value. z.B. SMA(ATR, 50)
Lag(N)Math.LagGibt den Upstream-Wert von N Bars zuvor zurück (param period 1–500, Standard 1). Gibt 0 zurück bis N+1 Werte gesehen wurden

Math.CrossesAbove / Math.CrossesBelow geben Boolean aus. Alle anderen Math-Blöcke geben Number aus. Rolling SMA und Lag nehmen einen einzelnen Number-Eingang namens value; alle anderen nehmen a (und b wo zutreffend).

Sink

Ausgabe-Blöcke, die mit dem Positions-Manager interagieren. Sinks haben keine Ausgänge — sie lösen Seiteneffekte aus (Positionen öffnen, schließen, Stops verschieben).

Entry LONG
Sink.Entry.Long
Öffnet eine LONG-Position, wenn trigger true und keine Position offen ist. SL- und TP-Abstände werden beim Auslösen erfasst und ab dem tatsächlichen Fill-Preis gemessen. entry_price nicht verbinden oder auf 0 setzen für eine Market-Order.
triggerBoolean Einstieg bei true wenn flat
stop_loss_distanceNumber Punkte unter Fill-Preis
take_profit_distanceNumber Punkte über Fill-Preis
entry_priceNumber optional: Limit-Preis; 0 = Market
reasonstring Standard "graph_long"
Entry SHORT
Sink.Entry.Short
Öffnet eine SHORT-Position, wenn trigger true und keine Position offen ist. SL- und TP-Abstände werden für die SHORT-Richtung automatisch angepasst.
triggerBoolean Einstieg bei true wenn flat
stop_loss_distanceNumber Punkte über Fill-Preis
take_profit_distanceNumber Punkte unter Fill-Preis
entry_priceNumber optional: Limit-Preis; 0 = Market
reasonstring Standard "graph_short"
Exit
Sink.Exit
Schließt die offene Position, wenn trigger true ist. side_filter begrenzt die Anwendung auf LONG, SHORT oder ANY — nützlich, wenn separate LONG- und SHORT-Ausstiegsbedingungen an separate Exit-Blöcke verdrahtet sind.
triggerBoolean
side_filterenum ANY | LONG | SHORT, Standard ANY
reasonstring Standard "graph_exit"
Update Stop-Loss
Sink.UpdateStop
Verschiebt den Stop der offenen Position auf den absoluten Preis value, wenn trigger true ist. Zieht den Stop nur enger — weitet ihn niemals aus (hebt Stop bei Longs, senkt bei Shorts). Verhindert, dass Trailing-Stop-Logik den Stop versehentlich vom Trade wegbewegt.
Für LONG: neuer Stop nur angewendet wenn value > aktueller Stop Für SHORT: neuer Stop nur angewendet wenn value < aktueller Stop Typisches Muster: HighSinceEntry → Sub(ATR×mult) → Max(PositionStopLoss, …) → UpdateStop
triggerBoolean löst nur aus, wenn Position offen
valueNumber neues absolutes Stop-Preisniveau
side_filterenum ANY | LONG | SHORT, Standard ANY