ゆとり世代の自由研究

勉強が一生終わりません

Pineスクリプト Bollinger Bands Strategy

定義

ボリンジャーバンド・ストラテジーは、他の指標の助けも借りながら、戦略的な構想を伴った取引判断を行うためによく利用されます。ボリンジャーバンドは、アッパーバンド、ミドルバンド、ロワーバンドの合計3つのバンドで構成されています。これらの各バンドは、該当の銘柄が示す極端な価格動向に焦点を当てるために使用されます。アッパーバンドは買われ過ぎの状態として、ロワーバンドは売られ過ぎの状態として、ミドルバンドは移動平均として機能します。

一般的には、強い売りによってロワーバンドをブレイクした後、価格はロワーバンドから上方に戻り、ミドルバンドへと接近していきます。ボリンジャーバンド・ストラテジーではこうした現象を利用しているため、ロワーバンドを下回る終値が必要とされます。それゆえトレーダーやアナリストにとって、売られ過ぎの状態を優位に利用するための具体的な方法の一つとして、ロワーバンドがブレイクされた時点で買いを入れることが妥当だと判断されることもあります。

歴史

ボリンジャーバンドは、1980年代にジョン・ボリンジャーによって考案されました。20世紀末にこのストラテジーが誕生して以来、テクニカル分析を行う人々の間できわめて頻繁に使用されるツールの1つとなりました。

要点と着目点

ボリンジャーバンド・ストラテジーは、売られ過ぎの状態を示すのによく使われる戦略です。しかし、この戦略が正しい場合でも、売り圧力が継続することもあります。このような場合、売り圧力がいつ終わるかを判断するのが難しいこともあり、一旦買ってみるという急な判断をした時の備えとしても保護対策が必要になります。

ストップロス注文は、ロワーバンドで必要以上に買いを入れ続ける取引から、トレーダーやアナリストを守るための戦略の1つです。

制限事項

このストラテジーにはかなり多くの制限事項がありますが、多くの場合は特定の事例に依存しており、市場の動向を追跡するにあたって、このストラテジーをどう利用するかに依存します。ボリンジャーバンド・ストラテジーに従って、価格がすぐにリバウンドするとは限らないということも、その要因の1つです。多くの場合、戦略自体の修正も可能ですが、それでもトレーダーやアナリストがリバウンドの遅れによって大きな損失を被ることを常に防止できるとは限りません。

また、先に述べたように、売り圧力がいつ終わるかを判断することが難しいため、トレーダーが買い進めることを決定した際にも、安全確保のために保護対策を組み合わせておくことが、このストラテジーには不可欠です。

サマリー

ボリンジャーバンド・ストラテジーは、他の指標の助けも借りながら、市場の状況や株式の位置に基づいて戦略的な取引決定を行うためによく使用される戦略です。しかし、一貫した売り圧力が存在し、この圧力がすぐに弱まらないかぎりは、株価は売られ過ぎの状態になり、新安値を更新し続けることになります。ボリンジャーバンド・ストラテジーを効果的に使用するためには、ストップロス注文などの適切な出口戦略を持つことが推奨されます。こうすることによって、売り圧力がどこで終わるかも分からないままにロワーバンドに乗り続ける銘柄価格から、自分の取引と自分自身を確実に保護することができます。 

 

//@version=5
strategy("Bollinger Bands Strategy", overlay=true)
source = close
length = input.int(20, minval=1)
mult = input.float(2.0, minval=0.001, maxval=50)
basis = ta.sma(source, length)
dev = mult * ta.stdev(source, length)
upper = basis + dev
lower = basis - dev
buyEntry = ta.crossover(source, lower)
sellEntry = ta.crossunder(source, upper)
if (ta.crossover(source, lower))
    strategy.entry("BBandLE", strategy.long, stop=lower, oca_name="BollingerBands", oca_type=strategy.oca.cancel, comment="BBandLE")
else
    strategy.cancel(id="BBandLE")
if (ta.crossunder(source, upper))
    strategy.entry("BBandSE", strategy.short, stop=upper, oca_name="BollingerBands", oca_type=strategy.oca.cancel, comment="BBandSE")
else
    strategy.cancel(id="BBandSE")
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)