モメントム・ボリンジャー・バンドス・ブレイクアウト戦略は,ボリンジャー・バンドス・インディケーターとムービング・平均指標を組み合わせて,特定のモメントム・条件下でブレイクアウト操作を行う定量的な取引戦略である.この戦略は主にボリンジャー・バンドスの上下レールを用いて価格を定義し,移動平均値で追加の価格フィルタリングを追加し,特定のモメントム・条件下で買い売り信号を発行し,ボリンジャー・バンドスの上下レールでブレイクアウト操作を行う.
戦略は主にボリンジャーバンド指標とMA移動平均指標に基づいている.ボリンジャーバンドと移動平均値はトレンドフォローする指標に属している.ボリンジャーバンドは価格の高低変動範囲を表現するために標準偏差概念を使用する.移動平均値は価格データを滑らかにし,価格トレンドの方向性を判断する.
戦略の基本的な論理は
ボリンジャー帯のパラメータを初期化して 中間レール,上部レール,下部レールを計算します
移動平均のパラメータを初期化します
価格がボリンジャー帯の下線を上から下へと突破し,移動平均が下線を下にすると,ロングします.
セールシグナル:価格がボリンジャーバンドの上部レールを上から下へと突破し,移動平均が上部レールの上にあるとき,ショートします.
エクジットシグナル:価格がボリンジャーバンドの範囲に戻ると,ポジションを閉じる.
この戦略は,ボリンジャー帯と移動平均指標の利用を組み合わせ,特定のモメント条件下で取引信号を生成します.これは典型的なトレンドフォロー戦略です.
価格変動範囲を明確に判断するためにボリンジャー帯と価格傾向の方向性を決定するための移動平均を使用することで,二重指標フィルタリングの組み合わせによって形成される取引信号は比較的高い信頼性を持っています.
価格がボリンジャー帯の境界を突破するだけでなく,移動平均値も突破する必要があります. これは偽の突破を避けるのに十分なインパクトサポートを保証します.
戦略パラメータは合理的かつ柔軟に設定され,ボリンジャー帯と移動平均周期のパラメータを異なる品種と市場状況に適応するように調整できます.
戦略のアイデアは 明確で分かりやすく 実行し検証しやすいです
ボリンジャー・バンドの波動性指標自体は,急速に変化するトレンドに潜在的遅れがあり,無効な取引信号を生む可能性があります.
フィルタリング指標として使用される場合,そのパラメータの設定は戦略の頻度に直接影響します.不適切な設定は取引機会を逃す可能性があります.
ボリンジャー・バンド指標と移動平均指標の両方に頼って 効果的なシグナルを形成すると どちらかが失敗すると 戦略全体に影響されます
ブレイクアウト戦略はより攻撃的です.ボリンジャー帯の境界をテストするために価格が引き下げると,彼らは罠にかけられる傾向があります.
Bollinger Bands のパラメータを最適化し,異なるサイクルと変動性を持つ品種に適応します.例えば,Bollinger Bands の周期と標準偏差倍数パラメータを変更します.
移動平均周期パラメータを最適化して周波数とフィルタリング効果を均衡させる.
ストップ・ロスの戦略を増やして 取引毎の最大損失を制御する.
RSI と MACD などの他の指標と組み合わせて複合指標を形成し,戦略のための取引信号を豊かにします.
価格傾向の方向とブレイクアウト成功率を判断するのに役立つ機械学習モデルを組み合わせます
この戦略は,ボリンジャーバンド指標と移動平均指標を統合し,一定の価格ブレイクモメンタムを確保した後,エントリーと出口信号を生成する.戦略のアイデアは明確で,実装が簡単で,トレンド市場を効果的に追跡することができます.しかし,同時に,特定の引き戻しリスクもあります.パラメータ設定のために最適化され,市場の変化に適応するためにストップ損失が必要です.
/*backtest start: 2022-12-28 00:00:00 end: 2024-01-03 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // strategy("Advanced Bollinger Bands Strategy", overlay=true) //BB Values wall1= input(defval=true,title="===BB Values===",type=input.bool) source = input(defval=close,title="BB Source",type=input.source) length = input(20,title="BB Length", minval=1) mult = input(2.0,title="BB Multiplier",minval=0.001, maxval=50) basis = sma(source, length) dev = mult * stdev(source, length) upper = basis + dev lower = basis - dev offset = input(0, " BB Offset", type = input.integer, minval = -500, maxval = 500) plot(basis, "Basis", color=#872323, offset = offset) p1 = plot(upper, "Upper", color=color.teal, offset = offset) p2 = plot(lower, "Lower", color=color.teal, offset = offset) fill(p1, p2, title = "Background", color=#198787, transp=95) //Moving Average Values wall2= input(defval=true,title="===MA Values===",type=input.bool) nfl= input(defval=14,title="Moving Average Period",type=input.integer,minval=1,maxval=100) source1= input(defval=close,title="Moving Average Source",type=input.source) noisefilter= sma(source1,nfl) plot(noisefilter,style=plot.style_line,linewidth=2,color=color.yellow,title=" Moving Average Filter") bgcolor(noisefilter<lower?color.green:noisefilter>upper?color.red:na,title="Moving Average Filter") //Strategy Conditions wall3= input(defval=true,title="===Strategy Conditions===",type=input.bool) bl= input(defval=false,title="Exit at Basis Line?",type=input.bool) nflb= input(defval=false,title="Use Moving Average Filter?",type=input.bool) //Strategy Condition buyEntry = crossover(source, lower) sellEntry = crossunder(source, upper) if (nflb?(crossover(source,lower) and noisefilter<lower): crossover(source, lower)) strategy.entry("BBandLE", strategy.long, oca_name="BollingerBands", comment="BBandLE") else strategy.cancel(id="BBandLE") if (nflb?(crossunder(source,lower) and noisefilter>upper): crossunder(source, lower)) strategy.entry("BBandSE", strategy.short, oca_name="BollingerBands", comment="BBandSE") else strategy.cancel(id="BBandSE") strategy.close_all(when=bl?crossover(source,basis) or crossunder(source,basis):crossover(source,upper) or crossunder(source,lower))