6.14

🧩 Eigene Indikatoren (sTraderZ Script)

Eigene Chart-Indikatoren mit sTraderZ Script schreiben: erster Indikator in fünf Minuten, Funktionsreferenz, Eingaben, Speichern, Grenzen und Hinweise.

1. 🧩 Was ist sTraderZ Script?

Die eingebauten Indikatoren im Chart (gleitende Durchschnitte, RSI, MACD und so weiter) decken viele Fälle ab. Manchmal willst du aber etwas Eigenes: ein Band aus Durchschnitt und Schwankung, einen RSI mit eingefärbten Zonen oder einen Marker, wenn zwei Linien sich kreuzen. Dafür gibt es sTraderZ Script, eine kleine Skriptsprache, mit der du eigene Indikatoren direkt im Chart schreibst.

Ein Skript ist eine kurze Textdatei mit Rechenvorschriften. sTraderZ.com liest sie, rechnet sie Kerze für Kerze von der ältesten bis zur jüngsten durch und zeichnet das Ergebnis in den Chart: Linien, Flächen, Marker, Hintergrund- und Kerzenfarben.

Wer darf das? Der Skript-Editor gehört zum Premium-Tarif (auch in Pro und im Admin-Zugang enthalten). Du kannst bis zu 50 eigene Skripte speichern. Ohne Premium zeigt das Panel „Meine Indikatoren“ einen entsprechenden Hinweis.

Du musst dafür kein Programmierprofi sein. Die mitgelieferten Vorlagen (Abschnitt 2) laufen sofort, und du kannst sie Stück für Stück abwandeln. Wichtig vorab: Ein Indikator zeigt dir Rechenergebnisse aus vergangenen Kursen. Er sagt nichts über die Zukunft voraus und ist kein Anlagetipp.

2. ⏱️ Dein erster Indikator in fünf Minuten

Wir bauen ein EMA-Band: eine Mittellinie (exponentieller gleitender Durchschnitt) mit einem Band darüber und darunter, dessen Breite sich an der aktuellen Schwankung (ATR) orientiert. Es ist eines der Beispiele, die der Editor selbst mitbringt.

  1. Öffne den Chart eines Marktes und wähle im Indikatoren-Menü Skript-Editor.
  2. Klicke im Editor auf Vorlagen und wähle EMA-Band. Der Quelltext erscheint im Editor.
  3. Klicke auf Anwenden. Nach kurzer Zeit liegt das Band auf dem Kurschart. Es ist noch nicht gespeichert.
  4. Ändere eine Zahl, zum Beispiel 20 bei input.int(20, …) auf 50, und wende erneut an. Die Mittellinie wird träger.
  5. Gib dem Indikator oben einen Namen und klicke auf Speichern. Du findest ihn danach unter Meine Indikatoren.

Das ist der Quelltext des Beispiels:

//@version=5 indicator("EMA-Band", overlay=true) len = input.int(20, "Länge", minval=1) mult = input.float(1.5, "ATR-Faktor", minval=0.1, step=0.1) src = input.source(close, "Quelle") basis = ta.ema(src, len) band = ta.atr(len) * mult upper = basis + band lower = basis - band pu = plot(upper, "Oben", color=color.new(color.blue, 40)) pl = plot(lower, "Unten", color=color.new(color.blue, 40)) plot(basis, "Mitte", color=color.blue, linewidth=2) fill(pu, pl, color=color.new(color.blue, 90))

Zeile für Zeile:

  • //@version=5 sagt, nach welchen Regeln das Skript geschrieben ist (mehr in Abschnitt 9).
  • indicator(…) gibt dem Indikator einen Titel. overlay=true legt ihn über den Kurschart; ohne diese Angabe landet er in einem eigenen Unterbereich darunter.
  • Die drei input…-Zeilen definieren Einstellungen, die du später in einem Dialog ändern kannst, ohne den Quelltext anzufassen.
  • ta.ema und ta.atr sind fertige Rechenfunktionen. Das Ergebnis steckt in Variablen (basis, band, …).
  • plot zeichnet eine Linie, fill färbt die Fläche dazwischen. color.new(color.blue, 40) ist Blau mit 40 % Durchsichtigkeit.

Zwei weitere Vorlagen liegen bereit: RSI mit Zonen (Unterbereich, farbig hinterlegte Überkauft- und Überverkauft-Zonen) und SMA-Kreuzung mit Kerzenfarbe (zwei Durchschnitte, Kerzen werden je nach Lage eingefärbt, Dreiecke markieren die Kreuzungen).

3. 🏗️ So ist ein Skript aufgebaut

Ein Skript besteht aus Anweisungen, die für jede Kerze einmal von oben nach unten ablaufen. Die wichtigsten Bausteine:

BausteinBeispielBedeutung
Kommentar// NotizText bis zum Zeilenende, wird ignoriert.
Versionszeile//@version=5Steuert die Verträglichkeit mit älteren Skripten (Abschnitt 9). Fehlt sie, gilt Version 4.
Kopfindicator("Name", overlay=true)Titel und Ort: overlay=true über dem Kurs, sonst im Unterbereich.
Eingabelen = input.int(14, "Länge")Einstellung mit Standardwert, ändert man später im Dialog.
Variable anlegenmitte = (high + low) / 2Wird auf jeder Kerze neu berechnet.
Variable ändernx := x + 1:= verändert eine bestehende Variable, = legt sie an.
Merkvariablevar summe = 0.0Wird nur einmal gesetzt und behält danach ihren Wert von Kerze zu Kerze.
Rückblickclose[1]Wert von vor einer Kerze. Vor der ersten Kerze ist der Wert na (kein Wert).
Bedingungwert = close > open ? 1 : 0Kurzform „wenn … dann … sonst …“.
if-Blockif close > open
    x := 1
Eingerückte Zeilen (4 Leerzeichen) gehören zum Block. Auch else if und else.
Eigene Funktionspanne(a, b) => a - bEine kleine, wiederverwendbare Formel (siehe Hinweis unten).
Mehrere Ergebnisse[m, s, h] = ta.macd(close, 12, 26, 9)Manche Funktionen liefern mehrere Werte auf einmal.

Zwei Begriffe, die du kennen solltest:

  • na heißt „kein Wert“. Er entsteht zum Beispiel am Anfang, wenn ein Durchschnitt noch zu wenige Kerzen hat. Rechnet man mit na, ist auch das Ergebnis na. Mit nz(x) ersetzt du na durch 0, mit na(x) prüfst du darauf.
  • Operatoren: + - * / %, Vergleiche == != < <= > >=, Logik and or not.
Wichtig zu Schleifen und Funktionen: Schleifen (for, while) und switch werden gelesen, aber nicht ausgeführt. Das Skript läuft weiter, du bekommst einen Hinweis, und Werte, die nur dort entstehen, bleiben na. Löse solche Aufgaben mit den fertigen ta.*-Funktionen oder mit var-Variablen. Eigene Funktionen laufen, solange sie ohne Gedächtnis rechnen, also kein ta.*, kein var und keinen Rückblick auf eigene Variablen enthalten. Eine Funktion mit Gedächtnis wird übersprungen (Ergebnis na, mit Hinweis).

Faustregel zur Ausführung: Es wird nur gerechnet, was in eine Ausgabe (plot, fill und so weiter) einfließt. Reiner Beiwerk-Code, der nirgends angezeigt wird, kostet keine Rechenzeit. Ausgaben dürfen nur auf oberster Ebene stehen, nicht innerhalb von if oder Funktionen.

4. 🎨 Ausgaben: was du auf den Chart bringst

AusgabeWas sie zeigt
plot(wert, "Titel", color=…, linewidth=…, style=…)Eine Linie, auf Wunsch auch als Histogramm, Säulen, Flächen, Punkte oder Treppenlinie. Die Farbe darf sich von Kerze zu Kerze ändern. Hat die Reihe keinen Wert (na), entsteht eine Lücke bzw. wird je nach Stil überbrückt.
hline(preis, "Titel", color=…, linestyle=…)Eine feste waagerechte Linie, etwa bei 70 und 30 für den RSI. Durchgezogen, gestrichelt oder gepunktet.
fill(plotA, plotB, color=…)Färbt die Fläche zwischen zwei Linien (plot-Ergebnisse) oder zwei hlines. Dafür merkst du dir das Ergebnis von plot in einer Variablen, wie im Beispiel pu und pl.
plotshape(bedingung, "Titel", style=…, location=…, color=…, text=…)Ein Marker (Dreieck, Pfeil, Kreis, Kreuz, Raute, Quadrat, Fahne, Beschriftung) an jeder Kerze, an der die Bedingung wahr ist. Position: über oder unter der Kerze, oben, unten oder auf dem Kurs.
plotchar(bedingung, "Titel", char="x", …)Wie plotshape, aber mit einem einzelnen Zeichen statt einer Form.
bgcolor(farbe)Hinterlegt den Hintergrund einer Kerze mit einer Farbe, zum Beispiel für „RSI überkauft“. na bedeutet keine Färbung.
barcolor(farbe)Färbt die Kerzen selbst um. Funktioniert bei Indikatoren mit overlay=true.
alertcondition(bedingung, "Titel", "Meldung")Wird ausgewertet und bietet im Chart einen Alarm an: Blende den Indikator ein und wähle in seiner Legende die Glocke. Der Alarm hält die aktuelle Fassung des Skripts samt Eingaben fest, prüft nur abgeschlossene Kerzen (die laufende Kerze löst nie aus) und meldet sich per Glocke, Push, E-Mail oder Telegram. Die Alarme verwaltest du im Panel „Meine Indikatoren“. Nur Premium; bis zu 20 Skript-Alarme.

Farben: color.red, color.green, color.blue, color.orange, color.purple und weitere Grundfarben, oder ein Hexwert wie #2962FF. Mit color.new(farbe, durchsichtig) machst du eine Farbe durchsichtiger (0 = voll deckend, 100 = unsichtbar), mit color.rgb(r, g, b) mischst du sie selbst.

Mengen: Ein Skript darf bis zu 64 Ausgaben haben, ein plotshape bis zu 500 Marker.

5. 📚 Funktionsreferenz

Diese Übersicht nennt die Funktionen, die sTraderZ Script ausführt. Angaben in Klammern sind die Reihenfolge der Argumente; quelle ist eine Preisreihe wie close, länge die Anzahl der Kerzen.

Kursdaten und Chart-Informationen

NameBedeutung
open, high, low, close, volumeEröffnung, Hoch, Tief, Schluss und Umsatz der aktuellen Kerze.
hl2, hlc3, ohlc4, hlcc4Mittelwerte aus Hoch/Tief, Hoch/Tief/Schluss, allen vier Kursen bzw. mit doppelt gewichtetem Schluss.
bar_index, last_bar_indexNummer der aktuellen und der letzten Kerze (zählt ab 0).
time, timenowZeitstempel der Kerze bzw. der aktuelle Zeitpunkt.
syminfo.ticker, syminfo.currency, syminfo.type, syminfo.mintick, syminfo.timezoneSymbol, Währung, Instrumentart, kleinste Kursstufe und Zeitzone des Marktes.
timeframe.period, timeframe.multiplier, timeframe.isintraday, timeframe.isdaily …Welcher Zeitrahmen gerade im Chart steht.
barstate.isfirst, barstate.islast, barstate.ishistory …Wo im Verlauf du dich gerade befindest (erste Kerze, letzte Kerze, …).

Gleitende Durchschnitte und Glättung

FunktionWas sie berechnet
ta.sma(quelle, länge)Einfacher Durchschnitt der letzten Kerzen.
ta.ema(quelle, länge)Exponentieller Durchschnitt, jüngere Kerzen zählen stärker.
ta.wma(quelle, länge)Linear gewichteter Durchschnitt.
ta.rma(quelle, länge)Gleitender Durchschnitt mit langsamer Glättung (Grundlage von RSI und ATR).
ta.vwma(quelle, länge)Nach Umsatz gewichteter Durchschnitt.
ta.hma(quelle, länge)Hull-Durchschnitt, reagiert schnell bei wenig Verzögerung.
ta.swma(quelle)Fester Durchschnitt über vier Kerzen mit Gewichten in der Mitte.

Schwankung, Bänder und Trend

FunktionWas sie berechnet
ta.tr, ta.atr(länge)Wahre Spanne einer Kerze und ihr Durchschnitt (ATR), ein Maß für die Schwankung.
ta.stdev(quelle, länge), ta.variance(quelle, länge)Standardabweichung und Varianz.
[mitte, oben, unten] = ta.bb(quelle, länge, faktor)Bollinger-Bänder.
[mitte, oben, unten] = ta.kc(quelle, länge, faktor)Keltner-Kanal.
[linie, richtung] = ta.supertrend(faktor, atr_länge)Trendlinie auf ATR-Basis; Richtung ist −1 (aufwärts) oder 1 (abwärts).
ta.sar(start, schritt, max)Parabolic SAR.
[plusDI, minusDI, adx] = ta.dmi(di_länge, adx_glättung)Richtungsindikatoren und ADX (Trendstärke).

Oszillatoren und Schwung

FunktionWas sie berechnet
ta.rsi(quelle, länge)Relative-Stärke-Index von 0 bis 100.
[macd, signal, hist] = ta.macd(quelle, schnell, langsam, signal)MACD-Linie, Signallinie und Histogramm.
ta.stoch(quelle, hoch, tief, länge)Stochastik-Wert von 0 bis 100.
ta.cci(quelle, länge)Commodity Channel Index.
ta.mfi(quelle, länge)Money Flow Index (RSI unter Einbezug des Umsatzes).
ta.wpr(länge)Williams %R.
ta.mom(quelle, länge), ta.roc(quelle, länge)Kursänderung über n Kerzen, absolut bzw. in Prozent.
ta.obv, ta.pvt, ta.vwapOn-Balance-Volume, Preis-Volumen-Trend und umsatzgewichteter Tagesdurchschnitt (Kalendertag in UTC).

Höchst-/Tiefstwerte, Kreuzungen und Muster

FunktionWas sie berechnet
ta.highest(quelle, länge), ta.lowest(quelle, länge)Höchster bzw. niedrigster Wert der letzten Kerzen. Mit nur der Länge als Argument gelten Hoch bzw. Tief.
ta.highestbars(quelle, länge), ta.lowestbars(quelle, länge)Wie viele Kerzen zurück der Höchst- bzw. Tiefstwert liegt.
ta.change(quelle, länge)Differenz zum Wert von vor n Kerzen.
ta.crossover(a, b), ta.crossunder(a, b), ta.cross(a, b)Wahr, wenn a die Reihe b von unten bzw. von oben bzw. in beliebiger Richtung kreuzt.
ta.rising(quelle, länge), ta.falling(quelle, länge)Wahr, wenn die Reihe n Kerzen in Folge steigt bzw. fällt.
ta.barssince(bedingung)Kerzen seit die Bedingung zuletzt wahr war.
ta.valuewhen(bedingung, quelle, n)Wert der Quelle, als die Bedingung zum n-ten Mal zuletzt wahr war.
ta.pivothigh(quelle, links, rechts), ta.pivotlow(quelle, links, rechts)Lokales Hoch bzw. Tief, bestätigt durch die angegebene Zahl Kerzen links und rechts (erscheint entsprechend verzögert).
ta.cum(quelle), math.sum(quelle, länge)Laufende Gesamtsumme bzw. Summe der letzten n Kerzen.

Rechnen, Hilfsfunktionen und Text

FunktionWas sie berechnet
math.abs, math.signBetrag und Vorzeichen.
math.max(…), math.min(…), math.avg(…)Größter, kleinster Wert bzw. Mittelwert beliebig vieler Zahlen.
math.round(x, stellen), math.floor, math.ceilRunden, abrunden, aufrunden.
math.sqrt, math.pow(basis, exponent), math.exp, math.log, math.log10Wurzel, Potenz, e-Funktion und Logarithmen.
nz(x, ersatz), na(x), fixnan(x)na ersetzen, auf na prüfen, bzw. den letzten gültigen Wert festhalten.
iff(bedingung, dann, sonst)Auswahl wie die Kurzform ?:, wertet aber beide Seiten aus.
int(x), float(x), bool(x)Typ umwandeln (int schneidet die Nachkommastellen ab).
str.tostring(x), str.length(text)Zahl in Text umwandeln, Textlänge.
color.new, color.rgbFarben durchsichtig machen bzw. mischen.
time(zeitrahmen, sitzung)Sitzungsfilter: liefert einen Wert nur innerhalb des angegebenen Zeitfensters. Es gilt der Zeitrahmen des Charts.

Eingaben

FunktionZeigt im Dialog
input.int(…), input.float(…)Zahlenfeld, mit minval, maxval und step als Grenzen.
input.bool(…)Ein/Aus-Schalter.
input.string(…, options=[…])Textfeld oder Auswahlliste.
input.source(close)Auswahl der Preisreihe (Schluss, Eröffnung, Hoch, …).
input.color(…)Farbwähler.
input.timeframe(…), input.session(…)Zeitrahmen bzw. Handelssitzung.
Hinweis zum VWAP: ta.vwap beginnt jeden Kalendertag (UTC) neu. Einstellungen wie ein anderer Startpunkt oder Bänder werden angenommen, aber nicht ausgewertet; du siehst einen Hinweis.

6. 💾 Eingaben, Speichern und Meine Indikatoren

Eingaben-Dialog

Jede input…-Zeile in deinem Skript wird zu einem Feld im Dialog Eingaben. Du öffnest ihn im Panel Meine Indikatoren beim jeweiligen Skript. Dort änderst du zum Beispiel die Länge eines Durchschnitts, ohne den Quelltext zu berühren. Wert außerhalb der erlaubten Grenzen (minval, maxval)? Dann bekommst du eine Meldung zum betreffenden Feld. Standard setzt alles zurück. Hat ein Skript keine Eingaben, steht das im Dialog.

Anwenden und Speichern

  • Anwenden rechnet das Skript sofort auf dem Chart, ohne etwas zu speichern. Gut zum Ausprobieren.
  • Speichern legt eine neue Fassung des Skripts an („Gespeichert, Fassung 3“). Frühere Fassungen bleiben erhalten.
  • Speichern unter … legt eine Kopie unter neuem Namen an, etwa um eine Variante auszuprobieren.
  • Das Fenster erinnert dich an nicht gespeicherte Änderungen („Angewendet. Noch nicht gespeichert.“).

Meine Indikatoren

Im Indikatoren-Menü des Charts öffnest du das Panel Meine Indikatoren. Es zeigt alle deine Skripte, jeweils mit Kennzeichnung Kurs (über dem Kurschart) oder Unterbereich. Du kannst Skripte dort ein- und ausblenden, ihre Eingaben ändern, sie bearbeiten oder löschen. Oben steht, wie viele deiner 50 Plätze belegt sind.

Im Chart selbst zeigt die Legende zu jedem Skript die Aktionen Neu rechnen, Hinweise anzeigen und Ausblenden.

Mitgelieferte Vorlagen

Im Editor findest du den Knopf Vorlagen mit drei fertigen Beispielen: EMA-Band, RSI mit Zonen und SMA-Kreuzung mit Kerzenfarbe. Sie sind eigene Arbeiten von sTraderZ.com und frei verwendbar. Lade eines, ändere es und speichere es unter eigenem Namen.

Chart-Vorlagen

Speicherst du eine Chart-Vorlage (deine Zusammenstellung von Indikatoren und Einstellungen), merkt sie sich auch deine eigenen Indikatoren samt ihren Eingaben. Beim Laden der Vorlage erscheinen sie wieder. Gibt es ein Skript nicht mehr, wird es übersprungen und du siehst einen Hinweis.

7. 🚧 Grenzen und was (noch) nicht geht

Schutzgrenzen

Damit ein einzelnes Skript den Server nicht ausbremst, gelten feste Grenzen:

GrenzeWert
Länge des Skripts64 KB, höchstens 2.000 Zeilen
Anzahl Kerzendie letzten 5.000 Kerzen des gewählten Zeitrahmens
Rückblick (close[n])höchstens 5.000 Kerzen
Rechenzeit3 Sekunden pro Lauf, danach bricht die Berechnung mit einer Fehlermeldung ab
Ausgaben pro Skript64 (davon beliebig viele Marker, je Ausgabe höchstens 500)
Textehöchstens 4.096 Zeichen, längere werden gekürzt (mit Hinweis)
Gespeicherte Skripte50 mit Premium
Neu rechnenhöchstens 30 Berechnungen pro Minute

Das Ergebnis ist ein Rückblick, kein Live-Ticker

Das Skript rechnet auf den geladenen Kerzen, wenn du es anwendest oder neu rechnen lässt. Die laufende, noch nicht abgeschlossene Kerze wird nicht live mit jedem Tick nachgerechnet. Möchtest du den neuesten Stand, klicke in der Legende auf Neu rechnen. Skripte, die ihr Verhalten an Echtzeit-Zuständen ausrichten (barstate.isrealtime und Ähnliches), liefern deshalb keine Live-Signale.

Bei der Kerzenart Heikin Ashi rechnet das Skript, wie die eingebauten Indikatoren, auf den Heikin-Ashi-Kerzen; du erhältst dazu einen Hinweis.

Was nicht unterstützt wird

sTraderZ Script versteht die Grundlagen, nicht jede Sonderfunktion. Das Folgende wird gelesen, aber übersprungen. Du bekommst jeweils einen Hinweis mit Zeile; das Skript läuft weiter:

  • Zeichnungen und Tabellen: label.*, line.*, box.*, table.*, linefill.*, polyline.*
  • Daten anderer Märkte oder Zeitrahmen: request.* (inklusive security)
  • Strategien und Backtests: strategy(…) und strategy.*. Von einem Strategie-Skript werden nur die Plots gezeigt.
  • Schleifen und Verzweigungen: for, while, switch
  • Datenstrukturen und Module: array.*, matrix.*, map.*, import, export, method, type, enum
  • Weitere Ausgaben: plotarrow, plotcandle, plotbar, alert()
  • Kalenderfunktionen wie year, month, hour, timestamp
  • Einzelne Rechen- und Indikatorfunktionen, darunter Winkelfunktionen (math.sin …), ta.linreg, ta.alma, ta.median, ta.percentrank, color.from_gradient

Fließt ein übersprungenes Element in eine Ausgabe ein, ist der betroffene Wert na und der Hinweis nennt die Ausgabe. Ein plot, das ausschließlich davon abhängt, bleibt dann leer.

8. 🔎 Hinweise und Fehlermeldungen lesen

Der Editor prüft dein Skript beim Anwenden und zeigt das Ergebnis im Bereich Hinweise. Jeder Eintrag nennt die Zeile und hat eine von drei Stufen:

StufeBedeutungWas tun?
FehlerDas Skript kann nicht laufen: Tippfehler, unbekannter Name, falsche Anzahl Argumente, ein Zeichen fehlt, eine Schutzgrenze ist überschritten.Zeile prüfen und beheben. Solange ein Fehler bleibt, zeigt der Chart nichts.
ÜbersprungenEin nicht unterstütztes Element wurde ausgelassen, zum Beispiel label.new oder eine for-Schleife.Das Skript läuft. Prüfe, ob das Ergebnis ohne das Element noch sinnvoll ist.
HinweisDas Skript läuft, aber etwas ist ungewöhnlich: ein alter Funktionsname, eine Variable verdeckt eine andere, ein Wert wird ignoriert.Meist nichts. Bei „verdeckt die äußere Variable“ war wohl := statt = gemeint.

Häufige Fehler am Anfang

  • Einrückung: Nach if müssen die Zeilen des Blocks eingerückt sein (4 Leerzeichen oder ein Tabulator).
  • Zuweisung ändern: Eine bestehende Variable änderst du mit :=. = legt eine neue an. := auf eine noch nicht angelegte Variable ist ein Fehler.
  • Ausgabe im if: plot und Co. stehen immer auf oberster Ebene. Willst du „nur manchmal zeichnen“, gib dem Plot einen Wert, der bei „nicht zeichnen“ na ist: plot(bedingung ? wert : na).
  • Zu wenig Kerzen am Anfang: Ein 200er-Durchschnitt hat erst ab der 200. Kerze einen Wert. Davor ist er leer, das ist normal.
  • Anführungszeichen: Texte stehen in "…" oder '…'.

Wird die Rechenzeit von 3 Sekunden überschritten, weil das Skript sehr aufwendig ist, hilft meist: kürzere Längen, weniger verschachtelte Funktionen, weniger Ausgaben.

9. 🧩 Eigene Indikatoren in Handlungsregeln und Backtests

Ein Plot oder eine alertcondition-Bedingung deines Skripts kann der Eingang einer Handlungsregel sein, zum Beispiel „Kaufsignal, wenn mein Indikator die Bedingung Buy Signal meldet“. Dieselbe Regel läuft in der Live-Auswertung der Strategie und im Backtest und liefert dort dieselben Werte.

So legst du die Regel an

  1. Öffne deine Strategie und wähle Regeln & Signale → Regel hinzufügen.
  2. Wähle den Indikator Eigener Indikator (Skript).
  3. Wähle dein Skript und danach den Plot oder die Bedingung. Die Liste zeigt die Titel aus deinem Skript.
  4. Stelle bei Bedarf die Eingaben ein. Ein leeres Feld bedeutet: Standardwert des Skripts.
  5. Bei einem Plot wählst du einen Vergleich und einen Wert (zum Beispiel „größer als 100“ oder „kreuzt nach oben 0“). Bei einer Bedingung gilt der Operator ist wahr: Die Regel ist erfüllt, wenn die Bedingung auf der aktuellen Kerze zutrifft.
AusgangOperatorDie Regel ist erfüllt, wenn …
Plot<, ≤, =, ≥, >, ≠der Plotwert der aktuellen Kerze den Vergleich mit deinem Wert erfüllt.
Plotkreuzt nach oben / untender Plot deinen Wert von unten bzw. von oben durchquert.
Bedingungist wahrdie alertcondition auf der aktuellen Kerze zutrifft.

Die Regel hält eine Fassung fest

Beim Speichern merkt sich die Regel die aktuelle Fassung deines Skripts samt Eingaben. Spätere Änderungen am Skript ändern diese Regel nicht, damit Backtests und Signale reproduzierbar bleiben. Gibt es eine neuere Fassung, zeigt die Regel einen Hinweis. Im Dialog Regel bearbeiten kannst du bewusst auf die neue Fassung umstellen.

Wenn das Skript nicht mehr verfügbar ist

Wird das Skript gelöscht, gesperrt oder hast du keinen Zugriff mehr darauf, wird die Regel pausiert: Sie bleibt erhalten, bekommt aber keine Werte mehr und gilt als nicht erfüllt. Es gibt keine Fehlermeldung im Hintergrund. Die Regelzeile nennt den Grund. Wird das Skript wieder freigegeben, rechnet die Regel weiter.

Gut zu wissen

  • Die Regel rechnet auf echten Kerzen (nicht Heikin Ashi) und mit der verfügbaren Historie, höchstens den jüngsten 5000 Kerzen. So entsteht im Backtest derselbe Wert wie live.
  • Skript-Indikatoren werden nur für die Märkte aktiver Strategien berechnet. Läuft die Berechnung länger als das Zeitbudget je Lauf, folgen die übrigen Märkte im nächsten Lauf.
  • Die Funktion „Eigener Indikator in Regeln“ gehört wie der Skript-Editor zu Premium.

10. 📚 Die Indikator-Bibliothek: teilen, abonnieren, kopieren

In der Indikator-Bibliothek stellen Nutzer eigene Indikatoren für andere bereit. Du erreichst sie über den Eintrag Indikator-Bibliothek im Bereich Trading-System und im Chart über Meine Indikatoren → Aus Bibliothek hinzufügen. Die Bibliothek ist nur für eingeloggte Nutzer sichtbar. Sie zeigt Name, Beschreibung, Anzeigenamen des Autors, Herkunft, Lizenz und den vollständigen Quelltext, nie eine E-Mail-Adresse.

Abonnieren oder kopieren

AboKopie
Wer darf das?Alle Nutzer, auch kostenlosPremium
FassungFolgt immer der zuletzt veröffentlichten Fassung des Autors. Zwischenstände des Autors siehst du nie.Ein fester Stand, der dir gehört. Spätere Änderungen des Autors erreichen die Kopie nicht.
In „Meine Indikatoren“Kennzeichen „Abo · von …“, schreibgeschütztKennzeichen „Kopie von …“, du kannst sie bearbeiten
LimitZählt nicht auf dein Skript-LimitZählt auf dein Skript-Limit

Abonnierte Indikatoren lassen sich einblenden, mit eigenen Eingaben nutzen und in Chart-Vorlagen speichern, auch ohne Premium. Zieht der Autor einen Indikator zurück, behalten bestehende Abos die letzte veröffentlichte Fassung.

Eigenen Indikator veröffentlichen (Premium)

  1. Speichere deinen Indikator und klicke in „Meine Indikatoren“ auf Veröffentlichen.
  2. Gib eine Beschreibung an und wähle die Lizenz: Eigene Arbeit, MPL 2.0, MIT oder Andere Lizenz (mit Freitext). Bei MPL 2.0 und MIT ist die Herkunft Pflicht, zum Beispiel „nach … von …“.
  3. Bestätige: „Ich darf diesen Quelltext veröffentlichen und stelle ihn anderen Nutzern von sTraderZ.com zur Nutzung bereit.“ Ohne diese Bestätigung wird nichts veröffentlicht. Zeitpunkt und Fassung des Bestätigungstextes werden festgehalten.

Veröffentlicht wird die zuletzt gespeicherte Fassung. Mit einem erneuten Veröffentlichen aktualisierst du alle Abos. Mit Zurückziehen verschwindet der Indikator aus der Bibliothek. Lizenzköpfe im Quelltext bleiben immer unverändert stehen.

Melden und Sperren

Auf der Detailseite kannst du einen Indikator melden, der gegen Recht oder Nutzungsbedingungen verstößt. Wird ein Indikator gesperrt (durch die Moderation oder automatisch bei mehreren Meldungen), ist er sofort für alle gesperrt, auch für Abonnenten. Der Autor sieht ihn weiter mit dem Vermerk „gesperrt“. Kopien gehören ihren Besitzern und bleiben unberührt, solange sie nicht selbst gemeldet werden.

Die Nutzung erfolgt auf eigene Verantwortung. Kein Anlagetipp. Lies den Quelltext, bevor du einem Indikator vertraust. Indikatoren der Bibliothek stammen von anderen Nutzern und werden nicht von sTraderZ.com geprüft.

11. 🔁 Bestehende Skripte übernehmen

Die Syntax von sTraderZ Script ist weit verbreiteten Indikator-Skriptsprachen nachempfunden. Viele Skripte, die du aus Büchern, Blogs oder Foren kennst, laufen deshalb mit wenig oder gar keiner Änderung. Einfach in den Editor einfügen und Anwenden klicken.

  • Versionszeile: Skripte mit //@version=4 (oder älter, oder ganz ohne Versionszeile) laufen im Altmodus. Alte Namen wie sma(close, 20), study(…) oder crossover(a, b) werden automatisch auf die heutigen Schreibweisen (ta.sma, indicator, ta.crossover) abgebildet. Bei Version 5 und 6 erscheint dazu ein Hinweis.
  • Nur Indikatoren: Der Kopf strategy(…) wird erkannt; es erscheinen die Plots, aber keine Orders und keine Auswertung.
  • Prüfe das Ergebnis: Kleine Abweichungen zu anderen Programmen sind möglich, etwa beim Umgang mit der laufenden Kerze, bei Handelszeiten oder bei den Kursdaten selbst. Rechne wichtige Werte nach.
Lizenzköpfe bleiben stehen. Viele öffentlich geteilte Skripte tragen oben einen Lizenzhinweis, zum Beispiel „This Source Code Form is subject to the terms of the Mozilla Public License 2.0“ (MPL) oder MIT. Dieser Kommentarblock muss unverändert im Quelltext bleiben. Er wird nicht ausgeführt, stört also nicht. Prüfe außerdem, ob du das Skript überhaupt weitergeben oder verändern darfst. Verwende nur Quelltext, den du nutzen darfst, und achte auf die Bedingungen des Urhebers.

12. ⚖️ Haftung und kein Anlagetipp

Kein Anlagetipp: Indikatoren und Skripte sind Rechenwerkzeuge auf Basis vergangener Kurse. Sie liefern keine Prognose, keine Handelsempfehlung und keine Anlageberatung. Ob und wie du handelst, entscheidest du selbst und auf eigenes Risiko. Wertentwicklungen der Vergangenheit sind kein verlässlicher Indikator für künftige Ergebnisse.

Deine Skripte: Der Quelltext, den du schreibst, gehört dir. Gespeichert werden Quelltext, Name und Einstellungen in deinem Konto. Die Nutzung der Skript-Funktion setzt voraus, dass du für den eingegebenen Quelltext die nötigen Rechte hast.