Formeln
Mit Formeln können Sie benutzerdefinierte berechnete Datenreihen aus Chart-Metriken erstellen. Kombinieren, transformieren und analysieren Sie Metriken mithilfe arithmetischer Operatoren und integrierter Funktionen.
Eine Formel hinzufügen
- Öffnen Sie einen Chart im Bearbeitungsmodus
- Klicken Sie auf die Schaltfläche + Hinzufügen und wählen Sie dann Formel hinzufügen
- Geben Sie eine Bezeichnung ein (z. B. „7-Tage-SMA des Preises“)
- Geben Sie einen Ausdruck ein (z. B.
sma(m1, 7)) - Klicken Sie auf Formel hinzufügen
Das Formelergebnis erscheint als neue Datenreihe im Chart mit eigener Farbe und eigenem Stil.
Syntax
Metrik- und Formelverweise
m1,m2, … verweisen anhand der Position auf Chart-Metriken (erste Metrik = m1)f1,f2, … verweisen anhand der Position auf vorhergehende Formeln (erste Formel = f1)
Formeln werden der Reihe nach ausgewertet, sodass f2 auf f1 verweisen kann, aber nicht umgekehrt.
Arithmetische Operatoren
Standardoperatoren mit üblicher Rangfolge (* und / vor + und -):
m1 + m2 # Addition
m1 - m2 # Subtraction
m1 * m2 # Multiplication
m1 / m2 # Division (returns null if divisor is 0)
(m1 + m2) * m3 # Parentheses for grouping
Zahlen und horizontale Linien
In Ausdrücken können konstante Werte verwendet werden. Eine eigenständige Zahl zeichnet eine horizontale Linie bei diesem Wert:
42000 # Horizontal line at 42,000
m1 * 100 # Scale a metric
m1 / 1000000 # Convert to millions
0.5 # Horizontal line at 0.5 (useful as threshold)
Funktionen
Gleitende Durchschnitte & rollierende Statistiken
| Funktion | Syntax | Beschreibung |
|---|---|---|
sma | sma(series, period) | Einfacher gleitender Durchschnitt — arithmetisches Mittel über die letzten N Datenpunkte |
ema | ema(series, period) | Exponentieller gleitender Durchschnitt — EMA_t = value_t × k + EMA_(t-1) × (1 - k), wobei k = 2 / (period + 1). Gewichtet jüngere Werte stärker |
median | median(series, period) | Rollierender Median (mittlerer Wert) über N Perioden |
sum | sum(series, period) | Rollierende Summe über die letzten N Perioden |
std | std(series, period) | Rollierende Standardabweichung über N Perioden |
Kumulative Funktionen
Funktionen mit expandierendem Fenster, die alle Daten vom Beginn bis zu jedem Punkt verwenden:
| Funktion | Syntax | Beschreibung |
|---|---|---|
cumsum | cumsum(series) | Expandierende kumulative Summe ab Datenbeginn |
cummean | cummean(series) | Expandierender kumulativer Mittelwert ab Datenbeginn |
cummedian | cummedian(series) | Expandierender kumulativer Median ab Datenbeginn |
cumstd | cumstd(series) | Expandierende kumulative Standardabweichung ab Datenbeginn |
cummax | cummax(series) | Kumulatives Allzeithoch bis zu jedem Punkt |
cummin | cummin(series) | Kumulatives Allzeittief bis zu jedem Punkt |
Änderungsfunktionen
| Funktion | Syntax | Beschreibung |
|---|---|---|
percent_change | percent_change(series, period) | Prozentuale Änderung über N Perioden. Werte werden als Dezimalzahlen zurückgegeben (z. B. 0,20 = +20 % Wachstum) |
diff | diff(series, period) | Absolute Wertänderung über N Perioden: value_t - value_(t-N) |
Mathematische Funktionen
| Funktion | Syntax | Beschreibung |
|---|---|---|
abs | abs(series) | Absolutwert aller Datenpunkte |
pow | pow(series, n) | Alle Datenpunkte mit der Potenz n potenzieren |
log | log(series) | Logarithmus zur Basis 10 (gibt null für nicht-positive Werte zurück) |
round | round(series, digits) | Werte auf N Dezimalstellen runden |
max | max(a, b, ...) | Punktweises Maximum — gibt an jedem Datenpunkt den höchsten Wert unter allen Argumenten zurück. Argumente können Datenreihen oder Konstanten sein, z. B. max(m1, m2, 0) |
min | min(a, b, ...) | Punktweises Minimum — gibt an jedem Datenpunkt den niedrigsten Wert unter allen Argumenten zurück. Argumente können Datenreihen oder Konstanten sein, z. B. min(m1, m2, 100) |
Technische Indikatoren
| Funktion | Syntax | Beschreibung |
|---|---|---|
rsi | rsi(series, period) | Relative-Stärke-Index (0–100) mit Wilders Glättungsmethode über N Perioden |
corr | corr(series1, series2, period) | Pearson-Korrelationskoeffizient zwischen zwei Datenreihen über ein rollierendes Fenster von N Perioden. Gibt Werte von -1 (invers) bis +1 (perfekt korreliert) zurück |
drawdown | drawdown(series) | Relativer Drawdown vom Allzeithoch. Gibt negative Dezimalzahlen zurück (z. B. -0,30 = 30 % unter dem ATH) |
Risiko & Rendite
| Funktion | Syntax | Beschreibung |
|---|---|---|
mean_return | mean_return(series, period) | Annualisierte rollierende Durchschnittsrendite über N Perioden (basierend auf täglichen logarithmischen Renditen × 365) |
realized_vol | realized_vol(series, period) | Annualisierte realisierte Volatilität über N Perioden (Standardabweichung der täglichen logarithmischen Renditen × √365) |
sharpe_ratio_arithmetic | sharpe_ratio_arithmetic(series, period) | Annualisierte Sharpe-Ratio mit dem arithmetischen Mittel der Renditen über N Perioden |
sharpe_ratio_geometric | sharpe_ratio_geometric(series, period) | Annualisierte Sharpe-Ratio mit dem geometrischen Mittel der Renditen über N Perioden |
Bearbeitung von Datenreihen
| Funktion | Syntax | Beschreibung |
|---|---|---|
shift | shift(series, period) | Verschiebt die Datenreihe um N Perioden nach rechts. Eine positive Periode zeigt vergangene Werte an der aktuellen Position (d. h. jeder Datenpunkt zeigt den Wert von N Perioden zuvor). Eine negative Periode verschiebt nach links (zeigt zukünftige Werte) |
if | if(a, "op", b, then, else) | Bedingung: wertet an jedem Datenpunkt den Vergleich a op b aus, gibt then zurück, wenn wahr, andernfalls else. Das Argument op ist ein Vergleichsoperator, der als Zeichenkette in Anführungszeichen übergeben wird: "=", "!=", ">", ">=", "<", "<=" |
Beispiele
Gleitende Durchschnitte
sma(m1, 7) # 7-day simple moving average of first metric
sma(m1, 30) # 30-day SMA
ema(m1, 21) # 21-day exponential moving average
median(m1, 14) # 14-day rolling median
Erkennung von SMA-Kreuzungen
f1: sma(m1, 7) # Short-term SMA
f2: sma(m1, 30) # Long-term SMA
f3: f1 - f2 # Difference (positive = short above long)
Verhältnisanalyse
m1 / m2 # Ratio between two metrics
Drawdown vom Allzeithoch
drawdown(m1) # Drawdown as negative decimal (-0.30 = 30% below ATH)
Bollinger-Bänder
f1: sma(m1, 20) # Middle band
f2: f1 + 2 * std(m1, 20) # Upper band (+2 standard deviations)
f3: f1 - 2 * std(m1, 20) # Lower band (-2 standard deviations)
Veränderung von Periode zu Periode
percent_change(m1, 7) # 7-day percentage change (decimal)
diff(m1, 30) # 30-day absolute change
RSI
rsi(m1, 14) # 14-period RSI
30 # Oversold threshold line
70 # Overbought threshold line
Werte begrenzen
max(m1, 0) # Floor at zero (remove negative values)
min(m1, 100) # Cap at 100
max(m1, m2) # Higher of two metrics at each point
Korrelation
corr(m1, m2, 30) # 30-day rolling correlation between two metrics
Volatilität & Risiko
realized_vol(m1, 30) # 30-day annualized volatility
sharpe_ratio_arithmetic(m1, 90) # 90-day annualized Sharpe ratio
Gestaltung
Klicken Sie nach dem Hinzufügen einer Formel in der Legende (im Bearbeitungsmodus) darauf, um Folgendes zu konfigurieren:
- Chart-Stil: Linie, Fläche oder Balken
- Farbe: Auswahl aus Voreinstellungen oder benutzerdefiniert
- Y-Achse: Beliebiger Achse zuweisen
- Linienbreite und Fülldeckkraft
- Sichtbarkeit: Umschalter zum Ein-/Ausblenden
Persistenz
Formeln werden mit der Chart-Konfiguration gespeichert. Wenn Sie einen Chart unter „Meine Charts“ speichern, bleiben alle Formeln erhalten und werden beim erneuten Laden des Charts wiederhergestellt.
Export
Formelwerte werden in CSV- und JSON-Exporte einbezogen. Jede Formelspalte verwendet die Formelbezeichnung als Überschrift.