{{tag>pine pine基礎}}
====== 【Pine 基礎】変数宣言 ======
{{INLINETOC}}
===== 変数宣言の構文 =====
[] [] = |
or
= |
* | :「または」を表す。
* []:囲まれた部分は 0 回または 1 回出現する。
* :変数の宣言モード。 無指定、var、varip がある。
* :型の明示。省略できる。
* :変数名。
* :リテラル、変数、式、関数呼び出し。
* :if 文、for 文、while 文、switch 文。
* :タプル宣言。角括弧 ([]) で囲まれた変数名のカンマ区切りリスト (例: [ma, upperBand, lowerBand])。
以下はコードはすべて有効な変数宣言の書き方。
BULL_COLOR = color.lime
i = 1
len = input(20, "Length")
float f = 10.5
closeRoundedToTick = math.round_to_mintick(close)
st = ta.supertrend(4, 14)
var barRange = float(na)
var firstBarOpen = open
varip float lastClose = na
[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9)
plotColor = if close > open
color.green
else
color.red
==== na で初期化 ====
* 多くの場合、変数の型はコンパイル時に右辺の値から自動的に推測されるため、型の明示は冗長となる。
* ただし ''na'' は特定の型を持たない値であるため、型の明示が必要。
baseLine0 = na // compile time error!
float baseLine1 = na // OK
baseLine2 = float(na) // OK
==== タプル宣言 ====
* 関数呼び出しや構造体は複数の値を返すことができる。これらを呼び出し、返される値を格納したい場合は、タプル宣言を使用する。
* タプル宣言は、カンマで区切られた1つ以上の値の集合を [] で囲んだもの。
[bbMiddle, bbUpper, bbLower] = ta.bb(close, 5, 4)
===== 変数の再代入 =====
* 変数の再代入は、'':='' 演算子を用いて行われる。
* 変数が最初に宣言され、初期値が与えられた後にのみ行うことができる。
//@version=5
indicator("", "", true)
sensitivityInput = input.int(2, "Sensitivity", minval = 1, tooltip = "Higher values make color changes less sensitive.")
ma = ta.sma(close, 20)
maUp = ta.rising(ma, sensitivityInput)
maDn = ta.falling(ma, sensitivityInput)
// On first bar only, initialize color to gray
var maColor = color.gray
if maUp
// MA has risen for two bars in a row; make it lime.
maColor := color.lime
else if maDn
// MA has fallen for two bars in a row; make it fuchsia.
maColor := color.fuchsia
plot(ma, "MA", maColor, 2)
===== 宣言モード =====
3 種類のモードがある。
* 無指定:変数の割り当てと初期化が各バーごとに行われる。
* var:変数の割り当てと初期化が最初のバーの 1 回だけ行われる。次のバー以降では、新しい値が再割り当てされるまで最後の値が保持される。
* varip:変数の割り当てと初期化が各バーごとに行われる。ただし、リアルタイムバーの更新時に変数の値はロールバックされず前回の値が保持される。ロールバックについては [[:tradingview:pine:execution_model#リアルタイムバー上のスクリプト実行|]] を参照。
===== 参考 =====
* Pine Script® v5 User Manual [[https://www.tradingview.com/pine-script-docs/en/v5/language/Variable_declarations.html|Variable declarations]]