単純移動平均線を描く
Pineスクリプトの勉強のために、まずは簡単なスクリプトを書いてみよう!
チャート上に単純移動平均線を書いてみます。下記の図のように青色で20日移動平均線を書いてみます。

移動平均線を描くコード
次のコードが、Pineスクリプトのバージョン4で、20期間の単純移動平均線(SMA)を描くコードです。
とっても簡単ですね。
//@version=4
study("Simple Moving Average", overlay=true)
// 移動平均線の計算
smaValue = sma(close, 20)
// 移動平均線をプロット
plot(smaValue)
- トレーディングビューのPineエディターに上記のコードを入力します。
- 入力が終わったら、チャートへ追加をクリックする。
- チャート上に青い20期間の単純移動平均線が描画されます。
コードの解説
それでは、上記の単純移動平均線(SMA)を描くコードの解説です。
Pineスクリプトのバージョンを指定する
次のように記述してPineスクリプトのバージョンを指定します。
//@version=4
- バージョン3は、
//@version=3 - バージョン4は、
//@version=4 - バージョン5は、
//@version=5
ハージョンによってスクリプトの書き方が違うので、バージョンを間違わないようにしましょう。
インディケーターを定義する
バージョン4では、study関数でインディケータを定義します。(バージョン5ではindicator関数を使います。)
study("Simple Moving Average", overlay=true)
引数のtitleとoverlayについて説明をします。
スクリプト名を定義する(必須)title
study関数では、スクリプト名が必須です。(このサンプルコードでは"Simple Moving Average"というスクリプト名がつけられています。)スクリプト名は自由に付ける事が出来ます。
次のように記述する事も出来ます。
study( title="単純移動平均線" )
title=を省略することできます。通常は省略することが多いです。
study( "単純移動平均線" )
描画するチャートを選択する overlay
overlayは、メインチャートに描画するかペインチャート(pane:別チャート)に描画するかどうかを指定します。
study("Simple Moving Average", overlay=true)
true ⇨ メインチャート
false ⇨ ペインチャート
study( "平均線", overlay=true )

メインチャートに描画
study( "平均線", overlay=false )

ペインチャートに描画
単純平均を計算する
sma関数を使用して、単純平均の計算します。
smaValue = sma(close, 20)
closeは終値(open:始値,hight:高値,low:安値,close:終値)
20は期間(自由な数値を指定できます。)
計算した値を、smaValueという変数に代入しています。この変数名は自由に付けられます。
移動平均線を描画する
plot(smaValue)
plot関数を使用して、チャート上に単純平均の線(単純移動平均線)を描画していきます。
plot関数の第1引数に単純移動平均が指定されているので、単純移動平均線が描画されます。
ゴールデンクロス、デッドクロスを描画(応用編)
次に2本の移動平均線を描いて、ゴールデンクロスとデッドクロスを表示してみます。

- 短期平均の期間を14、長期平均の期間を20、短期移動平均線の色を赤色、長期移動平均線の色を青色にして、2本の移動平均線を描きます。
- 期間はオプションで変更できるようにします。
- オプションで単純移動平均線だけでなく指数移動平均線も選択できるようにします。
- ゴールデンクロスとデッドクロスでシグナルを出すようにします。
- ゴールデンクロスでは、緑色の三角印を表示させます。
- デッドクロスでは、赤色の逆向きの三角印を表示させます。
ゴールデンクロスとは
短期移動平均線が、長期移動平均線を下から上にクロスする事をゴールデンクロスと言います。
ゴールデンクロスは、上昇トレンドが発生したサインになり、これから上昇トレンドが続くことを示しています。
一般的にゴールデンクロスは買いサインだと言われています。
デッドクロスとは
短期移動平均線が、長期移動平均線を上から下にクロスする事をデッドクロスと言います。
デッドクロスは、下降トレンドが発生したサインになり、これから下降トレンドが続くことを示しています。
一般的にデッドクロスは売りサインだと言われています。
ゴールデンクロスとデッドクロスを描画するコード
次のコードがゴールデンクロスとデッドクロスを描画するコードです。
すこし、本格的になってきましたね。
//@version=4
study("Dual Moving Average Cross", overlay=true)
// パラメーターの設定
fastLength = input(14, minval=1)
slowLength = input(20, minval=1)
maType = input(title="MA Type", type=input.string, defval="SMA", options=["SMA", "EMA"])
// 移動平均線の計算
fastMA = maType == "SMA" ? sma(close, fastLength) : ema(close, fastLength)
slowMA = maType == "SMA" ? sma(close, slowLength) : ema(close, slowLength)
// 移動平均線をプロット
plot(fastMA, color=color.red, title="Fast MA")
plot(slowMA, color=color.blue, title="Slow MA")
// ゴールデンクロスとデッドクロスのシグナル
crossUp = crossover(fastMA, slowMA)
crossDown = crossunder(fastMA, slowMA)
// シグナルをプロット
plotshape(crossUp, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Golden Cross")
plotshape(crossDown, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Dead Cross")
コードの解説
それでは、コードの解説をします。
バージョンの指定
//@version=4
バージョン4を指定しています。
インディケーターの定義
study("Dual Moving Average Cross", overlay=true)
インディケーター名を”Dual Moving Average Cross”としました。
メインチャートに描くので overlay=trueとしましす。
パラーメーターの設定
// パラメーターの設定
fastLength = input(14, minval=1)
slowLength = input(20, minval=1)
maType = input(title="MA Type", type=input.string, defval="SMA", options=["SMA", "EMA"])
短期移動平均の期間
fastLength = input(14, minval=1)
- 短期移動平均の期間を、input関数で変更できるようにします。
- デフォルト値を14に設定
- 最小値を1に設定
- 短期移動平均の期間(の値)を、変数のfastLengthに代入する。
長期移動平均の期間
slowLength = input(20, minval=1)
- 長期移動平均の期間を、input関数で変更できるようにします。
- デフォルト値を20に設定
- 最小値を1に設定
- 長期移動平均の期間(の値)を、変数のslowLengthに代入する。
単純移動平均と指数移動平均の選択
maType = input(title="MA Type", type=input.string, defval="SMA", options=["SMA", "EMA"])
- input関数で、単純移動平均か指数移動平均を選択できるようにします。
- パラメーターのタイトルを MA Type と設定
- 入力される型を文字列に指定:type=input.string
- デフォルト値を単純移動平均(SMA)に指定
- options=[“SMA”, “EMA”] で、単純移動平均(SMA)か指数移動平均(EMA)を選択できるようにする。
- 選択した結果(文字列)を、変数の maType に代入
次回のお知らせ
今回は、ゴールデンクロスのインディケータを作成して売買タイミングをサインを表示できるようになりました。
次回は、ゴールデンクロスを使った売買手法が有効なのか、ストラテジーを作成して検証をしてみたいと思います。

コメント