QuantumAlgo
Startseite›Blog›Indikatoren
Indikatoren

Pine Script v6: Ein Einstiegsleitfaden für Indikator-Entwickler

Pine Script v6: Ein Einstiegsleitfaden für Indikator-Entwickler
◆ DIE KURZE ANTWORT

Pine Script v6 ist die aktuelle Version der TradingView-Sprache für eigene Indikatoren und Strategien; jedes Skript beginnt mit der Direktive //@version=6, gefolgt von einer indicator()-Deklaration. Gegenüber v5 erzwingt es ein strengeres Typsystem, läuft schneller, behandelt request.security() sicherer und bringt neue integrierte Funktionen mit — die meisten Migrationsfehler sind daher Typkonflikte, die sich mit int()- oder float()-Casts beheben lassen.

Was ist Pine Script?

Pine Script ist die domänenspezifische Sprache von TradingView zum Schreiben benutzerdefinierter technischer Indikatoren und Strategien, die innerhalb der Chart-Engine von TradingView laufen. Es ist keine universelle Programmiersprache – jedes Skript läuft einmal pro Bar über die Chart-Historie, wobei der Status implizit durch die Bar-Serie verwaltet wird. Wenn du es noch nie verwendet hast, dauert das mentale Modell etwa einen Tag; die Fallstricke etwa ein Jahr.

Version 6, veröffentlicht im November 2024, ist die aktuelle Produktionsversion. Die Versionen 4 und 5 funktionieren noch, sind aber nicht mehr der Standard für neue Skripte.

Wie schreibst du dein erstes v6-Skript?

Jedes Pine Script beginnt mit einer Versionsanweisung in Zeile 1. Um einen v6-Indikator zu erstellen:

//@version=6 indicator("My First v6 Indicator", overlay=true) // Schlusskurs als Linie im Chart zeichnen plot(close, color=color.new(color.aqua, 0), linewidth=2)

Speichere das im Pine Editor von TradingView und füge es dem Chart hinzu. Du siehst den Schlusskurs als cyanfarbene Linie geplottet. Drei Dinge fallen auf: Die Direktive //@version=6 ist Pflicht und muss die erste nicht-leere Zeile sein; indicator() ist die Deklaration, die festlegt, ob dein Skript ein Indikator (Overlay oder Pane) oder eine Strategie (mit simulierten Trades) ist; und overlay=true bedeutet, dass das Skript direkt auf den Preischart zeichnet statt in einen separaten Bereich darunter.

Was sich von v5 zu v6 geändert hat

1. Strengeres Typsystem

Die mit Abstand größte Änderung. v6 erzwingt Typprüfungen, die v5 entweder ignoriert oder stillschweigend behandelt hat. Der häufigste Fall: v5 ließ dich ein series int übergeben, wo ein simple int erwartet wurde, und stufte es stillschweigend herab. v6 wirft dabei einen Fehler zur Kompilierzeit.

Praktische Konsequenz: Wenn du ein v5-Skript migrierst und es plötzlich nicht mehr kompiliert, liegt der Fehler fast immer an einem Typkonflikt in einem Funktionsargument. Die Lösung ist meist, den Wert in int() oder float() zu packen oder die passende eingebaute Funktion zu verwenden, um die Typen explizit umzuwandeln.

2. Schnellere Laufzeit

v6 hat Compiler-Optimierungen eingeführt, die die Ausführungsgeschwindigkeit der meisten Skripte spürbar verbessern. Am deutlichsten sind die Verbesserungen bei Skripten mit intensiver Nutzung von request.security() (Multi-Timeframe-Analyse), Array-Manipulation oder Matrix-Operationen. Einfache Skripte, die nur plotten und einfärben, werden keinen nennenswerten Unterschied merken.

3. Verbessertes Verhalten von request.security()

Die Funktion zum Abrufen von Daten aus einem anderen Timeframe hat eine sauberere Argumentbehandlung und besseren Schutz vor der historischen „Lookahead Bias“-Falle bekommen. Der klassische v4/v5-Fehler – lookahead=barmerge.lookahead_on zu verwenden, ohne die Folgen zu verstehen – löst jetzt beim Veröffentlichen des Skripts eine klarere Warnung aus.

4. Neue eingebaute Funktionen

Mehrere Hilfsfunktionen, die zuvor eine manuelle Implementierung erforderten, sind jetzt eingebaut. Bemerkenswerte Ergänzungen: verbesserte String-Formatierung, besseres Matrix-Slicing und praktische Methoden für den Array-Typ, die Boilerplate-Code reduzieren.

Welche Pine-Script-Muster zählen für SMC-Indikatoren?

Wenn du Smart Money Concepts-Indikatoren schreibst (Order Blocks, FVGs, BOS-Erkennung, Liquidity Sweeps), tauchen drei Pine-Script-Muster ständig auf. Beherrschst du diese, kannst du das meiste von dem bauen, was in kommerziellen SMC-Suites steckt.

Muster 1: Wie erkennst du Swing Highs und Swing Lows?

Die Grundlage jedes Marktstruktur-Indikators. Verwende ta.pivothigh() und ta.pivotlow() mit einem linken/rechten Balkenfenster:

//@version=6 indicator("Swing Detection", overlay=true) length = input.int(5, "Pivot Length", minval=1) ph = ta.pivothigh(high, length, length) pl = ta.pivotlow(low, length, length) // Kreise an bestätigten Swing Points zeichnen plotshape(not na(ph), location=location.abovebar, style=shape.circle, color=color.red, size=size.tiny) plotshape(not na(pl), location=location.belowbar, style=shape.circle, color=color.green, size=size.tiny)

Hinweis: Pivots werden length Kerzen nach ihrer Entstehung bestätigt. Das ist eine Non-Repainting-Bestätigung – einmal gezeichnet, bewegt sich der Pivot nicht mehr. Der Preis dafür ist Latenz: Du weißt erst 5 Kerzen später, dass der Pivot existiert (mit length=5).

Muster 2: Wie zeichnest du Boxen für Order Blocks und FVGs?

Verwende die eingebaute Funktion box.new(), um Rechtecke zu zeichnen. Boxen lassen sich aktualisieren, nach rechts verlängern, während neue Bars entstehen, oder löschen, sobald sie ungültig werden:

Quantum Algo
//@version=6 indicator("Bullish FVG Detector", overlay=true, max_boxes_count=500) // Bullisches FVG: Tief der aktuellen Kerze > Hoch der Kerze vor 2 Bars fvg_top = low fvg_bot = high[2] isFVG = fvg_top > fvg_bot if isFVG box.new(left=bar_index[2], top=fvg_top, right=bar_index, bottom=fvg_bot, bgcolor=color.new(color.green, 80), border_color=color.new(color.green, 50))

Zwei Dinge erwischen Einsteiger hier zuerst. Erstens steht max_boxes_count standardmäßig auf 50 — erhöhe den Wert für jeden Indikator, der Zonen über lange Historien zeichnet. Zweitens werden Boxen zur Kompilierzeit pro Bar gezeichnet; zeichnest du ohne Bedingungslogik auf jedem Bar eine Box, ist das Limit schnell erschöpft.

Muster 3: Zustand über Bars hinweg verfolgen (das Schlüsselwort var)

Pine Script führt deinen Code einmal pro Bar aus, aber oft brauchst du einen Zustand, der erhalten bleibt. Das Schlüsselwort var deklariert eine Variable, die einmal initialisiert wird und über die Ausführungen auf den einzelnen Bars hinweg bestehen bleibt:

//@version=6 indicator("BOS Tracker", overlay=true) // Persistenter Zustand: letztes bestätigtes Swing High merken var float lastSwingHigh = na // Aktualisieren, wenn ein neues Pivot High bestätigt ist ph = ta.pivothigh(high, 5, 5) if not na(ph) lastSwingHigh := ph // BOS erkennen: Schluss über dem letzten Swing High isBOS = not na(lastSwingHigh) and close > lastSwingHigh if isBOS label.new(bar_index, high, "BOS", color=color.new(color.green, 0), textcolor=color.white)

Ohne var würde die Variable auf jeder Kerze zurückgesetzt. Mit var bleibt der Wert erhalten. Das ist das grundlegende Muster für jeden Indikator, der sich an vergangene Ereignisse erinnern muss – jeder BOS-Detektor, MSS-Detektor, Mitigation-Tracker und jedes Order-Block-Alterungssystem nutzt dieses Muster unter der Haube.

Welche Fallstricke erwischen Pine-Script-Einsteiger?

Fallstrick 1 Repainting-Indikatoren, die in Backtests großartig aussehen, aber live Geld verlieren. Die Ursache ist die Verwendung von lookahead=barmerge.lookahead_on in request.security()-Aufrufen oder von vorausschauenden Konstrukten wie ta.pivothigh(), ohne die Verzögerung bis zur Bestätigung des Bars zu berücksichtigen. Wenn die Signale deines Indikators auf historischen Daten perfekt aussehen, vermute zuerst Repainting.
Fallstrick 2 format.mintick nicht für Preis-Labels verwenden. Fest codierte Dezimalstellen funktionieren nicht mehr, sobald das Skript auf Instrumente mit anderen Tick-Größen angewendet wird (BTC vs EURUSD vs ES). Verwende str.tostring(price, format.mintick) für jeden Preis, der in Labels oder Alerts angezeigt wird.
Fallstrick 3 Zu viele Objekte zeichnen. Pine Script hat feste Obergrenzen für die Anzahl an Linien, Boxen, Labels und Tabellen, die ein Skript zeichnen kann (Standard 50, maximal 500). Indikatoren, die auf jeder Kerze ein Label oder für jedes Signal eine Box zeichnen, verwerfen stillschweigend die ältesten Objekte. Setze max_lines_count, max_boxes_count usw. explizit in der indicator()-Deklaration, wenn du mehr brauchst.
Fallstrick 4 Zuweisung vs. Neuzuweisung. Pine verwendet = für die erste Zuweisung und := für die Neuzuweisung. x = 5 an zwei Stellen erzeugt zwei Variablen mit eigenem Gültigkeitsbereich. x := 5 weist einer bestehenden Variablen einen neuen Wert zu. Verwechselst du das, verbringst du eine Stunde mit dem Debuggen von Werten, die sich nicht aktualisieren.

Pine-Script-v6-Bausteine im Überblick

Die Built-ins, auf die sich dieser Guide stützt, was sie tun und wo jeweils der Haken liegt.
AufgabeBuilt-inWas sie machtWorauf du achten musst
Swing Highs und Swing Lowsta.pivothigh() / ta.pivotlow()Bestätigt Pivots über ein Fenster aus Kerzen links/rechtsErst 'length' Kerzen nach dem Pivot bestätigt
Order-Block- und FVG-Zonenbox.new()Zeichnet Rechtecke, die du verlängern oder löschen kannstStandard 50 Boxen; max_boxes_count erhöhen (max. 500)
Zustand über Kerzen hinwegSchlüsselwort varWird einmal initialisiert und behält seinen WertNeuzuweisung mit :=, nicht mit =
Daten aus höherem Timeframerequest.security()Ruft Daten aus einem anderen Timeframe ablookahead_on kann zukünftige Daten preisgeben und repainten
Preis-Labelsstr.tostring(price, format.mintick)Formatiert Preise auf die Tick-Größe des SymbolsFest codierte Dezimalstellen funktionieren nicht über alle Instrumente hinweg

◆Jedes Skript muss in seiner ersten nicht leeren Zeile mit der Direktive //@version=6 beginnen.

Wie veröffentlichst du ein Skript auf TradingView?

Sobald dein Skript funktioniert, kannst du es in der Public Library von TradingView veröffentlichen – entweder als Open Source (jeder kann den Code lesen und kopieren) oder als Invite-only (du steuerst den Zugriff). Beide Optionen erreichen die Nutzerbasis von TradingView; Open-Source-Veröffentlichungen werden anhand der House Rules geprüft und bei hoher Qualität in die Editors'-Picks-Auswahl aufgenommen.

Drei House Rules, über die neue Autoren am häufigsten stolpern: keine externen Werbelinks in Skripttiteln oder -beschreibungen, keine Repainting-Techniken ohne Offenlegung und keine Verweise auf deine Marke in der Chartausgabe (keine Logos, keine Wasserzeichen-Labels). Die ersten beiden sind technischer Natur; die dritte wird vor allem streng durchgesetzt und bringt kommerzielle Anbieter regelmäßig in Schwierigkeiten.

Häufig gestellte Fragen

Muss ich meine v5-Skripte zu v6 migrieren?

Bestehende v5-Skripte laufen unbegrenzt weiter auf TradingView — es gibt keine erzwungene Abschaltung. Migration wird nur empfohlen, wenn du eine v6-spezifische Funktion benötigst (verbessertes Typsystem, bessere Performance, neue eingebaute Funktionen) oder wenn du ein neues Skript von Grund auf erstellst. Bei veröffentlichten Indikatoren lohnt sich der Migrationsaufwand selten, es sei denn, du pflegst das Skript aktiv.

Was ist der größte Breaking Change in Pine Script v6?

Das verschärfte Typsystem. v6 erzwingt eine strengere Typprüfung – implizite Konvertierungen, die in v5 stillschweigend funktionierten, werfen jetzt Fehler. Das häufigste Migrationsproblem sind Typkonflikte zwischen series und simple in Funktionsargumenten, die zuvor unentdeckt blieben.

Ist Pine Script v6 schneller als v5?

Ja, im Durchschnitt. Der v6-Compiler optimiert aggressiver und hat für die meisten gängigen Muster eine schnellere Laufzeit. Am deutlichsten ist die Verbesserung bei Skripten mit intensiver Array-Manipulation oder vielen request.security-Aufrufen.

Kann ich v5 und v6 im selben Skript verwenden?

Nein. Die Version wird am Anfang des Skripts deklariert (//@version=6 oder //@version=5) und gilt für das gesamte Skript. Versionen können innerhalb eines einzelnen Indikators oder einer Strategie nicht gemischt werden.

Wo kann ich Pine-Script-v6-Indikatoren veröffentlichen?

Die Public Library von TradingView akzeptiert sowohl v5- als auch v6-Skripte. Open-Source-Skripte werden von TradingView-Moderatoren anhand der House Rules geprüft – dieselben Regeln gelten unabhängig von der Version. Closed-Source-Skripte (Invite-only) haben weniger Prüfaufwand, können aber nicht in der Public Library beworben werden.

● Open Source auf TradingView

Sieh dir v6-Indikatoren im Produktiveinsatz an

Quantum Algos kostenlose Neural Confluence Engine und die komplette Zeno-Suite sind in Pine Script v6 geschrieben. Das kostenlose Skript ist Open-Source – klone es, studiere es, modifiziere es als Lernreferenz.

Auf TradingView anzeigen →
Kostenlos nutzbar · Veröffentlichte Skripte, geprüft von TradingView-Moderatoren

Quellen & verwandte Leitfäden

Verwandte Leitfäden

Weiterlesen

Autoritative Quellen

Autor · Quantum Algo

ILY schreibt Trading-Ausbildung für Quantum Algo — und zerlegt Smart Money Concepts, Marktstruktur und Price Action in klare, praktische Lektionen. Jeder Leitfaden wird vom Gründer Quant geprüft, und jede Trade-Idee, die Quantum Algo veröffentlicht, ist mit Zeitstempel versehen, damit jeder sie verifizieren kann.

✓ Geprüft von Quant · Gründer & Head Trader