Pine Script(Pineスクリプト)でボリンジャーバンドを作成する方法
今回はボリンジャーバンドのインジケーターを作成する方法を紹介していきます。
このインジケーターの特徴は、上下2組のボリンジャーバンドの表示が出来るのと、ロウソク足の終値が移動平均線の上にあるか、下にあるかで中心の移動平均線の色がかわる仕組みとなっています。
それでは各機能を組み込んでいます。
ボリンジャーバンドを描く関数は「ta.bb」が予め用意されていますが、今回は移動平均線の関数「ta.sma」と偏差計算の関数「ta.stdev」を使って行きます。
スクリプトの内容は以下の通りです。
- 1.中心のMAの計算。
- 2.偏差の計算。
- 3.ボリンジャーバンドの各ラインの計算。
- 4.ロウソク足の終値とMAの位置関係から色を変える機能。
- 5.ボリンジャーバンドの中を塗りつぶす機能。
今回のスクリプトは30行程です。
スクリプトの各部分の説明です。
1.中心のMAの計算、2.偏差の計算
中心のMAの計算、偏差の計算を以下で説明しています。
今回新しく登場しているのは偏差計算の関数「ta.stdev」ですが、移動平均線の計算と同じようにビルドイン関数です。
3.ボリンジャーバンドの各ラインの計算
各ラインの変数を宣言して、計算結果を代入しています。
変数の型を宣言せずに使用していますが、自動的に適切なものが割当られます。
小規模なインジケーターなどは、変数の型などを省略しても間違い難いため、簡潔にかいても良いと思います。
ただ、数百行など長いスクリプトを作成する場合は、積極的に変数の型などは宣言をしておくと、型違いによる間違いなどに気付き易く、未然に不具合を防止できます。
4.中心の移動平均線の色を、ロウソク足の終値と移動平均線の位置関係から、塗り分ける機能
以下の様に書くことで、ロウソク足の終値が移動平均線の上ならアクア色、移動平均線の下ならばオレンジ色に塗り分けることが出来ます。
if文を使わなくてもこのように簡潔に書けますので活用されて下さい。
5.ボリンジャーバンドの内側を塗りつぶす機能
30行のとてもシンプルなインジケーターです。
ボリンジャーバンドの本数を増やしたい場合は、「3.ボリンジャーバンドの各ラインの計算」を部分を増やすことで簡単に追加できますので、チャレンジしてみて下さい。
また次回以降、他のインジケーターの作成方法などご紹介していきます。
5.参考スクリプト
インジケーター名:Bollinger Bands
機能:
ボリンジャーバンドを2組表示出来る。
中心のMAとロウソク足終値の位置関係でMAの色が変化する。
ボリンジャーバンドの内側を塗りつぶすことが出来る。
//@version=5
indicator(shorttitle="BB", title="Bollinger Bands", overlay=true)
price = input(close)
length = input.int(25, minval=1)
deviation = input.float(2.0,title="偏差", minval=0.001, maxval=50)
//移動平均線と偏差の計算
base = ta.sma(price, length)
dev1 = ta.stdev(price, length)
dev2 = deviation*dev1
//各ボリンジャーバンドの計算
upper1 = base + dev1
lower1 = base - dev1
upper2 = base + dev2
lower2 = base - dev2
//中心のMAとロウソク足終値の位置関係でMAの色が変化機能
colorBase = price >= base ? color.aqua : color.orange
plt__Base = plot(base, linewidth=2, color=colorBase)
pltUpper1 = plot(upper1, color=color.new(color.aqua, 80), style=plot.style_circles)
pltUpper2 = plot(upper2, color=color.new(color.aqua, 80))
pltLower1 = plot(lower1, color=color.new(color.orange, 0), style=plot.style_circles)
pltLower2 = plot(lower2, color=color.new(color.orange, 0))
fill(plt__Base,pltUpper2, color=color.new(color.aqua, 80))
fill(pltUpper1,pltUpper2, color=color.new(color.aqua, 80))
fill(plt__Base,pltLower2, color=color.new(color.orange, 80))
fill(pltLower1,pltLower2, color=color.new(color.orange, 80))
Pine Script(Pineスクリプト)をさらに学びたい方へオススメのコンテンツ
OANDA証券では、TradingViewのプログラミング言語である「Pine Script(Pineスクリプト)」に関する記事を豊富に提供しています。
プログラミング初心者の方でも、インジケーターやストラテジーの作成ができるよう、ソースコードをコピペ+少しの修正で組み上がる構成としています。
またOANDA証券とTradingViewのアカウントを連携させることで、「Tradingview」から直接トレードすることが可能です。
ぜひOANDA証券での口座開設をご検討下さい。
本ホームページに掲載されている事項は、投資判断の参考となる情報の提供を目的としたものであり、投資の勧誘を目的としたものではありません。投資方針、投資タイミング等は、ご自身の責任において判断してください。本サービスの情報に基づいて行った取引のいかなる損失についても、当社は一切の責を負いかねますのでご了承ください。また、当社は、当該情報の正確性および完全性を保証または約束するものでなく、今後、予告なしに内容を変更または廃止する場合があります。なお、当該情報の欠落・誤謬等につきましてもその責を負いかねますのでご了承ください。