🔰はじめての Pine インジケーター作成

TradingView にあらかじめ備わっている Pine スクリプトを作成するためのエディタ。
スクリプトを作成するのにはどのエディタを使っても構わないが、Pine スクリプトエディタには下記の利点がある。

  • Pine スクリプトの構文に従ってコードをハイライトする
  • 組込み関数やライブラリ関数にカーソルを置くと、構文のヒントがポップアップ表示される
  • Pine スクリプトのキーワードを ctrl + click / cmd + click すると、リファレンスマニュアルがポップアップ表示される
  • ctrl + space / cmd + space でオートコンプリート機能を有効にできる
  • エディタ上でスクリプトの新しいバージョンを保存すると即座に実行されるため、書き込み / コンパイル / 実行のサイクルを素早く行える
  • 有名エディタほど機能は豊富ではないが、検索と置換、マルチカーソル、バージョン管理などの主要な機能を備えている

エディタを開くには TradingView チャートの下部にある “Pine エディタ” タブをクリックする。そうするとエディタペインが開く。

Pine スクリプトではじめてのスクリプトを作成する。ここでは MACD インジケーターを実装する。

サンプルスクリプト

  1. //@version=5
  2. indicator("MACD #1")
  3. fast = 12
  4. slow = 26
  5. fastMA = ta.ema(close, fast)
  6. slowMA = ta.ema(close, slow)
  7. macd = fastMA - slowMA
  8. signal = ta.ema(macd, 9)
  9. plot(macd, color = color.blue)
  10. plot(signal, color = color.orange)
  • Pine エディタの右上にある “開く” ドロップダウンメニューを表示し、“新規インジケーター” を選択する。
  • 次に上のサンプルスクリプトをコピーする。行番号を含めないように注意する。
  • エディタ内のコードをすべて選択し、サンプルスクリプトに置き換える。
  • “保存” をクリックし、スクリプトの名前を決めると、スクリプトが TradingView クラウド上のユーザーアカウントのもとに保存される。他のユーザーは使用できない。
  • エディタのメニューバーにある “チャートに追加” をクリックすると、チャート上に MACD インジケーターが別ペインで表示される。

はじめての Pine スクリプトはチャート上で実行され、次のようになるはずである。

解説

サンプルスクリプトのコードを一行ずつ見ていこう。

1 行目://@version=5

これは コンパイラアノテーション (コンパイラに対する特別な指示)。スクリプトが Pine スクリプトのバージョン 5 を使用することをコンパイラに伝えている。

2 行目:indicator(“MACD #1”)

チャート上に表示されるスクリプトの名前を “MACD #1” と定義している。

3 行目:fast = 12

MACD の短期 EMA 期間を格納しておくための整数変数 fast を定義している。

4 行目:slow = 26

MACD の長期 EMA 期間を格納しておくための整数変数 slow を定義している。

5 行目:fastMA = ta.ema(close, fast)

ローソク足の終値系列、期間 fast(=12) の EMA (指数平滑移動平均) を格納する変数 fastMA を定義している。

6 行目:slowMA = ta.ema(close, slow)

ローソク足の終値系列、期間 slow(=26) の EMA を格納する変数 slowMA を定義している。

7 行目:macd = fastMA - slowMA

2 つの EMA の差を格納する変数 macd を定義している。

8 行目:signal = ta.ema(macd, 9)

期間 9 の EMA アルゴリズムを使用して macd を平滑化した値を格納する変数 signal を定義している。

9 行目:plot(macd, color = color.blue)

plot() 関数を呼び出して、変数 macd を青い線で出力している。

10 行目:plot(signal, color = color.orange)

plot() 関数を呼び出して、変数 signal をオレンジの線で出力している。

上の最初のバージョンでは MACD を “手動で” 計算したが、Pine スクリプトはインジケーターとストラテジーを書くために設計されていることから、多くの一般的なインジケーターが組み込み関数として用意されている。
MACD もその一つで、ta.macd() で使用することができる。

では、2 つ目のスクリプトを見ていこう。

サンプルスクリプト

  1. //@version=5
  2. indicator("MACD #2")
  3. fastInput = input(12, "Fast length")
  4. slowInput = input(26, "Slow length")
  5. [macdLine, signalLine, histLine] = ta.macd(close, fastInput, slowInput, 9)
  6. plot(macdLine, color = color.blue)
  7. plot(signalLine, color = color.orange)

注目する点は以下の通り。

  • MA の長さを変更できるように組み込み関数 input() を使用して入力パラメータ化した。
  • MACD の計算に組み込み関数 ta.macd() を使用することでコードがすっきりした。

先ほどと同じようにサンプルスクリプトを新しいインジケーターにコピーしてみよう。

  • Pine エディタの右上にある “開く” ドロップダウンメニューを表示し、“新規インジケーター” を選択する。
  • 次に上のサンプルスクリプトをコピーする。先ほどと同じように行番号を含めないように注意する。
  • エディタ内のコードをすべて選択し、サンプルスクリプトに置き換える。
  • “保存” をクリックし、前回とは異なる名前でスクリプトの名前を決める。
  • エディタのメニューバーにある “チャートに追加” をクリックする。“MACD #2” インジケーターが “MACD #1” の下に別のペインで表示される。

2 つ目の Pine スクリプトがチャート上で実行される。
チャート上でインジケーターの名前をダブルクリックすると、スクリプトの設定画面が表示され、ここで MACD の MA 期間を変更できる。

解説

2 つ目のサンプルスクリプトのコードを一行ずつ見ていこう。

2 行目:indicator(“MACD #2”)

#1 から #2 に変更したので、2 つ目のインジケーターはチャート上に “MACD #2” と表示される。

3 行目:fastInput = input(12, “Fast length”)

短期 MA 期間の変数に定数を代入する代わりに、スクリプトの設定画面で値を変更できるよう input() 関数を使用している。
デフォルト値は 12、項目名ラベルは “Fast length ” としている。“パラメーター” タブで値を変更した場合、変数 fastInput に新しい値が格納され、スクリプトは再実行される。

変数名の末尾に “Input” を付加することで、スクリプトの後半部でその値がユーザー入力値であることをわかりやすくしている。
Pine Script® Style Guide で推奨される書き方。

4 行目:slowInput = input(26, “Slow length”)

長期 MA 期間についても同じことをする。変数名、デフォルト値、項目名ラベルの値が異なることに注意する。

5 行目:[macdLine, signalLine, histLine] = ta.macd(close, fastInput, slowInput, 9)

ここで ta.macd() 組み込み関数を呼び出し、最初のバージョンのすべての計算を 1 行で行っている。
この関数は 4 つの引数 (関数名 input の後の括弧 () で囲まれた値) を必要とし、またこれまでの関数のようにただ 1 つの戻り値を返すのではなく、3 つの変数に 3 つの戻り値を返す。
そのため、関数の結果を受け取る 3 つの変数のリストは角括弧 [] で囲む必要がある。
引数のうち 2 つは、ユーザー入力値が入った変数 (短期 MA 期間 fastInput と長期 MA 期間 slowInput) であるであることに注目する。

6 行目:plot(macdLine, color = color.blue)
7 行目:plot(signalLine, color = color.orange)

プロットする変数名は変わったが、これらの行は最初のバージョンと同じことをしている。

2 つ目のスクリプトは最初のバージョンと同じ計算を行うが、計算に使う 2 つの MA 期間を変更することができるようになった。
また、コードは 3 行短くシンプルになり、改良することができた。

コメントを入力:
 

  • tradingview/pine/first_indicator.txt
  • 最終更新: 2023/08/25 12:57
  • by 管理人