Was ist Pine Script?

Pine Script ist eine Skriptsprache, mit der Sie Ihre Diagramme auf der TradingView-Plattform ändern können. Die Plattform bietet Ihnen dafür viele Funktionen, aber Pine Script ermöglicht es Ihnen, Ihrem Ziel näher zu kommen. Unabhängig davon, ob Sie die Farben von Preisaktionsdiagrammen ändern oder eine neue Strategie testen möchten, hilft Ihnen der Pine-Editor dabei, Ihre Echtzeitdiagramme nach Ihren Wünschen anzupassen.

Der Code ist gut dokumentiert. Weitere Informationen finden Sie im Benutzerhandbuch. Mit diesem Tutorial möchten wir einige Grundlagen besprechen und Indikatoren bereitstellen, die beim Handel mit digitalen Währungen nützlich sein können.

Vorbereitung

Der Einstieg in Pine Script ist sehr einfach. Jeder Code, den wir schreiben, läuft auf den Servern von TradingView, sodass wir den Editor verwenden und Skripte über den Browser entwickeln können – kein zusätzlicher Download oder keine Konfiguration erforderlich.

In diesem Tutorial erstellen wir ein Diagramm für das Währungspaar Bitcoin/Binance USD (BTCBUSD). Wenn Sie noch kein Konto haben, können Sie kostenlos eines erstellen (ein professionelles Abonnement ist ebenfalls verfügbar, aber für diesen Leitfaden nicht erforderlich). 

Folgen Sie diesem Link und Sie sehen ein Diagramm ähnlich dem folgenden:

Ihr Diagramm wird wahrscheinlich anspruchsvoller sein.

Hier möchten wir ein Diagramm mit allen Funktionen – klicken Sie auf die Schaltfläche, um darauf zuzugreifen. Dies gibt uns unter anderem einen detaillierteren Überblick und Zeichenwerkzeuge sowie Optionen zum Zeichnen von Trendlinien.

Voll ausgestattetes Diagramm. Sie können den Zeitrahmen bearbeiten, indem Sie auf die Ansichten über den hervorgehobenen Registerkarten klicken.

Wir werden nicht auf die Verwendung der verschiedenen verfügbaren Tools eingehen, aber wenn Sie sich für technische Analysen interessieren, empfehlen wir Ihnen dringend, sich diese anzuschauen, um sich mit ihnen vertraut zu machen. Unten links (im Bild hervorgehoben) finden Sie einige verschiedene Registerkarten – klicken Sie auf Pine Editor.

Pine-Editor

Dieser Editor bietet Ihnen eine Reihe bezaubernder Funktionen. Wir teilen ihm mit, was wir tun möchten, und klicken dann auf „Zum Diagramm hinzufügen“, damit unsere Kommentare oben angezeigt werden. Bitte beachten Sie, dass das Diagramm unordentlich werden kann, wenn Sie mehrere Kommentare gleichzeitig eingeben. Daher werden wir diese zwischen den Beispielen entfernen (Rechtsklick auf das Diagramm > Indikatoren entfernen).

Sie können sehen, dass wir bereits zwei Codezeilen haben. Klicken wir auf „Zum Diagramm hinzufügen“, um zu sehen, was passiert.

Unterhalb des ursprünglichen Diagramms wird ein zweites Diagramm hinzugefügt. Das neue Diagramm stellt dieselben Daten dar. Bewegen Sie Ihre Maus über die Schaltfläche „Mein Skript“ und klicken Sie auf die Auslassungspunkte, um es zu entfernen. Lassen Sie uns den Code genauer besprechen.

study("Mein Skript")

Die erste Zeile richtet unsere Kommentare ein. Es ist nur der Name erforderlich, den der Indikator heißen soll (in diesem Fall „Mein Skript“), es gibt aber auch einige optionale Variablen, die wir hinzufügen können. Eine dieser Variablen ist Overlay, die der Plattform mitteilt, den Indikator auf dem aktuellen Chart (und nicht auf einem neuen Sektor) zu platzieren. Wie Sie im ersten Beispiel sehen können, ist der Standardwert „false“. Da wir ihn jetzt nicht laufen sehen, fügt overlay=true den Indikator dem aktuellen Diagramm hinzu.

Handlung (schließen)

Diese Zeile ist die Anweisung, den Schlusskurs von Bitcoin darzustellen. Die Grafik stellt ein Liniendiagramm dar, wir können aber auch Preisbewegungen und Balkendiagramme anzeigen, wie wir gleich sehen werden. 

Versuchen wir nun Folgendes:

//@version=4 study("Mein Skript", overlay=true) plot(open, color=color.purple)

Sobald Sie dieses Symbol hinzugefügt haben, sollten Sie ein zweites Diagramm sehen (es sieht so aus, als ob das ursprüngliche Diagramm nach rechts verschoben wurde). Stattdessen haben wir lediglich den Eröffnungskurs aufgezeichnet. Da der Eröffnungskurs des aktuellen Tages der Schlusskurs des Vortages ist, ist es sinnvoll, dass sie eine ähnliche Form haben.

Gut! Lassen Sie uns die vorhandenen Kommentare entfernen (denken Sie daran, dass wir dazu mit der rechten Maustaste klicken und auf „Indikatoren entfernen“ klicken). Bewegen Sie Ihre Maus über BTC/BUSD und klicken Sie dann auf die Schaltfläche „Ausblenden“, um auch das aktuelle Diagramm zu löschen.

Viele Händler bevorzugen Preisaktionsdiagramme, da sie uns mehr Informationen liefern als eine einfache Zeichnung, wie wir sie gerade gemacht haben. Fügen wir sie unten hinzu. 

//@version=4 study("Mein Skript", overlay=true) plotcandle(öffnen, hoch, niedrig, schließen)

Ein guter Anfang, aber die fehlende Farbe macht es etwas langweilig. Im Idealfall sollten wir rote Kerzen haben, wenn der Eröffnungskurs in einem bestimmten Zeitraum über dem Schlusskurs liegt, und grüne Kerzen, wenn der Schlusskurs über dem Eröffnungskurs liegt. Wir fügen über der Eigenschaft „candle plot()“ eine Zeile hinzu:

//@version=4 study("Mein Skript", overlay=true) colors = öffnen >= schließen ? color.red : color.green plotcandle(öffnen, hoch, niedrig, schließen)

Dies geschieht in jedem Preisaktionsdiagramm sowie bei der Überprüfung, ob der Eröffnungskurs größer oder gleich dem Schlusskurs ist. In diesem Fall bedeutet dies, dass die Preise über einen bestimmten Zeitraum gefallen sind, sodass das Preisaktionsdiagramm rot gefärbt ist. Andernfalls wird es grün gefärbt. Ändern Sie die Funktion drawcandle(), um das Farbschema einzugeben:

//@version=4 study("Mein Skript", overlay=true) colors = öffnen >= schließen ? color.red : color.green plotcandle(öffnen, hoch, niedrig, schließen, color=colors)

Entfernen Sie vorhandene Indikatoren, sofern Sie diese noch nicht entfernt haben, und fügen Sie diesen Indikator dem Diagramm hinzu. Wir sollten etwas haben, das ein normales Preisaktionsdiagramm darstellt.

Zeichnen gleitender Durchschnitte (MA)

Nachfolgend finden Sie einige Grundlagen. Kommen wir zum ersten benutzerdefinierten Indikator – dem Exponential Moving Average oder EMA. Es ist ein wertvolles Instrument, das es uns ermöglicht, Marktablenkungen zu beseitigen und das Verständnis von Marktbewegungen zu erleichtern. 

Der exponentielle gleitende Durchschnitt unterscheidet sich geringfügig vom einfachen gleitenden Durchschnitt (SMA), da sich dieser Durchschnitt auf die aktuellsten Daten konzentriert. Es reagiert tendenziell auf plötzliche Bewegungen und wird normalerweise bei kurzfristigen Geschäften (z. B. Daytrading) eingesetzt.

Einfacher gleitender Durchschnitt (SMA)

Wir könnten auch einen einfachen gleitenden Durchschnitt zeichnen, also sollten wir sie später vergleichen. Fügen Sie diese Zeile zu Ihrem Skript hinzu:

Plot(sma(schließen, 10))

Dies stellt den Durchschnitt der letzten 10 Tage dar. Passen Sie die Zahl in Klammern an, um zu sehen, wie stark sich die Kurve ändert, wenn verschiedene Zeiträume berücksichtigt werden.

Der einfache gleitende Durchschnitt basiert auf den letzten 10 Tagen.

Exponentieller gleitender Durchschnitt (EMA)

Der exponentielle gleitende Durchschnitt ist vielleicht etwas schwer zu verstehen, aber keine Sorge. Betrachten wir die Gleichung im Detail:

EMA = (Schlusskurs - EMA des Vortages) * Multiplikator - EMA des Vortages

Was sagt uns das also? Nun, der neue gleitende Durchschnitt jedes Tages wird auf der Grundlage des gleitenden Durchschnitts des Vortages berechnet. Der Multiplikator ist das „Datengewicht“ über den letzten Zeitraum und wird nach der folgenden Gleichung berechnet:

Multiplikator = 2 / (Länge des EMA + 1)

Für einfache gleitende Durchschnitte müssen wir bestimmen, wie lange der exponentielle gleitende Durchschnitt anhält. Strukturell ähnelt die Darstellung des exponentiellen gleitenden Durchschnitts der einfachen Darstellung des gleitenden Durchschnitts. Zeichnen Sie es neben den einfachen gleitenden Durchschnitt, damit Sie sie vergleichen können:

//@version=4 study("Mein Skript", overlay=true) plot(sma(close, 10)) plot(ema(close,10))

Sie können einen leichten Unterschied zwischen den beiden Arten von gleitenden Durchschnitten erkennen.

Eingebettete Skripte

Wir haben den Code bisher von Hand geschrieben, damit Sie damit vertraut sind. Aber lasst uns etwas anbieten, das hilft, Zeit zu sparen, insbesondere wenn wir komplexere Skripte schreiben und wir es nicht von Grund auf neu machen wollen.

Klicken Sie oben rechts in Ihrem Editor auf die Schaltfläche „Neu“. Sie sehen ein Dropdown-Menü mit allen verschiedenen Arten technischer Indikatoren. Klicken Sie auf „Exponentieller gleitender Durchschnitt“, um den Quellcode für den Indikator „Exponentieller gleitender Durchschnitt“ anzuzeigen.

Fügen Sie es dann dem Diagramm hinzu.

Dies unterscheidet sich von unseren eigenen Codes – Sie werden die input()-Eigenschaften bemerken. Es ist großartig zu verwenden, da Sie auf dieses Kästchen klicken können ...

Sie können einige der Werte im Popup-Fenster auch einfach ändern, indem Sie auf das Einstellungsrad klicken.

Wir werden im folgenden Skript zwei input()-Eigenschaften hinzufügen, um zu demonstrieren, wie das geht.

Diagramm des Relative-Stärke-Index (RSI).

Der Relative Strength Index (RSI) ist einer der grundlegenden Indikatoren in der technischen Analyse. Er ist als Momentum-Indikator bekannt, was bedeutet, dass er die Rate misst, mit der Vermögenswerte gekauft und verkauft werden. Der RSI-Score wird auf einer Skala von 0 bis 100 bewertet und versucht Anlegern mitzuteilen, ob ein Vermögenswert überkauft oder überverkauft ist. Typischerweise gilt ein Vermögenswert als überverkauft, wenn seine Bewertung kleiner oder gleich 30 ist, und er gilt als überkauft, wenn seine Bewertung größer oder gleich 70 ist.

Wenn Sie zu Neu > RSI-Strategie gehen, können Sie sich davon selbst überzeugen. Der RSI wird über 14 Zeiträume (d. h. 14 Stunden oder 14 Tage) gemessen, Sie haben jedoch die Freiheit, diese Einstellung an Ihre eigene Strategie anzupassen.

Fügen Sie das dem Diagramm hinzu. Sie sollten nun einige Pfeile sehen (identifiziert durch die Eigenschaft enter.strategy() im Code). RsiLE weist auf potenzielle Kaufgelegenheiten für den Vermögenswert hin, da er sich möglicherweise in einem überverkauften Bereich befindet. Während RsiSE die potenziellen Verkaufsargumente des Vermögenswerts hervorhebt, wenn er sich im überkauften Bereich befindet. Bitte beachten Sie, dass sie, wie alle Indikatoren, nicht als endgültiger Beweis für steigende oder fallende Preise herangezogen werden sollten.

Führen Sie einen Backtest durch

Es gibt eine Möglichkeit, benutzerdefinierte Indikatoren zu testen. Obwohl die Leistung in der Vergangenheit keine Garantie für zukünftige Ergebnisse ist, gibt uns der Backtesting-Prozess von Skripten eine Vorstellung davon, wie effektiv sie Signale empfangen. 

Unten finden Sie ein Beispiel für ein einfaches Skript. Wir werden eine einfache Strategie entwickeln, um einen Long-Trade einzugehen, wenn der Bitcoin-Preis unter 11.000 $ fällt, und den Trade zu verlassen, wenn der Preis 11.300 $ übersteigt. Somit können wir wissen, wie profitabel diese Strategie in der Vergangenheit war.

//@version=4 Strategie("ToDaMoon", Overlay=true) Eingabe = Eingabe(11000) Ausstieg = Eingabe(11300) Preis = Schließen wenn (Preis <= Eingabe)     Strategie.Einstieg("BuyTheDip", Strategie.lang, Kommentar="BuyTheDip") wenn (Preis >= Ausstieg)     Strategie.Schließen_alles(Kommentar="SellTheNews")

Hier haben wir die Ein- und Ausstiegspunkte als Variablen definiert – beide sind Eingaben, was bedeutet, dass wir sie später im Diagramm ändern können. Wir haben außerdem eine Preisvariable festgelegt, die den Schlusskurs für jede Periode erfasst. Daher hat die Verwendung von if-Anweisungen etwas Logisches. Wenn der eingeklammerte Teil wahr ist, wird der eingerückte Block aktiviert. Andernfalls wird es übersprungen.

Auch wenn der Preis fällt oder dem gewünschten Einstiegspreis entspricht, wird der Ausdruck als wahr gewertet und wir eröffnen einen Kaufhandel. Sobald der Preis dem erforderlichen Ausstiegspreis entspricht oder diesen überschreitet, wird der zweite Block aktiviert und alle offenen Geschäfte werden geschlossen. 

Wir werden dem Diagramm Kommentare hinzufügen, indem wir Pfeile verwenden, um Ein- und Ausstiegspunkte anzuzeigen. Daher haben wir die Namen dieser Punkte im Kommentarrahmen angegeben (in diesem Beispiel „Buy Dip“ und „Sell on News“). Kopieren Sie das Symbol und fügen Sie es dem Diagramm hinzu.

Sie können nun die Indikatoren im Diagramm sehen. Möglicherweise müssen Sie herauszoomen, um einen Blick darauf zu werfen.

TradingView wendet Ihre Regeln auf ältere Daten an. Sie werden auch einen Übergang vom Pine-Editor zur Registerkarte „Strategietester“ bemerken. Dadurch erhalten Sie einen Überblick über potenzielle Gewinne, eine Liste der Trades und deren jeweilige Performance.

Trades, die wir eingegangen und verlassen haben.

Verknüpfen Sie Elemente miteinander

Es ist an der Zeit, unser eigenes Programm zu schreiben und dabei einige der bisher beschriebenen Konzepte zu verwenden. Wir werden sowohl den exponentiellen gleitenden Durchschnitt als auch den RSI anhand ihres Werts kombinieren, um die Preisaktionsdiagramme einzufärben und denkbare Erkenntnisse zu gewinnen. 

Dies sollte nicht als Finanzberatung verstanden werden, da es keine objektiv definierte korrekte Verwendung dieses Indikators gibt. Wie alle anderen Indikatoren sollte dieser Indikator in Verbindung mit anderen Tools zur Entwicklung Ihrer Anlagestrategie verwendet werden.

Beginnen wir mit der Arbeit am neuen Skript. Entfernen Sie alle Indikatoren aus dem Diagramm und blenden Sie auch das BTC/BUSD-Diagramm aus, sodass wir ein leeres Diagramm haben, mit dem wir beginnen können.

Beginnen wir mit der Definition der Studie. Sie können einen beliebigen Namen verwenden. Stellen Sie jedoch sicher, dass overlay=true festgelegt ist.

Studie (Titel = "Binance Academy Script", Overlay = true)

Erinnern Sie sich an die Gleichung des exponentiellen gleitenden Durchschnitts, über die wir zuvor gesprochen haben. Wir müssen dem Multiplikator Daten für den Zeitraum liefern, den der exponentielle gleitende Durchschnitt benötigt. Machen wir es zu einem Eingabefeld, das eine Ganzzahl (also keine Dezimalstellen) erfordert. Wir werden auch einen Mindestwert (minval) und einen Standardwert (defval) angeben.

Studie (Titel = „Binance Academy Script“, Overlay = true) emaLength = Eingabe (Titel = „EMA-Länge“, Typ = Eingabe.Integer, Defval = 25, Minval = 0)

Wir können den EMA-Wert für jede Kerze im Diagramm berechnen, indem wir die neue Variable verwenden:

Studie (Titel = „Binance Academy Script“, Overlay = true) emaLength = Eingabe (Titel = „EMA-Länge“, Typ = Eingabe.Integer, Defval = 25, Minval = 0) emaVal = ema (schließen, emaLength)

Toll. Bezüglich des Relative Strength Index (RSI). Wir werden den Zeitraum auf ähnliche Weise eingeben:

Studie (Titel = „Binance Academy Script“, Overlay = true) emaLength = Eingabe (Titel = „EMA-Länge“, Typ = Eingabe.integer, Defval = 25, Minval = 0) emaVal = ema (Schließen, emaLength) rsiLength = Eingabe (Titel = „RSI-Länge“, Typ = Eingabe.integer, Defval = 25, Minval = 0)

Jetzt können wir das berechnen:

Studie (Titel = „Binance Academy Script“, Overlay = true) emaLength = Eingabe (Titel = „EMA-Länge“, Typ = Eingabe.integer, Defval = 25, Minval = 0) emaVal = ema (Schließen, emaLength) rsiLength = Eingabe (Titel = „RSI-Länge“, Typ = Eingabe.integer, Defval = 25, Minval = 0) rsiVal = rsi (Schließen, rsiLength)

An dieser Stelle sollten Sie sich darüber im Klaren sein, dass die Farben der Preisaktionsdiagramme von den EMA- und RSI-Werten abhängen. Betrachten wir ein Beispiel, bei dem (a) der Schlusskurs der Kerze den EMA kreuzt und (b) der RSI über 50 liegt.

Warum? Nun, Sie können entscheiden, dass diese Indikatoren zusammen verwendet werden können, um Ihnen zu sagen, wann Sie Bitcoin kaufen oder verkaufen sollten. Sie könnten beispielsweise denken, dass die Erfüllung beider Bedingungen bedeutet, dass es ein guter Zeitpunkt ist, einen Long-Trade einzugehen. Alternativ können Sie Indikatoren verwenden, die Sie daran erinnern, wann Sie nicht verkaufen sollten, auch wenn andere Indikatoren etwas anderes anzeigen.

Die nächste Zeile sieht also so aus:

Studie (Titel = „Binance Academy Script“, Overlay = true) emaLength = Eingabe (Titel = „EMA-Länge“, Typ = Eingabe.integer, defval = 25, minval = 0) emaVal = ema (Schließen, emaLength) rsiLength = Eingabe (Titel = „RSI-Länge“, Typ = Eingabe.integer, defval = 25, minval = 0) rsiVal = rsi (Schließen, rsiLength) Farben = Schließen > emaVal und rsiVal > 50 ? Farbe.grün : Farbe.rot

Wenn wir dies ins Klartext übersetzen, bedeutet das, dass wir die Kerze grün färben, wenn der EMA den Schlusskurs überschreitet und der RSI-Score 50 überschreitet. Andernfalls wird es rot gefärbt. 

Zeichnen Sie dann den exponentiellen gleitenden Durchschnitt:

Studie (Titel = „Binance Academy Script“, Overlay = true) emaLength = Eingabe (Titel = „EMA-Länge“, Typ = Eingabe.integer, Defval = 25, Minval = 0) emaVal = ema (Schließen, emaLength) rsiLength = Eingabe (Titel = „RSI-Länge“, Typ = Eingabe.integer, Defval = 25, Minval = 0) rsiVal = rsi (Schließen, rsiLength) Farben = Schließen > emaVal und rsiVal > 50? Farbe.grün: Farbe.rot Plot (emaVal, „EMA“)

Zeichnen Sie abschließend die Kerzen und achten Sie darauf, die Farbvariable einzubeziehen:

Studie (Titel = "Binance Academy Script", Overlay = true) emaLength = Eingabe (Titel = "EMA-Länge", Typ = Eingabe.integer, Defval = 25, Minval = 0) emaVal = ema (Schließen, emaLength) rsiLength = Eingabe (Titel = "RSI-Länge", Typ = Eingabe.integer, Defval = 25, Minval = 0) rsiVal = rsi (Schließen, rsiLength) Farben = Schließen > emaVal und rsiVal > 50? Farbe.grün: Farbe.rot Plot (emaVal, "EMA") Plotkerze (Öffnen, Hoch, Tief, Schließen, Farbe = Farben)

Und schon sind Sie mit dem Drehbuch fertig! Fügen Sie das Ihrem Diagramm hinzu, um es in Aktion zu sehen.

BTC/BUSD-Diagramm mit EMA/RSI.

Abschließende Gedanken

In diesem Artikel haben wir uns einige grundlegende Beispiele dafür angesehen, was mit dem Pine Editor von TradingView möglich ist. Sie sollten in der Lage sein, einfache Kommentare zum Preisdiagramm abzugeben, um zusätzliche Erkenntnisse aus Ihren Indikatoren zu gewinnen.

Wir haben hier nur zwei Indikatoren hervorgehoben, aber es ist einfach, komplexere Indikatoren zu erstellen – sei es durch die Neudefinition integrierter Skripte oder durch das Schreiben selbst.

Brauchen Sie inspirierende Ideen? Die folgenden Artikel können Ihnen dabei helfen, Ideen für Ihr nächstes Projekt zu bekommen: