目次

, ,

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

Pine スクリプトエディタ

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

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

MACD インジケーターを作成

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 スクリプトはチャート上で実行され、次のようになるはずである。

解説

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

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 をオレンジの線で出力している。

2 つ目のスクリプト

上の最初のバージョンでは 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)

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

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

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 行短くシンプルになり、改良することができた。

参考