Juni 25, 2019

Introducing Pine Script v4!

Lernen Sie die neue Version der Programmiersprache Pine Script v4 kennen! Sie enthält eine Reihe neuer Funktionen. Wir haben die Struktur der Sprache verbessert und eine Reihe von Problemen behoben. Das wichtigste und lang erwartete Feature ist jedoch die Unterstützung von Zeichenobjekten. 

Wir werden kurz auf die neuen Funktionen in diesem Blog-Post eingehen. Bitte lesen Sie die Dokumentation und das Referenzhandbuch durch, wenn Sie mehr über die Details erfahren möchten (beachten Sie bitte, dass Sie u.U. direkt zum Abschnitt Beschreibung der Zeichnungsobjekte gehen können).

Label Drawing Object

Mit der Funktion label.new können Sie Labels im Chart zeichnen, auch solche, die einen beliebigen Text enthalten. Hier ist ein Beispiel für ein Skript, welches ein Label zeichnet beim schließen des letzten Bar-Close:

//@version=4
study("Last Bar Price", overlay=true)

l = label.new(bar_index, na, 'last price is '+tostring(close), 
  color=close >= open ? color.green : color.red, 
  textcolor=color.white,
  style=label.style_labeldown, yloc=yloc.abovebar)

label.delete(l[1])

Sie können das Label-Objekt nach der Erstellung mit der Funktions-Familie label.* bearbeiten und löschen. Hier ist ein Beispiel für ein komplexeres Skript mit Label – Pivot Points High/Low.

Line Drawing Object

Mit der Funktion line.new können Sie Linien auf dem Chart zeichnen. Hier ist ein Beispiel für ein einfaches Skript, das eine Linie zeichnet, die das Hoch des aktuellen Taktes und das Tief eines 10. historischen Taktes verbindet:

//@version=4
study("Line", overlay=true)
l = line.new(bar_index, high, bar_index[10], low[10], width = 4)
line.delete(l[1])

Linienobjekte können mit den entsprechenden Funktionen der line.*-Familie bearbeitet und gelöscht werden. Hier ist ein Beispiel für ein komplexeres Skript mit Linienobjekten – Zig Zag.

Bitte beachten Sie, dass wir derzeit insgesamt ca. 50-55 Zeichnungen eines einzelnen Typs (Etikett oder Linie) pro Skript auf dem Chart anzeigen können. Dies ist eine beabsichtigte Einschränkung, die dazu dient, eine übermäßige Serverauslastung zu verhindern.

Die neuen Zeilen- und Label-data-Typen erweitern die Möglichkeiten von Pine Script erheblich, indem sie es Ihnen ermöglichen, eine komplexe Logik hinter den populären Indikatoren in User-Skripten zu implementieren. Beispiele finden Sie in der Dokumentation.

Series String

Wir unterstützen nun Variablen für Serien-Strings. Hier ist ein Beispiel für die Verwendung von Serien-Strings in Labels:

//@version=4
study("Series string", overlay = true)
draw_label(title) =>
    label.new(bar_index, high, text=title)
t = close >= open ? "green" : "red"
draw_label(t)

 

Var Keyword

Eine Variable, die auf die übliche Weise deklariert wird, ist bei jeder Berechnung des Skripts neu zu initialisieren. Diese erfordern Skripte, die den vorherigen Wert der Variablen explizit ausgeben. Das var Schlüsselwort deklariert eine Variable und initialisiert sie nur einmal. Dadurch kann der Wert der Variablen ab dem Zeitpunkt der Initialisierung oder der letzten Zuordnung automatisch zwischen den Bars gespeichert werden. Hier ist ein Beispiel für ein Skript, das die Anzahl der grünen Bars auf dem Chart zählt:

//@version=4
study("My Script")
var s = 0.0
if close >= open
    s := s + 1
plot(s)

Jedes mal wenn die close >= open Bedingung erfüllt ist, wird der Wert der s variable Parameter um eins erhöht. Der Anfangswert kann eine beliebige arithmetische Gleichung sein.

Der Syntax für die Deklaration von Variablen mit dem Schlüsselwort var verhindert die Verwendung des folgenden Codes: s := nz(s[1], s).Die Deklaration von Variablen mit dem var Variablenmodifikator kann bei der Arbeit mit Zeichnungen sehr nützlich sein.

Umbenennung von Built-in Konstanten, Variablen und Funktionen

In Pine Script v4 wurden die folgenden integrierten Konstanten, Variablen und Funktionen umbenannt:

  1. Color constants (e.g red) are moved to the color.* namespace (e.g. color.red).
  2. The color function has been renamed to color.new.
  3. Constants for input types (e.g. integer) are moved to the input.* namespace (e.g.  input.integer).
  4. The plot style constants (e.g. histogram style) are moved to the plot.style_* namespace (e.g. plot.style_histogram).
  5. Style constants for the hline function (e.g. the dotted style) are moved to the hline.style_* namespace (e.g. hline.style_dotted).
  6. Constants of days of the week (e.g. sunday) are moved to the dayofweek.* namespace (e.g.  dayofweek.sunday).
  7. The variables of the current chart timeframe (e.g. period, isintraday) are moved to the timeframe.* namespace (e.g. timeframe.period, timeframe.isintraday).
  8. The interval variable was renamed to timeframe.multiplier.
  9. The ticker and tickerid variables are renamed to syminfo.ticker and syminfo.tickerid respectively.
  10. The n variable that contains the bar index value has been renamed to bar_index.

Der Grund für die Umbenennung aller oben genannten Punkte war, die Standard-Sprachwerkzeuge zu strukturieren und die Arbeit mit Code zu erleichtern. Neue Namen werden nach Zuweisungen unter gemeinsamen Präfixen gruppiert. Beispielsweise sehen Sie eine Liste mit allen verfügbaren Farbkonstanten, wenn Sie im Editor „color“ eingeben und Strg + Leerzeichen drücken.

Explizite Variablen-Typ Deklaration

In Pine Script v4 ist es zum Zeitpunkt der Deklaration nicht mehr möglich, Variablen mit einem unbekannten Datentyp zu erstellen (siehe na-Wert). Dies wurde getan, um eine Reihe von Problemen zu vermeiden, die auftreten, wenn sich der Variablentyp nach seiner Initialisierung mit dem na-Wert ändert. Von nun an müssen Sie ihren Typ explizit über Schlüsselwörter oder Typfunktionen (z.B. float) angeben, wenn Sie Variablen mit dem Wert na deklarieren:

//@version=4
study("NA", overlay=true)
float a = na
a := if close >= open
    high
else
    low
plot(a)

Probieren Sie das neue Pine Script v4 aus! Einige Anwender haben bereits neue Funktionen getestet und mehrere beeindruckende Skripte anhand von Zeichnungen geschrieben.

Zum Beispiel hat Ricardo Santos eine Reihe von Skripten geschrieben, die Sie unten sehen können:

Joris Duyck schrieb das Trendlines-Skript, das die Möglichkeiten der Linienzeichnung veranschaulichte.

Wir hoffen, dass diese Beispiele Sie inspirieren werden! Sie können Fragen stellen, Probleme diskutieren und Feedback geben oder chattenWir möchten uns bei allen Mitgliedern der Pinescripters-Community bedanken, die am Beta-Test teilgenommen und uns sehr geholfen haben! Sie können auch code-bezogene Fragen auf unserer Seite mit den Stack Overflow stellen.