【Pine 基礎】スクリプト構造
構造
Pine スクリプトの一般的な構造は下記の通り。
おおきく 3 つに区分できる。
<バージョン> <宣言文> <コード>
バージョン
下のコードは、スクリプトが Pine スクリプトのどのバージョンで書かれているかをコンパイラに伝える。(コンパイラアノテーション)
//@version=5
- バージョンは 1 から 5 まである。
- 省略した場合は 1 になる。マニュアルでは最新バージョンの使用を強く推奨している。
- コードのどこに記述しても構わないが、先頭行に記述することが推奨されている。
- 最新バージョンにおける重要な変更は リリースノート に掲載される。
宣言文
スクリプトは必ず一つの宣言文を含まなければならない。宣言文は 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 Script structure
コメント