移動平均エンベロープを最大3本表示!%値や色も変更可能なTradingView用インジケーター公開【EMA対応/Pineコード掲載】

「移動平均エンベロープ」とは、移動平均の上下数%に平行したラインを引くインジケーターで、移動平均からの乖離率が視覚化しやすくなります。

TradingViewにも「Envelope」という名前の内蔵インジケーターがありますが、もう少し色々設定できるものが欲しかったので自作してみました。

・最大3本までのエンベロープを同時に引けます
・不要なエンベロープは設定で非表示にできます
・エンベロープの%値や色も自由に変更できます
・SMAとEMAの両方に対応しています(切り替え可能)

Pine言語のサンプルコード付きで公開しますので、ぜひご利用ください。

本インジケーターの概要

1つのインジケーターで最大3本のエンベロープを表示できます。不要なエンベロープは非表示にできるので、1本や2本だけ使いたいという方でもOKです。

各エンベロープは%値や色を設定できますし、SMAだけでなくEMAでの計算にも対応しています。

初期設定

MA 終値の25日単純移動平均線(SMA) 白色(透過率50%)
エンベロープ1 MA ± 1% 表示する / ライム色(不透明度30%)
エンベロープ2 MA ± 2% 表示する / ライム色(不透明度50%)
エンベロープ3 MA ± 3% 表示する / ライム色(不透明度80%)

設定変更可能なパラメータ

インジケーターの設定画面は、以下のような構成となっております。

(1) 移動平均線の計算対象価格を変更したい時
「計算価格」を変更すると、高値や出来高などでも計算可能です。

(2) 移動平均線を計算する長さ(足数)を変更したい
たとえば日足で75日MAに変更したければ、「MA長さ」を「75」に変更してください。

(3) SMA/EMA切り替え
「EMAとして計算する」にチェックを入れると、単純移動平均線(SMA)ではなく指数平滑移動平均線(EMA)で計算します。

(4) エンベロープの%値とライン色
下の方にある「Env1 %」~「Env3 %」が各エンベロープの設定です。移動平均からの乖離率を%値で指定できます。

また一番右の色をクリックするとカラーパレットから色を選択できます。不透明度も変更可能。

(5) エンベロープの表示/非表示切り替え
各エンベロープ設定の左端にあるチェックを外すと、そのエンベロープは表示されなくなります。

サンプルコード

以下のコードをコピペしてお使いください。

サンプルコードを元にTradingViewインジケーターを作成する手順が分からない方は、以下の記事を参考にしてください。(記事内の手順3を今回のサンプルコードに置き換えて進めてみてください)

関連記事はこちら

TradingView(トレーディングビュー)のインジケーターは、Pineという専用プログラミング言語で自作することができます。 本記事ではPine言語の入門ということで、TradingViewで利用可能なインジケーター用スクリプト([…]

//@version=4
study(title="$TTO_Sample_MAEnv", shorttitle="MAEnv", overlay=true)

//-------------------------
// input設定
//-------------------------

src = input(close, type=input.source, title="計算価格", group="移動平均線の設定")
ma_length = input(25, title="MA 長さ", minval=1, inline="MA Settings", group="移動平均線の設定")
is_ema = input(false, title="EMAとして計算する", inline="MA Settings", group="移動平均線の設定")

env1_enable = input(true, "", inline="Env Pct 1", group="エンベロープ設定")
env1_pct    = input(1, "Env1 %", inline="Env Pct 1", group="エンベロープ設定")
env1_color  = input(color.new(color.lime, 70), "", type=input.color, inline="Env Pct 1", group="エンベロープ設定")

env2_enable = input(true, "", inline="Env Pct 2", group="エンベロープ設定")
env2_pct    = input(2, "Env2 %", inline="Env Pct 2", group="エンベロープ設定")
env2_color  = input(color.new(color.lime, 50), "", type=input.color, inline="Env Pct 2", group="エンベロープ設定")

env3_enable = input(true, "", inline="Env Pct 3", group="エンベロープ設定")
env3_pct    = input(3, "Env3 %", inline="Env Pct 3", group="エンベロープ設定")
env3_color  = input(color.new(color.lime, 20), "", type=input.color, inline="Env Pct 3", group="エンベロープ設定")

//-------------------------
// メイン処理
//-------------------------

ma_value = is_ema ? ema(src, ma_length) : sma(src, ma_length)
plot(ma_value, title="MA", color=color.new(#ffffff, 50))

plot(env1_enable ? ma_value * (1 + env1_pct/100) : na, color=env1_color)
plot(env1_enable ? ma_value * (1 - env1_pct/100) : na, color=env1_color)

plot(env2_enable ? ma_value * (1 + env2_pct/100) : na, color=env2_color)
plot(env2_enable ? ma_value * (1 - env2_pct/100) : na, color=env2_color)

plot(env3_enable ? ma_value * (1 + env3_pct/100) : na, color=env3_color)
plot(env3_enable ? ma_value * (1 - env3_pct/100) : na, color=env3_color)

おわりに

今後も「かゆいところに手が届く」「日本語表記で分かりやすい」インジケーターのサンプルコードを色々と作ってみようと思っています。

ブログの記事更新はTwitter(@eltraders)または本ページ右から登録できる「メルマガTTO通信」でお知らせしているので、ぜひフォローorご購読よろしくお願いします。