見出し画像

TradingView Pineスクリプト講座(7)

前回までで、2本の移動平均線を表示するインジケーターが作成できました。移動平均線の本数を増やしたり、それらの期間を変える方法はこれまでに解説した方法で実現できますのでぜひ試してみて下さい。

今回は2本の移動平均線の交差でアラートを送信させる方法を解説します。この方法を理解することで、任意の条件でアラートを設定できる様になります。

準備

今回はボラティリティが基本的に高く、移動平均線のクロスも確認しやすいであろうGBPJPYの1時間足チャートを開いてみましょう。ポンド円チャートに前回のスクリプトを適用すると、こういった感じになります。

目的の確認

このポンド円チャートでは、直近で短期の上昇トレンドが発生していて、143円台から147円まで上昇しています(青矢印)。この時、初期の段階で2本の移動平均線のゴールデンクロスが発生しています(赤丸)。

ゴールデンクロスの位置で入れれば、このケースでは大きな利益が取れた可能性があります。しかし24時間チャートを監視し続けるというのは、ちょっと人間には無理ですよね。監視対象銘柄が1つでなく複数になれば、常に監視するのはさらに難しくなります。

こうした監視を機械が行ってくれるのがアラートです。アラートを利用すれば、アラートが来たときだけ確認するといったやり方が可能になります。

Pineスクリプトでアラート条件を追加するには?

Pineスクリプトで任意のアラート条件を追加するには、alertcondition関数を利用します。

alertcondition(condition, title, message)

condition: アラートの条件
titile: アラート設定画面の名称
message: アラートが発生した時に表示するメッセージ

関数の第一引数には、アラートの条件を渡す必要があります。

今回のアラート条件を定義してみる

そこで今回のアラート条件をまず文字で定義してみます。

条件1: 短期移動平均線(MA5)が中期移動平均線(MA20)を上に交差
条件2: 
短期移動平均線(MA5)が中期移動平均線(MA20)を下に交差

2本の移動平均線のクロスを、条件として表すと、上記の様になります。この後はこれをPineスクリプトで定義して行きます。

Pineスクリプトでアラート条件を書いてみる

いよいよここからが本題です。先程定義したアラート条件を、実際にPineスクリプトで書いて行きます。

まず前回のコード改めて掲載しておきます。

//@version=3
study(title="マイスクリプト", overlay=true)
val1=input(title="短期MA期間", type=integer, defval=5)
val2=input(title="中期MA期間", type=integer, defval=20)
d1=sma(close, val1)
d2=sma(close, val2)
plot(d1,color=red,linewidth=2)
plot(d2)

上のコードで、短期移動平均線(MA5)の値が格納されているのが「d1」、中期移動平均線の値が格納されているのが「d2」とわかります。

先ほどの条件を書き直してみると、

条件1: d1 が d2 を上に交差
条件2: d1 が d2 
を下に交差

となります。

交差が発生したかをチェックする方法

補足的な部分となりますが、一般的に交差したかを確認するには、

短期移動平均線の値 > 中期移動平均線の値

という条件だけでは確認することができません。この場合、交差が発生していないケースでも、例えばトレンドが発生している時は常に条件が合致してしまいます。ですから交差の確認は

条件1: 1本前の短期移動平均線の値 <= 1本前の中期移動平均線の値
条件2:  短期移動平均線の値 > 中期移動平均線の値

といった具合に、1本前のバーの状態を確認する必要があります。

1本前のバーでは交差しておらず(条件1)、次のバーで交差した(条件2)という2つの条件が共に満たされる必要があります。

この為の関数が用意されていない言語では、それぞれの条件を明記していく必要があります。しかし、Pineスクリプトでは交差を判定する関数が内蔵で用意されていますので、それを利用します。

crossover(x, y) → series[bool]
crossunder(x, y) → series[bool]

crossover関数に、2つの値(xとy)を渡すと、x が y を上に交差した時に true を返します(それ以外は false)。

同様に、crossunder関数に、2つの値(xとy)を渡すと、x が y を下に交差した時に true を返します(それ以外は false)。

そこで先ほどの条件はPineスクリプトではこの様に書けます。

// MA5 が MA20 を上に交差
crossover(d1, d2)

// MA5 が MA20 を下に交差
crossunder(d1, d2)

言葉で書くと大変でしたが、実際にコードにしてみるとシンプルに書ける事がわかります。

さてこの後はあと一歩で、移動平均線交差のアラート条件が完成となります。ただ記事が長くなりそうな為、一旦切りの良い所で区切り、次回この続きを行っていきます。

この記事が気に入ったらサポートをしてみませんか?