Wie man TA-Indikatoren auf TradingView erstellt
Startseite
Artikel
Wie man TA-Indikatoren auf TradingView erstellt

Wie man TA-Indikatoren auf TradingView erstellt

Fortgeschritten
Veröffentlicht Aug 28, 2020Aktualisiert Jun 15, 2023
13m

Einführung

Ohne die richtigen Trading-Tools können Sie keine effektive technische Analyse durchführen. Eine starke Trading-Strategie hilft Ihnen gängige Fehler zu vermeiden, verbessert Ihr Risikomanagement und erhöht Ihre Fähigkeit, Chancen zu erkennen und zu nutzen.
Für viele ist TradingView die ideale Charting-Plattform. Die leistungsstarke HTML5-Webanwendung, die eine Vielzahl von Werkzeugen für die technische Analyse bietet, wird von Millionen von Menschen genutzt, um die Bewegungen in den Märkten für Devisen, Krypto-Währungen und traditionelle Aktienmärkte zu verfolgen.
TradingView verfügt über viele leistungsstarke Funktionen: Es ermöglicht uns die Verfolgung von Vermögenswerten über zahlreiche Trading-Plattformen hinweg und die Veröffentlichung von Trading-Ideen in seinem sozialen Netzwerk. In diesem Artikel werden wir uns auf seine Anpassbarkeit konzentrieren. Wir werden Pine Script verwenden, eine Programmiersprache die in TradingView zum Einsatz kommt und die uns eine granulare Kontrolle über unsere Chart-Layouts ermöglicht.

Los geht's!


Was ist Pine Script?

Pine Script ist eine Script-Sprache, die zur Modifizierung Ihrer TradingView-Charts verwendet werden kann. Die Plattform stattet Sie bereits mit vielen Funktionen dafür aus, aber mit Pine Script können Sie noch einen Schritt weiter gehen. Ganz gleich, ob Sie die Farben Ihrer Candlesticks ändern oder eine neue Strategie backtesten möchten, mit dem Pine Editor können Sie Ihre Echtzeit-Charts nach Belieben anpassen.
Der Code selbst ist exzellent dokumentiert, daher sollten Sie unbedingt das Benutzerhandbuch für weitere Informationen lesen. Unser Ziel in diesem Tutorial ist es, einige der Grundlagen zu diskutieren und Indikatoren einzuführen, die für das Cryptocurrency-Trading nützlich sein können.


Einrichtung

Es ist unglaublich einfach, mit Pine Script anzufangen. Jeder Code, den wir eingeben, wird auf den Servern von TradingView ausgeführt, so dass wir über einen Browser auf den Editor zugreifen und unsere Skripte entwickeln können – ohne dass ein zusätzlicher Download oder eine zusätzliche Konfiguration erforderlich ist.

In diesem Tutorial werden wir das Währungspaar Bitcoin/Binance USD (BTCBUSD) charten. Wenn Sie noch keines haben, erstellen Sie ein kostenloses Konto (es gibt auch ein Pro-Abonnement, aber das ist für diese Anleitung nicht notwendig). 
Folgen Sie diesem Link, und Sie sehen einen Chart, der dem folgenden ähnelt:


Ihrer wird wahrscheinlich aktueller sein.


Hier wollen wir den Full-Featured Chart anschauen – klicken Sie auf die Schaltfläche, um ihn aufzurufen. Dadurch erhalten wir eine viel detailliertere Ansicht, Zeichenwerkzeuge und Optionen zur Darstellung von Trendlinien, und vieles mehr.


Das Full-Featured Chart. Sie können den Zeitrahmen anpassen, indem Sie auf die Ansichten oberhalb der hervorgehobenen Tabs klicken.


Wir werden nicht weiter darauf eingehen, wie die verschiedenen zur Verfügung stehenden Tools zu verwenden sind, aber wenn Sie es mit der technischen Analyse ernst meinen, raten wir Ihnen dringend, sich mit diesen vertraut zu machen. Unten links (im Bild hervorgehoben) sehen Sie einige verschiedene Tabs – klicken Sie dort auf Pine Editor.


Der Pine Editor



Dieser Editor ist der Ort, an dem die Magie geschieht. Wir sagen ihm, was wir tun wollen, und klicken dann auf Add to Chart, um unsere Anmerkungen oben erscheinen zu sehen. Beachten Sie, dass die Dinge unübersichtlich werden können, wenn wir mehrere Anmerkungen auf einmal einfügen, deshalb entfernen wir sie zwischen den Beispielen (Rechtsklick in das Diagramm > Indikatoren entfernen).
Wie Sie sehen können, haben wir dort bereits ein paar Zeilen Code. Lassen Sie uns auf Add to Chart klicken, um zu sehen, was passiert.



Ein zweiter Chart wird unterhalb des Originals hinzugefügt. Der neue Chart stellt zufällig die gleichen Daten dar. Fahren Sie mit der Maus über My Script und klicken Sie auf das Kreuz, um es zu entfernen. Nun wollen wir uns den Code anschauen.
study("My Script")
Diese erste Zeile dient lediglich der Erstellung unserer Anmerkung. Es wird nur der Name für den Indikator benötigt ("My Script", in diesem Fall), aber es gibt auch einige optionale Parameter, die wir hinzufügen können. Einer davon ist Overlay, der TradingView anweist, den Indikator auf dem bestehenden Chart zu platzieren (statt in einem neuen Segment). Wie Sie aus unserem ersten Beispiel ersehen können, ist er standardmäßig auf false voreingestellt. Auch wenn wir ihn jetzt nicht in Aktion sehen werden, fügt overlay=true den Indikator zum bestehenden Chart hinzu.
plot(close)
Diese Linie ist die Anweisung, den Schlusskurs von Bitcoin darzustellen. Mit plot erhalten wir einfach einen Line-Chart, aber wir können auch Candlesticks und Balken anzeigen, wie wir in Kürze sehen werden. 

Lassen Sie uns nun folgendes versuchen:

//@version=4
study("My Script", overlay=true)
plot(open, color=color.purple)
Sobald Sie dies hinzugefügt haben, sollten Sie einen zweiten Chart sehen (der wie das nach rechts verschobene Original aussieht). Wir haben stattdessen nur den Eröffnungskurs dargestellt, und da die Eröffnungskurs des aktuellen Tages der Schlusskurs des Vortags ist, macht es Sinn, dass diese eine identische Form haben.
Okay! Lassen Sie uns die aktuellen Anmerkungen entfernen (denken Sie daran, wir tun dies, indem wir mit der rechten Maustaste klicken und auf Remove Indicators klicken). Fahren Sie mit der Maus über Bitcoin / BUSD und klicken Sie auf die Schaltfläche Hide, um auch den aktuellen Chart zu löschen.

Viele Trader bevorzugen Candlestick-Charts, da sie uns mehr Informationen liefern als eine einfache Darstellung wie die, die wir gerade erstellt haben. Fügen wir diese als nächstes hinzu.

//@version=4
study("My Script", overlay=true)
plotcandle(open, high, low, close)
Es ist ein guter Anfang, aber ohne Farben sieht es ein bisschen langweilig aus. Idealerweise sollten wir rote Candles haben, wenn der Eröffnungskurs höher ist als der Schlusskurs für den gegebenen Zeitrahmen, und grüne Candle, wenn der Schlusskurs höher ist als der Eröffnungskurs. Wir fügen eine Zeile über der Funktion plotcandle() hinzu:
//@version=4
study("My Script", overlay=true)
colors = open >= close ? color.red : color.green
plotcandle(open, high, low, close)

Dieser schaut sich jeden Candlestick an und prüft, ob der Eröffnungskurs höher oder gleich dem Schlusskurs ist. Wenn dies der Fall ist, bedeutet dies, dass die Preise in diesem Zeitraum gefallen sind, so dass der Candlestick rot eingefärbt wird. Andernfalls wird er grün eingefärbt. Ändern Sie die Funktion plotcandle() um dieses Farbschema zu verwenden:

//@version=4
study("My Script", overlay=true)
colors = open >= close ? color.red : color.green
plotcandle(open, high, low, close, color=colors)

Entfernen Sie die aktuellen Indikatoren, falls Sie dies noch nicht getan haben, und fügen Sie diesen dem Chart hinzu. Jetzt sollten wir etwas haben, das einem normalen Candlestick-Chart ähnelt.


Wunderschön!


Darstellung von Moving Averages (MA)

Wir haben einige der Grundlagen aufgeschrieben. Kommen wir nun zu unserem ersten benutzerdefinierten Indikator – der exponentiell gleitende Durchschnitt, oder Exponential Moving Average (EMA). Dies ist ein wertvolles Instrument, da es uns erlaubt, jegliche Marktstörungen herauszufiltern und Preisaktionen zu glätten. 
Der EMA unterscheidet sich geringfügig vom einfachen gleitenden Durchschnitt (auf englisch: Simple Moving Average oder SMA), da er den jüngsten Daten mehr Gewicht beimisst. Er neigt dazu, eher auf plötzliche Bewegungen zu reagieren, und wird oft für kurzfristige Aktionen verwendet (z.B. im Day-Trading).


Der Simple Moving Average (SMA)

Wir können die SMA ebenso gut darstellen, nur damit wir die beiden danach vergleichen können. Fügen Sie diese Zeile zu Ihrem Skript hinzu:

plot(sma(close, 10))

Diese stellt den Durchschnitt der letzten zehn Tage dar. Verändern Sie die Zahl in den Klammern, um zu sehen, wie sich die Kurve unter Berücksichtigung unterschiedlicher Längen verändert.


Der SMA, basierend auf den letzten zehn Tagen.


Der Exponential Moving Average (EMA)

Die EMA wird etwas schwieriger zu verstehen sein, aber keine Sorge. Lassen Sie uns zuerst die Formel aufschlüsseln:

EMA = (Schlusskurz - EMA des Vortags) * Multiplikator - EMA des Vortags

Also, was sagt uns das? Nun, für jeden Tag berechnen wir einen neuen gleitenden Durchschnitt, der auf dem des Vortages basiert. Der Multiplikator “gewichtet” die jüngste Periode, und wird mit der folgenden Formel berechnet:

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

Wie bei einfachen gleitenden Durchschnitten müssen wir angeben, wie lang die EMA sein wird. Syntaktisch gesehen ist die Funktion zur Darstellung des EMA ähnlich wie die des SMA. Stellen Sie ihn neben dem SMA dar, damit Sie die beiden vergleichen können:

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


Sie können einen leichten Unterschied zwischen den beiden MAs feststellen.



Integrierte Skripte

Bis jetzt haben wir unseren Code manuell geschrieben, damit Sie ein Gefühl dafür bekommen können. Aber lassen Sie uns etwas einführen, das uns Zeit sparen kann, insbesondere wenn wir komplexere Skripte schreiben und diese nicht von Grund auf neu schreiben wollen.

Klicken Sie oben rechts in Ihrem Editor auf New. Sie erhalten dann ein Dropdown-Menü mit allen möglichen technischen Indikatoren. Klicken Sie auf Moving Average Exponential, um den Quellcode für einen EMA-Indikator zu sehen.



Fahren Sie fort und fügen Sie diesen zu Ihrem Chart hinzu.


Dieser ist anders als unserer – Sie werden die input() Funktionen bemerken. Diese sind sehr benutzerfreundlich, da Sie auf dieses Kästchen klicken können…



...und einfach einige der Werte in einem Pop-up-Fenster ändern können, indem Sie auf das Rädchen für Settings klicken.



Wir werden in unserem nächsten Skript einige input() Funktionen hinzufügen, um dies zu demonstrieren.


Darstellung des Relative Strength Index (RSI) Indikators

Der Relative Strength Index (RSI) ist ein weiterer wichtiger Indikator in der technischen Analyse. Er wird als Momentum-Indikator bezeichnet, was bedeutet, dass er die Rate misst, mit der Vermögenswerte gekauft und verkauft werden. Ein RSI-Wert, der auf einer Skala von 0 bis 100 dargestellt wird, versucht, Investoren darüber zu informieren, ob Vermögenswerte überkauft oder überverkauft sind. In der Regel kann ein Vermögenswert als überverkauft betrachtet werden, wenn er einen Wert von höchstens 30 hat, und er könnte mit einem Wert von mindestens 70 überkauft sein.
Wenn Sie auf New > RSI-Strategy gehen, können Sie sich selbst davon überzeugen. Der RSI wird im Allgemeinen über Zeiträume von 14 (d.h. 14 Stunden oder 14 Tage) gemessen, aber es steht Ihnen frei, diese Einstellung an Ihre eigene Strategie anzupassen.
Fügen Sie diesen dem Chart hinzu. Sie sollten jetzt ein paar Pfeile angezeigt sehen (definiert durch die Funktion strategy.entry() im Code). RsiLE deutet auf eine potenzielle Gelegenheit hin, Long für Vermögenswert zu gehen, da er möglicherweise überverkauft ist. RsiSE hebt mögliche Punkte hervor, an denen der Vermögenswert bei Überkauf geshortet werden kann. Beachten Sie, dass Sie sich, wie bei allen Indikatoren, nicht unbedingt auf diese als garantiert sicheren Beweis dafür verlassen sollten, dass die Preise sinken oder steigen werden.


Backtesting

Es gibt eine Möglichkeit für uns, unsere selbst erstellten Indikatoren zu testen. Obwohl die bisherige Performance keine Garantie für zukünftige Ergebnisse ist, kann uns ein Backtesting unserer Skripte eine Vorstellung davon geben, wie effektiv sie Signale auffangen.

Im Folgenden geben wir Ihnen ein Beispiel für ein einfaches Skript. Wir werden eine einfache Strategie erstellen, die eine Long-Position eingeht, wenn der BTC-Preis unter 11.000 $ fällt, und die Position verlässt, wenn der Preis 11.300 $ übersteigt. Dann können wir sehen, wie profitabel diese Strategie in der Vergangenheit gewesen wäre.

//@version=4
strategy("ToDaMoon", overlay=true)
enter = input(11000)
exit = input(11300)
price = close

if (price <= enter)
    strategy.entry("BuyTheDip", strategy.long, comment="BuyTheDip")
if (price >= exit)
    strategy.close_all(comment="SellTheNews")
Hier haben wir entry und exit als Variablen definiert – beide sind Eingaben, was bedeutet, dass wir sie später im Chart ändern können. Wir richten auch die Variable price ein, die für jede Periode den Abschlusskurs nimmt. Dann haben wir ein wenig Logik in Form von if Aussagen. Wenn der Teil in Klammern wahr ist, dann wird der eingerückte Block darunter ausgeführt. Andernfalls wird er übersprungen.

Wenn also der Preis niedriger oder gleich dem von uns gewünschten Einstieg ist, wird der erste Ausdruck als wahr gewertet, und wir eröffnen eine Long-Position. Sobald der Preis gleich oder höher als der gewünschte Ausstieg ist, wird der zweite Block ausgelöst, wodurch alle offenen Positionen geschlossen werden.

Wir kommentieren den Chart mit Pfeilen, die zeigen, wo wir eingetreten bzw. ausgetreten sind, also haben wir angegeben, wie diese Punkte mit dem Parameter comment beschriftet werden sollen (in diesem Beispiel “BuyTheDip” und “SellTheNews”). Kopieren Sie den Code und fügen Sie ihn dem Chart hinzu.


Sie können nun die Indikatoren auf dem Chart sehen. Sie müssen eventuell herauszoomen.


TradingView wendet Ihre Regeln automatisch auf ältere Daten an. Sie werden auch feststellen, dass es vom Pine Editor zum Tab Strategy Tester wechselt. Dadurch erhalten Sie einen Überblick über Ihre potenziellen Gewinne, eine Liste der Trades und deren individuelle Performance.


Positionen, die wir eröffnet und geschlossen haben.


Alles im Zusammenhang

Es ist an der Zeit, unser eigenes Skript zu schreiben, indem wir einige der Konzepte verwenden, die wir bisher gesehen haben. Wir werden EMA und RSI kombinieren und ihre Werte verwenden, um Candlesticks einzufärben und so Erkenntnisse zu gewinnen, die wir leicht visualisieren können.

Dies sollte nicht als Finanzberatung ausgelegt werden – es gibt keinen objektiv korrekten Weg, diesen Indikator zu verwenden. Wie bei allen anderen sollte er zusammen mit anderen Tools verwendet werden, um Ihre eigene Strategie zu entwickeln.

Nun lassen Sie uns an unserem neuen Skript arbeiten. Entfernen Sie alle Ihre Indikatoren aus dem Chart und blenden Sie auch den Bitcoin/BUSD-Chart aus, so dass wir eine saubere Oberfläche haben, auf der wir arbeiten können.

Lassen Sie uns mit der Definition unserer Studie beginnen. Sie können sie nennen, wie Sie wollen, aber stellen Sie sicher, dass Sie overlay=true setzen.
study(title="Binance Academy Script", overlay=true)
Erinnern Sie sich an unsere EMA-Formel von vorhin. Wir müssen den Multiplikator mit der Länge der EMA angeben. Machen wir daraus eine input, die eine ganze Zahl erfordert (also keine Nachkommastellen). Wir werden auch ein Minimum mit (minval) festlegen, sowie einen Standardwert mit (defval).
study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)


Mit Hilfe dieser neuen Variablen können wir den EMA-Wert für jede Candle in unserem Chart berechnen:

study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)
emaVal = ema(close, emaLength)


Großartig. Weiter zum RSI. Wir werden ihm auf ähnliche Weise eine Länge geben:

study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)
emaVal = ema(close, emaLength)
rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0)

Und jetzt können wir die Kalkulation durchführen:

study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)
emaVal = ema(close, emaLength)
rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0)
rsiVal = rsi(close, rsiLength)

Lassen Sie uns an dieser Stelle die Logik definieren, die die Candlesticks in Abhängigkeit von den EMA- und RSI-Werten einfärbt. Nehmen wir eine Situation, in der (a) der Schlusskurs der Candle den EMA-Wert übersteigt und (b) der RSI-Wert über 50 liegt.

Warum? Nun, Sie könnten entscheiden, dass diese Indikatoren in einer Kombination verwendet werden können, um Ihnen zu sagen, wann Sie Bitcoin kaufen (Long gehen) oder verkaufen (shorten) sollten. Sie könnten zum Beispiel denken, dass die Erfüllung dieser beiden Bedingungen bedeutet, dass es ein guter Zeitpunkt ist, eine Long-Position einzugehen. Oder umgekehrt könnten Sie es verwenden, um Sie darüber zu informieren, wann Sie nicht shorten sollten, auch wenn andere Indikatoren etwas anderes besagen.

Also wird unsere nächste Zeile so ausssehen:

study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)
emaVal = ema(close, emaLength)
rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0)
rsiVal = rsi(close, rsiLength)
colors = close > emaVal and rsiVal > 50 ? color.green : color.red
Wenn wir dies ins verständliches Deutsch übersetzen, sagen wir lediglich, dass wir die Candle grün einfärben, wenn der EMA-Wert den Schlusskurs und der RSI-Wert 50 überschreitet. Andernfalls färben wir die Candle rot. 

Als Nächstes zeigen wir den EMA an:

study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)
emaVal = ema(close, emaLength)
rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0)
rsiVal = rsi(close, rsiLength)
colors = close > emaVal and rsiVal > 50 ? color.green : color.red
plot(emaVal, "EMA")
Zuletzt zeichnen Sie die Candles, wobei Sie darauf achten müssen, den Parameter color einzubeziehen:
study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)
emaVal = ema(close, emaLength)
rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0)
rsiVal = rsi(close, rsiLength)
colors = close > emaVal and rsiVal > 50 ? color.green : color.red
plot(emaVal, "EMA")
plotcandle(open, high, low, close, color=colors)

Und das ist das Skript! Fügen Sie es dem Chart hinzu, um es in Aktion zu sehen.


Ein BTC/BUSD Chart mit dem EMA/RSI Indikator.


Fazit

In diesem Artikel haben wir einige grundlegende Beispiele dafür durchgespielt, was Sie mit dem Pine Editor von TradingView erreichen können. Sie sollten inzwischen wissen, wie Sie einfache Anmerkungen in Preis-Charts machen können, um zusätzliche Erkenntnisse aus Ihren eigenen Indikatoren zu gewinnen.

Wir haben uns hier nur ein paar Indikatoren angeschaut, aber es ist einfach, komplexere Indikatoren zu erstellen – entweder durch Auswahl der integrierten Skripte unter New oder indem Sie sie selbst schreiben.

Mangelnde Inspiration? Die folgenden Artikel könnten Ihnen einige Ideen für Ihr nächstes Projekt liefern: