{{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]]