チャネル戦略とストップロス
概要
ボリンジャーバンド戦略(Bollinger Bands Strategy)は、ボリンジャーバンドの変動帯を利用してトレンド追随や買われすぎ・売られすぎシグナルを捉える古典的な戦略です。このバージョンでは、元の戦略にストップロス機構を追加してリスクを管理します。
戦略は、ボリンジャーバンドの上下バンドのゴールデンクロス・デッドクロスによって市場の買われすぎ・売られすぎを判断し、バンドを追跡することでトレンドに追随します。ボリンジャーバンドの上バンドと下バンドの間の領域は、現在の市場の変動範囲を反映しています。ボリンジャーバンドは、中央バンド、上バンド、下バンドで構成され、中央バンドはn日の単純移動平均線、上バンドと下バンドは中央バンドにk倍のn日の標準偏差を加減したものです。
原理
ボリンジャーバンドは、市場の変動率と振れ幅を反映するテクニカル指標です。価格がちょうどボリンジャーバンドの下バンド付近に達した場合、市場が売られすぎ状態にあることを示し、その際に連続して発生したギャップは高い確率で埋められると考えられます。回帰特性に基づき、ロングポジションの構築を検討すべきです。価格がちょうどボリンジャーバンドの上バンド付近に達した場合、市場が買われすぎ状態にある可能性が高く、その場合価格は反転して下落する可能性があるため、下落相場で利益を得るためにショートポジションの構築を検討すべきです。
本戦略は、ボリンジャーバンドの買われすぎ・売られすぎシグナルを組み合わせてトレンド追随ポジションを構築し、さらにストップロス機構を追加してリスクを管理します。
価格がボリンジャーバンドの下バンドを上抜けた場合、市場が売られすぎ領域から適正領域に入ったことを示し、この時点でロングポジションを構築できます。価格がボリンジャーバンドの上バンドを下抜けた場合、市場が買われすぎ領域に入ったことを示し、この時点でショートポジションを構築できます。
ポジション構築後、固定のパーセンテージのストップロスを設定しリスクを管理します。損失が設定したストップロス幅を超えた場合、ストップロスを発動して現在のポジションをクローズし、過大な損失を回避します。
優位性
-
本戦略はボリンジャーバンド指標を用いて買われすぎ・売られすぎ領域を判断し、価格と上下バンドのクロスを判定することで安値買い・高値売りを実現します。
-
ボリンジャーバンドの変動性を利用したトレンド追随取引を行います。
-
ストップロス機構を追加することで、1回の取引における最大損失を効果的に抑制できます。
-
トレンド追随とストップロスを組み合わせることで、安定した収益を得ることができます。
リスクと最適化
-
ボリンジャーバンドのパラメータ設定は取引シグナルの品質に影響します。中央バンドの期間nと標準偏差の倍率kは、取引市場に応じて適切に設定する必要があります。そうでなければ、取引シグナルの精度に悪影響を及ぼします。
-
ストップロスの設定が大きすぎても小さすぎても、収益の安定性に影響します。ストップロスの幅が大きすぎると1回の損失リスクが増大し、小さすぎるとストップロスが発動する確率が高まります。銘柄ごとに適切なストップロスパーセンテージを設定する必要があります。
-
他の指標を組み合わせてシグナルをフィルタリングし、取引シグナルの精度を向上させることを検討できます。
-
異なる保有期間の設定をテストすることも可能です。例えば、時間足やより短い周期のボリンジャーバンドを利用して高頻度取引を行い、資金効率を高めることができます。
まとめ
本戦略は、ボリンジャーバンドを用いて買われすぎ・売られすぎ領域を判断しポジションを構築し、ストップロスを追加してリスクを管理する、一般的なトレンド追随型戦略です。パラメータ設定を最適化し、より正確な取引シグナルとストップロス水準の設定を組み合わせることで、安定した利益を得ることができます。
/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-22 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title="Bollinger Bands Strategy", overlay=false, shorttitle="BBS", pyramiding=0, currency=currency.USD, commission_type=strategy.commission.percent, commission_value=0.03, initial_capital=1000)
source = input(close, "Source")
length = input.int(20, minval=1)- 1

