ボリンジャーバンド標準偏差ブレイクアウト戦略

SMA
作成日: 2024-04-30 16:51:34 最終変更日: 2024-04-30 16:51:34
コピー: 3 クリック数: 571
1
フォロー
1617
フォロワー

ボリンジャーバンド標準偏差ブレイクアウト戦略

概要

この戦略は,ブリン帯の指標に基づいており,収束価格が上線を突破したときに多頭ポジションを開く,収束価格が下線を突破したときに空頭ポジションを開く.多頭平仓の条件は価格が中線を突破したため,空頭平仓の条件は価格が中線を突破したためである.この戦略は,ブリン帯の上線下線位置に対する価格の相対的な方向性を判断し,開拓ポジションのタイミングを利用する.

戦略原則

  1. ブリン帯上下中軌を計算する. 中軌は閉盤価格の単純移動平均で,上下軌は中軌は加減一定倍数の標準差である.
  2. 閉店価格が上位に突破すると,多頭ポジションを開きます.
  3. 閉盘価格が下落すると空頭ポジションを開きます.
  4. 複数頭ポジションを保有するときは,収束価格が中軌道から下落した場合,複数頭ポジションを平にする.
  5. 空頭ポジションを保有しているとき,収束価格が中軌道を突破した場合,空頭ポジションを平らにする.

戦略的優位性

  1. ブリン帯は,価格の波動範囲とトレンド方向を効果的に反映し,価格がブリン帯の位置に照らして平仓をとり,トレンド状況を捉えることができる.
  2. 上下軌道の距離は一定標準差があり,価格の変動率の変化に適応できる.標準差が大きいほど,上下軌道の距離は中軌道の距離が大きいほどである.
  3. 平仓条件 中軌を使用し,反転突破上下軌ではなく,できるだけ早く停止を止めることができる.
  4. パラメータは調整可能で,ブリン帯周期,標準差倍数などのパラメータを,異なる品種と周期に適合するように最適化することができる.

戦略リスク

  1. 波動的な市場では,上下線の近くで価格が繰り返し波動し,頻繁に空調が起こり,取引コストが増加する可能性があります.
  2. 価格がトレンドの動きを加速する時には,開設ポイントは比較的遅れており,風の追いつく能力は弱い.
  3. トレンド転換の初期には,引き下がりは中軌道の平位置に触れて,トレンドが進むと,後続の動きを見逃すだろう.

戦略最適化の方向性

  1. ATRなどのストップダスト指標と組み合わせて,撤回を制御することができる.
  2. 多空のポジションのダイナミック比率の調整が利用され,トレンドの強さに応じてポジションの柔軟な配置が可能である.
  3. 準備条件は,準備信号の信頼性を高めるために,量値指標などのより多くのフィルタリング条件と組み合わせることができます.

要約する

この戦略は,ブリンを介してトレンドを捕捉する古典的なトレンド追跡型の戦略である.戦略の論理は明確で,優位性は明らかであり,同時に一定のリスクもある.戦略のパフォーマンスを改善し,適応性を向上させることができる.しかし,いかなる戦略も限界があり,実際の市場状況と組み合わせて柔軟に適用する必要があります.

ストラテジーソースコード
/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// Bollinger Bands: Madrid : 14/SEP/2014 11:07 : 2.0
// This displays the traditional Bollinger Bands, the difference is 
// that the 1st and 2nd StdDev are outlined with two colors and two
// different levels, one for each Standard Deviation

strategy(shorttitle='MBB', title='Bollinger Bands', overlay=true)
src = input(close)
length = input.int(20, minval=1, title = "Length")
mult = input.float(2.0, minval=0.001, maxval=50, title = "Multiplier")

basis = ta.sma(src, length)
dev = ta.stdev(src, length)
dev2 = mult * dev

upper1 = basis + dev
lower1 = basis - dev
upper2 = basis + dev2
lower2 = basis - dev2

// Strategy
long_condition = ta.crossover(close, upper1)
short_condition = ta.crossunder(close, lower1)

if (long_condition)
    strategy.entry("Long", strategy.long)
if (short_condition)
    strategy.entry("Short", strategy.short)

// Exit conditions
exit_long_condition = ta.crossunder(close, basis)
exit_short_condition = ta.crossover(close, basis)

if (exit_long_condition)
    strategy.close("Long")
if (exit_short_condition)
    strategy.close("Short")


colorBasis = src >= basis ? color.blue : color.orange

pBasis = plot(basis, linewidth=2, color=colorBasis)
pUpper1 = plot(upper1, color=color.new(color.blue, 0), style=plot.style_circles)
pUpper2 = plot(upper2, color=color.new(color.blue, 0))
pLower1 = plot(lower1, color=color.new(color.orange, 0), style=plot.style_circles)
pLower2 = plot(lower2, color=color.new(color.orange, 0))

fill(pBasis, pUpper2, color=color.new(color.blue, 80))
fill(pUpper1, pUpper2, color=color.new(color.blue, 80))
fill(pBasis, pLower2, color=color.new(color.orange, 80))
fill(pLower1, pLower2, color=color.new(color.orange, 80))