PineScript Guide 4 - var und varipHallo Scripter,
im vorherigen Video haben wir uns mit den unterschiedlichen einfachen Datentypen auseinandergesetzt. Bevor wir nun mit komplexeren Datentypen weiter machen, streuen wir noch kurz das Thema "var und varip" ein, da es für die Variablendeklaration wichtig ist.
█ Was schauen wir uns in diesem Video an?
Dieses Video soll dir zeigen was die Schlüsselwörter var und varip bezwecken und wie wir sie bei der Variablendeklaration einsetzen können.
█ Was ist das Schlüsselwort var?
Variablen werden in PineScript mit der Angabe eines Datentyps und eines Variablennamen deklariert. PineScript wird bei einer solchen Deklaration den Wert der Variablen mit jeder neuen Kerze auf den Ursprungswert zurücksetzen. Die folgende Variable „counter“ erhält mit jeder neuen Kerze den Wert 0 und erhöht diesen dann, sofern es sich um eine grüne Kerze handelt. Sobald eine neue Kerze erscheint, wird der Wert wieder auf 0 gesetzt.
int counter = 0
if close > open
counter += 1
Fügen wir hingegen das Schlüsselwort „var“ hinzu, dann persistiert der Wert der „counter“ Variable und sie wird nicht auf 0 zurückgesetzt. Wir zählen somit alle grünen Kerzen im Chart.
var int counter = 0
if close > open
counter += 1
Das Schlüsselwort „var“ bietet sich somit an, wenn Werte zwischen verschiedenen Kerzen übernommen werden sollen. Ein gutes Beispiel hierfür ist ein Schalter, der an- und ausgeschaltet werden kann. Wir definieren eine Variable „tradeErlaubt“ und schalten diese an oder aus, je nachdem welche Bedingung im Skript eintritt.
var bool tradeErlaubt = false
movingAverageCrossover = ta.crossover(close, ta.sma(close, 50))
movingAverageCrossunder = ta.crossunder(close, ta.sma(close, 50))
if movingAverageCrossover
tradeErlaubt := true
else if movingAverageCrossunder
tradeErlaubt := false
if tradeErlaubt
// hier folgt der Code, der nur ausgeführt wird, wenn „tradeElaubt“ wahr ist
█ Was ist das Schlüsselwort varip?
Ähnlich wie das var Schlüsselwort sorgt auch das varip Schlüsselwort (var intrabar persist) dafür, dass Werte persistieren. Während eine mit „var“ deklarierte Variable immer nur einen Wert je Kerze übernimmt, kann eine Variable, die mit „varip“ deklariert wurde, auch intrabar Aktualisierungen abspeichern.
Wir könnten zum Beispiel je neuer Preisdaten einen Zähler aufaddieren, um die Preisbewegungen innerhalb einer Kerze zu zählen. Varip funktioniert nur mit aktuellen Kerzen, die Live-Daten erhalten. Für historische Kerzen, wird der Wert für eine „varip“ Variable anhand der OHLC-Daten (Open, High, Low, Close) berechnet, also nur einmal.
Zur Verdeutlichung kannst du dir das nachfolgende Skript in deinem Chart anschauen. Während anfänglich beide Zähler den exakt gleichen Wert ausgeben, da varip nur einen Preisdatensatz je historischer Kerze erhält, ändern sich die beiden Kurven sobald es neue Live-Daten gibt. Varip zählt ab jetzt jede Preisbewegung, während var maximal nur einmal je Kerze hochzählt.
//@version=5
indicator("Var vs. Varip")
varip int counter = 0
if close > open
counter += 1
var int counter2 = 0
if close > open
counter2 += 1
plot(counter, "Varip", color.blue)
plot(counter2, "Var", color.red)
█ Übung 4
Erstelle ein Skript, das grüne Kerzen zählt, sofern die beiden vorherigen Kerzen rot waren. Der Wert soll sich stetig erhöhen (persistieren) und die Ausgabe soll eine blaue Linie sein.
█ Lösung Übung 3
Übung 3: Erstelle ein PineScript, dass einen Moving Averages berechnet, bei dem sich der Parameter für die Periode des Moving Average aus einem „Input“, welchen der Benutzer selber festlegen kann, ergibt. Der Moving Average soll grün dargestellt werden.
//@version=5
indicator("Übung 3", overlay=true)
i_length = input.int(20, "MA Länge")
ma = ta.sma(close, i_length)
plot(ma, "MA", color.green)
Edit: Ändert bitte im letzten Code Beispiel die MA Zeile in (Das Beschreibungsfeld der Idee zerlegt leider die richtige Syntax): ma = ta.sma(close, i_length)
Pinecoders
PineScript Guide 2 - Ausführungsmodell und ZeitreiheHallo Trader,
willkommen zum zweiten Teil des "PineScript für Einsteiger"-Guide.
█ Worum geht es in dieser Tutorial-Serie?
Dieser Kurs soll dir einen einfachen Einstieg in die PineScript Programmierung ermöglichen. Es ist egal, ob du vorher schon einmal programmiert hast oder gerade mit dem Programmieren anfängst. Der Kurs wird dir die Grundlagen der PineScript Programmierung erklären und dir mit einfachen Beispielen den Einstieg erleichtern.
█ Was schauen wir uns in diesem Video an?
Dieses Video soll dir zeigen wie PineScript ausgeführt wird und wie sich die Daten in PineScript zusammensetzen bzw. aufgebaut sind. Daher schauen wir uns das Execution Model- und das "Time Series"-Konzept an. Beide Konzepte sind abstrakt, aber notwendig um funktionierende Skripte zu erstellen.
█ Was ist das Execution Model / Ausführungsmodell? Oder anders ausgedrückt, wie wird PineScript ausgeführt?
Die Kerzen auf dem Tradingview Chart können technisch in historische und aktuelle Kerzen unterteilt werden.
Historische Kerzen liegen in der Vergangenheit und das jeweilige PineScript, welches auf deinem Chart angewendet wird, wird beim Öffnen des Charts einmal für historische Kerzen ausgeführt.
Historische Kerzen beinhalten einen Wert für jede Variable innerhalb des Skriptes.
Aktuelle Kerzen (realtime bar) sind solche, die den aktuellen Markt widerspiegeln und fortlaufend mit frischen Daten versorgt werden. Bei aktuellen Kerzen wird das PineScirpt somit mehrfach (einmal pro neuer Preisdaten) innerhalb einer Kerze ausgeführt. Wenn das Zeitintervall der Kerze überschritten wird (nennen wir sie Kerze A), erscheint eine neue aktuelle Kerze (Kerze B). Ab jetzt erhält Kerze B die neuen Preisdaten und Kerze A behält den Stand der Daten des letzten Updates innerhalb ihres Intervalls.
Aktuelle Kerzen verändern die Werte ihrer Variablen fortlaufend mit der Aktualisierung der Preisdaten.
█ Was ist das Time Series- / Zeitreihen-Konzept?
Die Preis- und Zeitdaten sind auf dem Chart und in PineScript anhand einer Zeitreihe sortiert. Dabei erhält jede Kerze einen Index. Die aktuelle Kerze (ganz rechts) hat den Index , die vorherige den Index und so weiter. Sobald eine neue Kerze erscheint, erhöht sich der Index aller vergangenen Kerzen um 1 und die aktuelle Kerze erhält den Index 0.
Als Programmierer können wir mit diesem Konzept auf bestimmte Kerzen referenzieren. Möchtest du dir eine Kerze markieren, um sie später wiederzuverwenden (zum Beispiel um eine Linie einzuzeichnen), kannst du dir ihren Index abspeichern.
Willst du zum Beispiel auf dem Tageschart den Schlusskurs von vor 3 Tagen abfragen, kannst du dies über close tun. „close“ ist hierbei eine built-in Variable für den Schlusskurs, die uns in PineScript zur Verfügung steht und die eckigen Klammern mit dem entsprechenden Index 3 sagen deinem Skript, den Schusskurs welcher Kerze du abfragen willst.
Das Execution Model und das Time Series Konzept bilden die Grundlage eines jeden PineScripts. Sie wirken anfänglich etwas abstrakt, vereinfachen uns die Arbeit mit den Preisdaten allerdings enorm.
█ Übung 2
Erstelle ein PineScript, dass den aktuellen Eröffnungskurs und den Eröffnungskurs vor zwei Perioden im Chart jeweils als Linie anzeigt.
█ Lösung für Übung 1
Übung 1: Erstelle ein Skript mit dem Namen "Mein erster PineScript Indikator", welches eine durchgehende rote Linie des Eröffnungskurses einer jeden Periode einzeichnet.
//@version=5
indicator("Mein erster PineScript Indikator", overlay=true)
plot(open, title="Eröffnungskurs", color=color.red)
PineScript Guide 1 - PineScript und PineEditorHallo Trader,
viele von euch traden bereits mit Indikatoren und wollen diese individualisieren. Tradingview bietet uns mit PineScript die Möglichkeit eigene Indikatoren mit ganz einfachen Schritten zu erstellen. Leider gibt es in der deutschen Community noch nicht allzu viele Informationen zur PineScript-Programmierung. Daher möchte ich euch mit diesem Tutorial ein wenig unter die Arme greifen. Ziel ist es jede Woche ein neues Thema zu behandeln, so dass wir gemeinsam die volle Funktionalität von PineScript erkunden.
█ Zu meiner Person
Ich bin Pascal und programmiere seit über 5 Jahren in PineScript. Angefangen habe ich aus reiner Neugier und habe so stetig meine Fähigkeiten weiterentwickelt. Hierbei kam mir meine vorherige Tätigkeit als Software-Entwickler zu gute. Durch meine Erfahrung bei der Hilfestellung im PineScript Chat und die Veröffentlichung diverser Open Source-Skripte bin ich nun in der Lage dieses Tutorial zu erstellen. Weiterhin bin ich im offiziellen Tradingview HelpCenter als Trusted Pine Programmer For Hire gelistet.
█ Worum geht es in dieser Tutorial-Serie?
Dieser Kurs soll dir einen einfachen Einstieg in die PineScript Programmierung ermöglichen. Es ist egal, ob du vorher schon einmal programmiert hast oder gerade mit dem Programmieren anfängst. Der Kurs wird dir die Grundlagen der PineScript Programmierung erklären und dir mit einfachen Beispielen den Einstieg erleichtern.
█ Was schauen wir uns in diesem Tutorial an?
Das erste Tutorial soll dir einen Einblick verschaffen. Daher schauen wir uns zunächst die folgenden Themen an:
Was ist der PineEditor?
Was ist PineScript?
Wie wird ein Skript erstellt?
Falls dir der Beitrag hilft würde ich mich über ein Like oder einen Kommentar unterhalb freuen. Feedback jeglicher Art ist gerne gesehen. Lasst uns gemeinsam die behandelten Themen diskutieren. Frohes Programmieren :)
█ Was ist der PineEditor?
Der PineEditor ist das Herzstück der PineScript Programmierung. In ihm erstellen wir unsere Skripte und er unterstützt uns dabei mit diversen Funktionen.
Zwei Kernaufgaben möchte ich dabei besonders herausstellen:
Syntax-Highlighting - Der PineEditor zeigt uns für verschiedene Teilbereiche des Skriptes unterschiedliche Farben an. So sind integrierte Funktionen bläulich eingefärbt und Konstanten, wie zum Beispiel Parameter rot. Das Syntax-Highlighting hilft uns zu erkennen, wo mögliche Fehlerquellen liegen und macht das Skipt allgemein lesbarer.
Hilfestellung - Wir können mittels Mouseover ein kleines Popup anzeigen lassen, welches uns Informationen zu integrierten PineScript Funktionen liefert. Weiterhin können wir mittels CTRl+Click (PC) oder cmd+Click (Mac) die Hilfeseite zur jeweiligen PineScript-Funktion öffnen, in der wir detaillierte Informationen zu allen Parametern, Funktionen und Features finden. Sogar nach über 5 Jahren PineScript-Programmierung nutze ich beide Funktionen täglich.
Der PineEditor integriert außerdem den PineComplier, welcher beim Abspeichern eines Skriptes die Syntax überprüft. Sollte das Skript einen Fehler enthalten, dann zeigt dir der PineEditor eine entsprechende Fehlermeldung an, die dir Rückschlüsse auf das Fehlverhalten gibt. Solltest du mal nicht wissen was falsch gelaufen ist, dann kannst du gerne im deutschen PineScript Chat nachfragen: Deutscher PineScript Chat
█ Was ist PineScript?
PineScript ist eine spezialisierte Scriptsprache, die es nur auf Tradingview gibt. Sie ist sehr mächtig, was es ermöglicht in wenigen Zeilen Funktionalitäten zu erschaffen für die in anderen Programmiersprachen mehrere hundert Zeilen notwendig werden. PineScript ist so designt, dass es für Einsteiger leicht ist einen ersten eigenen Indikator zu erstellen. Dennoch gibt es einige Einstiegshürden, die ich in diesem Kurs auflösen möchte.
PineScript wird genutzt um Indikatoren, Strategien oder Library Skripte zu schreiben.
Indikatoren, dienen dazu grafische Elemente, auf dem Chart oder unterhalb des Charts, anzuzeigen oder Benachrichtigungen auszulösen
Libraries, sind vorgefertigte Funktionalitäten, die in andere Skripte importiert werden können
Backtesting Skripte, dienen dazu eine Strategie gegen die historischen Preisdaten auszuwerten und eine schnelle Übersicht über potenzielle Rendite und andere Statistiken zu bekommen.
PineScript ist sehr gut dokumentiert und daher zugänglich für Einsteiger. Außerdem hat Tradingview eine große Scripter-Community, in der Hilfe schnell gefunden werden kann.
█ Wie wird ein Skript erstellt?
Zur Erstellung eines Skriptes öffnen wir zunächst den Chart. Unterhalb des Charts findest du den "PineEditor". Ein Klick auf diesen öffnet ein neues Fenster, indem die folgenden Zeilen zu sehen sind:
//@version=5
indicator("Mein Skript")
plot(close)
Diese Zeilen sind die Grundstruktur eines jeden Skriptes. Jedes Skript beinhaltet eine Versionsnummer, eine Angabe zur Art des Skriptes (in diesem Fall ein "indicator") und eine Ausgabe (in diesem Fall eine einfache Linie/plot des Schlusskurses)
Solltest du das Skript speichern wollen, dann kannst du innerhalb des PineEditors auf "Speichern" klicken, dem Skript einen Namen geben und es anschließend bei den Indikatoren unter "Meine Skripte" wiederfinden.
Unter der Funktion "Öffnen" kannst du bestehende Skripte öffnen oder neue Skripte erstellen.
█ Übung 1
Zum Abschluss des ersten Tutorials möchte ich dir eine Übungsaufgabe geben, welche ich im nächsten Tutorial auflösen werden:
- Erstelle ein Skript mit dem Namen "Mein erster PineScript Indikator", welches eine durchgehende rote Linie des Eröffnungskurses einer jeden Periode einzeichnet.