{{tag>pine pine基礎}} ====== 【Pine 基礎】スクリプト構造 ====== {{INLINETOC}} ===== 構造 ===== Pine スクリプトの一般的な構造は下記の通り。\\ おおきく 3 つに区分できる。 <バージョン> <宣言文> <コード> ===== バージョン ===== 下のコードは、スクリプトが Pine スクリプトのどのバージョンで書かれているかをコンパイラに伝える。([[:tradingview:pine:script_structure#コンパイラアノテーション|コンパイラアノテーション]]) //@version=5 * バージョンは 1 から 5 まである。 * 省略した場合は 1 になる。マニュアルでは最新バージョンの使用を強く推奨している。 * コードのどこに記述しても構わないが、先頭行に記述することが推奨されている。 * 最新バージョンにおける重要な変更は [[https://www.tradingview.com/pine-script-docs/en/v5/Release_notes.html|リリースノート]] に掲載される。 ===== 宣言文 ===== スクリプトは必ず一つの宣言文を含まなければならない。宣言文は 3 種類ある。 * indicator() * strategy() * library() indicator() を宣言した例 //@version=5 indicator("My Script") plot(close) 宣言文の役割: * スクリプトの種類を特定し、スクリプト内で許可されるコンテンツや、スクリプトの使用方法、実行方法を決定する。 * スクリプトの主要なプロパティを設定する。 * スクリプトの名前 * チャートに追加したときの表示位置 * 表示する値の精度と形式 * ランタイムを制御する設定値 (チャートに表示する描画オブジェクトの最大数など) など 各スクリプトには、それぞれ異なる要件がある。 * インジケーター:少なくとも 1 つのチャート上に出力を生成する関数呼び出し(''plot()''、 ''plotshape()''、''barcolor()''、''line.new()'' など)が含まれていなければならない。 * ストラテジー:少なくとも 1 つの ''strategy.*()'' 関数の呼び出し(''strategy.entry()'' など)が含まれていなければならない。 * ライブラリ:少なくとも 1 つのエクスポート関数またはユーザー定義型が含まれていなければならない。 ===== コード ===== スクリプトのアルゴリズムを書くところ * 変数の宣言 * 変数の再割り当て * 関数の宣言 * 組み込み関数呼び出し * ユーザー定義関数呼び出し * ライブラリー関数呼び出し * if、for、while、switch、型構造。 ===== コメント ===== ダブルスラッシュ(%%//%%)はコメント。\\ コメントは行のどこから始めても構わない。 //@version=5 indicator("") // これはコメントです。 a = close // これもコメントです。 plot(a) なお、Pine エディタは ctrl + / でコメントアウト、コメントアウト解除ができる。 ===== コード中の改行 ===== 長い行は折り返しできる。折り返しは 4 の倍数以外の数のスペースを挿入して行う。\\ (4 の倍数のスペースはローカルスコープのインデントとして認識される) a = open + high + low + close 折り返して記述 a = open + high + low + close 長い関数呼び出しは以下のようにできる。 plot(ta.correlation(src, ovr, length), color = color.new(color.purple, 40), style = plot.style_area, trackprice = true) ユーザー定義関数宣言内のステートメントも折り返しできる。\\ updown(s) => isEqual = s == s[1] isGrowing = s > s[1] ud = 0 ud := isEqual ? 0 : isGrowing ? (nz(ud[1]) <= 0 ? 1 : nz(ud[1])+1) : (nz(ud[1]) >= 0 ? -1 : nz(ud[1])-1) ===== コンパイラアノテーション ===== コンパイラアノテーションは、スクリプトに特別な指示を出すコメント。 * ''%%//%%@version='' は、コンパイラが使用する Pine スクリプトのバージョンを指定する。 * ''%%//%%@description'' は、library() 宣言文を使用するスクリプトの custom description を設定する。 * ''%%//%%@function''、''%%//%%@param''、''%%//%%@returns'' は、関数宣言の上に置くと、ユーザー定義関数、そのパラメーター、その戻り値の custom description を追加する。 * ''%%//%%@type'' と ''%%//%%@field'' は、型宣言の上に置くと、ユーザー定義型とそのフィールドの custom description を追加する。 * ''%%//%%@variable'' は、変数の宣言の上に置くと、その変数の custom description を追加する。 * ''%%//%%@strategy_alert_message'' は、アラート作成ダイアログの "Message "フィールドの初期値を設定する。 * ''%%//%%#region'' と ''%%//%%#endregion'' は折りたたみ可能なコード領域を作成する。 ===== 参考 ===== * Pine Script® v5 User Manual [[https://www.tradingview.com/pine-script-docs/en/v5/language/Script_structure.html|Script structure]]