paaax

PineScript Guide 4 - var und varip

Ausbildung
CME_MINI:NQ1!   NASDAQ 100 E-MINI Futures
Hallo 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.[__tag__=simplemovingaverage]sma[/__tag__](close, 50))
movingAverageCrossunder = ta.crossunder(close, ta.[__tag__=simplemovingaverage]sma[/__tag__](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.[__tag__=simplemovingaverage]sma[/__tag__](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)

🙋‍♂️Listed as "Trusted Pine Programmer for Hire"

💰Save $30 on your Tradingview subscription: https://bit.ly/3OtLyNz

🔓Indicator access: http://www.dize-trading.de

🔒Trial access: https://discord.gg/DqwKjBZ8Qe
Haftungsausschluss

Die Informationen und Veröffentlichungen sind nicht als Finanz-, Anlage-, Handels- oder andere Arten von Ratschlägen oder Empfehlungen gedacht, die von TradingView bereitgestellt oder gebilligt werden, und stellen diese nicht dar. Lesen Sie mehr in den Nutzungsbedingungen.