ボリンジャーバンドを最大4種類(± 1σ~4σ)まで同時に引けるTradingView用インジケーターを公開します。不要なラインは設定から非表示にもできるので扱いやすいと思います。
Pine言語のサンプルコードを公開しますので、カスタマイズも自由です。ぜひご利用ください。
Pineスクリプトのバージョン5(v5)に対応したサンプルコードも追加しました。
本インジケーターの概要
1つのインジケーターで複数のボリンジャーバンドをまとめて表示できます。初期設定では1σ~3σのラインが表示されます。パラメータ設定で日数や色、4σラインの表示、1σ~3σライン非表示設定なども可能。

初期設定
1σライン | 終値の20日ボリンジャーバンド(±1σ) | 薄いオレンジ | |
---|---|---|---|
2σライン | 終値の20日ボリンジャーバンド(±2σ) | やや薄いオレンジ | |
3σライン | 終値の20日ボリンジャーバンド(±3σ) | やや濃いオレンジ | |
4σライン | 終値の20日ボリンジャーバンド(±4σ) | 濃いオレンジ | (初期は非表示) |
設定変更可能なパラメータ
・計算対象の価格(終値以外に変更可能)
・各ラインを計算する足数
・各ラインの色
・各ラインの表示/非表示


サンプルコード
以下にPine言語のサンプルコードを掲載しておりますので、コピペでPineエディタに貼り付けてお使いください。
サンプルコードを元にTradingViewインジケーターを作成する手順が分からない方は、以下の記事を参考にしてください。(記事内の手順3を今回のサンプルコードに置き換えて進めてみてください)

Pine(v5)バージョン
//@version=5
indicator(title="$TTOSample_Boll4", shorttitle="Boll4", overlay=true)
src = input.source(close, title="価格")
boll_length = input.int(20, title="長さ", minval=1)
visible_middle = input.bool(true, title="ミドルラインを表示するか?")
visible_s1 = input.bool(true, title="1σラインを表示するか?")
visible_s2 = input.bool(true, title="2σラインを表示するか?")
visible_s3 = input.bool(true, title="3σラインを表示するか?")
visible_s4 = input.bool(false, title="4σラインを表示するか?")
middle = ta.sma(src, boll_length)
std = ta.stdev(src, boll_length)
plot_color = color.orange
bb_s4_upper = middle + std * 4
bb_s3_upper = middle + std * 3
bb_s2_upper = middle + std * 2
bb_s1_upper = middle + std * 1
bb_s1_lower = middle + std * -1
bb_s2_lower = middle + std * -2
bb_s3_lower = middle + std * -3
bb_s4_lower = middle + std * -4
plot(visible_s4 ? bb_s4_upper : na, color=color.new(plot_color, 0))
plot(visible_s3 ? bb_s3_upper : na, color=color.new(plot_color, 20))
plot(visible_s2 ? bb_s2_upper : na, color=color.new(plot_color, 50))
plot(visible_s1 ? bb_s1_upper : na, color=color.new(plot_color, 80))
plot(visible_middle ? middle : na, color=color.new(color.white, 50))
plot(visible_s1 ? bb_s1_lower : na, color=color.new(plot_color, 80))
plot(visible_s2 ? bb_s2_lower : na, color=color.new(plot_color, 50))
plot(visible_s3 ? bb_s3_lower : na, color=color.new(plot_color, 20))
plot(visible_s4 ? bb_s4_lower : na, color=color.new(plot_color, 0))
Pine(v4)バージョン
//@version=4
study(title="$TTOSample_Boll4", shorttitle="Boll4", overlay=true)
src = input(close, type=input.source, title="価格")
boll_length = input(20, title="長さ", minval=1)
visible_middle = input(true, title="ミドルラインを表示するか?", type=input.bool)
visible_s1 = input(true, title="1σラインを表示するか?", type=input.bool)
visible_s2 = input(true, title="2σラインを表示するか?", type=input.bool)
visible_s3 = input(true, title="3σラインを表示するか?", type=input.bool)
visible_s4 = input(false, title="4σラインを表示するか?", type=input.bool)
middle = sma(src, boll_length)
std = stdev(src, boll_length)
plot_color = color.orange
bb_s4_upper = middle + std * 4
bb_s3_upper = middle + std * 3
bb_s2_upper = middle + std * 2
bb_s1_upper = middle + std * 1
bb_s1_lower = middle + std * -1
bb_s2_lower = middle + std * -2
bb_s3_lower = middle + std * -3
bb_s4_lower = middle + std * -4
plot(visible_s4 ? bb_s4_upper : na, color=color.new(plot_color, 0))
plot(visible_s3 ? bb_s3_upper : na, color=color.new(plot_color, 20))
plot(visible_s2 ? bb_s2_upper : na, color=color.new(plot_color, 50))
plot(visible_s1 ? bb_s1_upper : na, color=color.new(plot_color, 80))
plot(visible_middle ? middle : na, color=color.new(color.white, 50))
plot(visible_s1 ? bb_s1_lower : na, color=color.new(plot_color, 80))
plot(visible_s2 ? bb_s2_lower : na, color=color.new(plot_color, 50))
plot(visible_s3 ? bb_s3_lower : na, color=color.new(plot_color, 20))
plot(visible_s4 ? bb_s4_lower : na, color=color.new(plot_color, 0))
おわりに
今回はボリンジャーバンドのサンプルコードをご紹介しました。
今後も色々とPine言語のサンプルを公開していこうと思いますのでよろしくお願い致します。
※リクエスト等あればTwitter(@eltraders)までどうぞ。