Sponsored Links
値動きの幅が一定以上になったらアラートをしてくれると便利だなぁと思ったのですが、TradingViewのPineでは独自の条件を定義してカスタムアラートをつくれるようなので簡単につくってみました。
値動きの幅が一定以上になったら教えてほしいので、アラートの仕様はとっても単純ですが次のような感じです。
ボリジャーバンドの-σとσの差が一定以上になったらアラート。
手順
以下の手順に従って作成すれば最低限はできるようです。
- 条件の計算に必要な変数などを用意
- アラート条件を評価する
- 条件の評価結果を格納した変数を用意
- alertcondition()に評価結果を渡す
まずボリジャーバンドの計算式ですが、詳しいことはとりあえず置いておいて、次のようになります。
$$x\sigma=SMA(n)+(x \sigma)$$
ここでSMA(n)はn日間のSMA、σは標準偏差です。xは2σとか3σの2とか3…これなんて言うのか分かりませんが倍率、というのでしょうか。すみません、何と言えば良いのか分かりません。
PineでSMAと標準偏差を計算するには以下のコードが使えます。
1 2 3 4 5 6 7 8 9 | // stdev() : 任意のデータについて標準偏差を計算する。 // datas : 対象となる任意のデータ // length : 計算に使用するデータ数 stdev(datas,length) // sma() : 任意のデータの移動平均を計算する // datas : 対象となる任意のデータ // length : 計算に使用するデータ数 sma(datas,length) |
後は、用意した値をもとに条件を評価して、alertcondition()に渡すだけになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | // -------------------------------------------------- // xσ(2σ)と-xσ(-2σ)の開きがpips(0.1)以上になったらアラート // -------------------------------------------------- //@version=2 study("BB Alert") n = 20 // 計算に使用するデータ数 src = input(close) // 終値を取得 x = 2 // 標準偏差の倍率 pips = 0.1 // 条件の評価に使用する境界値 middle= sma(src, n) // 移動平均を計算する upper = middle+(x*stdev(src,20)) // +xσのバンドを計算する lower = middle-(x*stdev(src,20)) // -xσのバンドを計算する cond = ((upper -lower) >=pips) // 条件の評価結果を格納する alertcondition(cond, title='BB Condition1', message='Condition Satisfied') // アラートを作成する // 何らかのアウトプットをしないと叱られるので、とりあえずプロットしておく。 plot(upper) plot(lower) |
以上でアラートが作成できましたが、実際に使うには、このスクリプトをチャートに追加してから、アラートを新しく追加する必要があります。
ちなみに、これだと必要最小限なので、レートが-xσ(またはxσ)バンドに張り付いた場合は、ずーっとアラート鳴りっぱなしになるので、-xσとxσ交互にアラートを鳴らすなどの対策をしたほうが良いです。
Sponsored Links