ボリンジャーブレイクストック戦略 (Bollinger breakout stock strategy) は,ボリンジャーバンドを使用して株価変動を追跡し,価格が通常の波動性範囲を突破して取引信号を生成する定量的な取引戦略である.価格がボリンジャーバンドの下位を突破するとロングになり,価格がボリンジャーバンド上位を突破するとショートになる.この戦略は短期間の価格動向を追跡し,短期取引に適している.
この戦略は,中帯,上帯,下帯を20日間の閉盤価格を使用して計算する.中帯は20日間の単純な移動平均線であり,上帯と下帯は中帯から2つの標準偏差の距離に置かれています.
ストック閉場価格が下帯を下回ると,価格は通常の波動範囲を突破し,新しい上昇傾向を開始していることを示します.この時点で戦略はコードに基づいて長引きます.ストップロスは最近の10バーの最低値に設定され,利益は最近の10バーの最高値に設定されます.
ストップ・ロスは10バーの最高レベルで,利益は10バーの最低レベルです.この場合は,ストップ・ロスは10バーの最高レベルで,利益は10バーの最低レベルです.
この戦略は,トレンド変化と変動範囲を特定するためにボリンジャー帯を効果的に利用し,価格が逆転する可能性のある時期に早期に入ります.
この戦略の主な利点は以下の通りです.
ボリンジャー帯を用いてトレンド変化点を効果的に特定し,短期トレンドを効率的に捉える.
ストップ・ロスは,損失を制限する,最近の最低スイング・ローに設定されているため,引き上げリスクが小さい.
最近の最高水準で設定された利益を取ると 一方向的なトレンド動きから利益を最大化することができます.
シンプルで明快な論理で 簡単に理解し 変更できます 量子取引の初心者にも適しています
考慮すべきリスクもいくつかあります.
ボリンジャー帯は変動変化に非常に敏感で,不適切なパラメータは誤った信号を引き起こす可能性があります.期間などのパラメータはそれに応じて調整する必要があります.
株価の変動が高く ストップロスは早すぎる 傾向に追いつけない ストップロスの幅を広げることを検討できる
信号の遅延は,過度の未実現利益を引き起こす可能性があります.他の指標は,以前のエントリを特定するために追加することができます.
市場の予測不可能な状況により 利益/ストップ損失の引き上げは困難で パラメータを調整するために 手動的な介入が必要になります
戦略をさらに改善する方法:
信号の確認のために他の指標を追加します.例えば,音量ピークです.
動的にボリンジャーパラメータを調整して 変動に合わせる
ストップ・ロスを増強し/利益を引き出す,例えばストップ・ロスを後押しし,段階的に利益を引き出す.
最適な配合を見つけるため,異なる株でパラメータをテストします.
マシン学習を導入して パラメータを自動最適化します
ボリンガーブレイクアウト戦略は,逆転を特定するための明確な論理を持っています. 限られた引き下げリスクは,短期的なトレンドを把握することができます. しかし,利益目標の制限とシグナル遅延の問題もあります. パラメータチューニング,より良いストップ損失 / 利益を取ること,フィルターを追加などにより改善できます. 中期トレンドを追跡するために短期的な株式取引に適しています.
/*backtest start: 2023-11-14 00:00:00 end: 2023-12-14 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // Initial settings strategy("Bulle de bollinger", overlay = true) // Parameter Settings mdl = sma(close, 20) dev = stdev(close, 20) upr = mdl + 2*dev lwr = mdl - 2*dev // Plot plot(mdl, color = color.green) // Plot moving average p1 = plot(upr, color = color.red) // Plot Upper_band p2 = plot(lwr, color = color.green) // Plot lower band fill(p1, p2, color = color.blue) // Fill transparant color between the 2 plots // Strategy entry & close if open[1] < lwr[1] and close[1] < lwr[1] // Previous price lower than lower band and current close is higher than lower band stop_level = lowest(10) profit_level = highest(10) strategy.entry(id = 'bb_buy', long = true) strategy.exit("TP/SL", "bb_buy", stop=stop_level, limit=profit_level) if open[1] > upr[1] and close[1] > upr // Previous price is higher than higher band & current close is lower the higher band stop_level = highest(10) profit_level = lowest(10) //strategy.entry(id = 'bb_sell', long = false) //strategy.exit("TP/SL", "bb_sell", stop=stop_level, limit=profit_level)