ボリンジャーバンドに基づく二重標準偏差取引戦略


作成日: 2023-12-18 17:23:42 最終変更日: 2023-12-18 17:23:42
コピー: 0 クリック数: 746
1
フォロー
1621
フォロワー

ボリンジャーバンドに基づく二重標準偏差取引戦略

概要

この戦略は,ブリン帯の2つの標準差モデルに基づいて設計された取引戦略である.これは,ブリン帯の上下軌道と1つ,2つの標準差を取引信号として使用する.価格がブリン帯を突破して上線するときは多めにし,価格がブリン帯を突破して下線するときは空っぽにする.この戦略は,同時に1つ,2つの標準差をストップポイントとして使用する.

戦略原則

この戦略は,ブリン帯の中軌,上軌,下軌を最初に計算します. 中軌はCLOSEのSMAで,上軌は中軌+2です.*標準差,下線は中線-2*スタンダード差 価格が上線を突破すると買い信号が多く,下線を突破すると売り信号が空になる. さらに,戦略は中線+1スタンダード差と中線-1スタンダード差の線を描く. これらは,ストップ・ロスのように使用されます. 具体的な論理は:

  1. ブリン帯中軌道としてCLOSEのSMAを計算する
  2. CLOSEの標準差STDを計算し,2を計算する*STD
  3. 中心軌道+2*STDはブリンを軌道に乗せ 中央軌道-2へ*STDはブリンを倒した
  4. 価格が上昇すると,
  5. 価格が下落すると空白する
  6. 中軌道+1*STDは,ストップラインとして,ストップラインが破られた場合,平仓

戦略的優位性

  1. 2つの標準差の設計により,突破判断に厳格で,誤った信号を回避する
  2. リスクの最大化のための二重ストップライン設計
  3. パラメータ最適化スペースは大きい,中軌道周期,標準差倍数も調整できる
  4. 引き下げは,ストップを調整することで制御できます.

戦略リスク

  1. ブリンベルト戦略は偽の突破を招き,不正な取引シグナルを引き起こす.
  2. 双標準差と双ストップラインの設定が過度に厳格になり,信号の排除の機会が少なくなる
  3. パラメータの設定を間違えた場合,戦略上のリスクが増加する可能性があります.
  4. 撤回制御は不完全で,極端な状況での損失を効果的に制御することはできません.

戦略最適化の方向性

  1. 偽の突破を避けるために,他の指標と組み合わせたタブリン帯の取引信号をフィルターすることを考慮することができます.
  2. 異なるパラメータの設定をテストし,より良いリターン・リフレーズを得るためにパラメータを最適化できます.
  3. 追跡型ストップや余剰比率ストップなどのダイナミックなストップメカニズムを設計できます.
  4. 機械学習アルゴリズムを組み込む自動最適化パラメータ

要約する

この戦略は,全体として,典型的なブリン帯突破戦略である。この戦略は,二重標準差を使用して信号判断の厳格性を高め,二重のストップダメージラインを採用し,リスクを積極的に制御する。この戦略には,一定のパラメータ最適化スペースがあり,中軌道周期,標準差倍数などのパラメータを調節することによって,より良い戦略パフォーマンスを得ることができる。同時に,この戦略には,ブリン帯戦略が普遍的に直面している偽突破の問題もある。さらに,止損機構は,さらに改善され,最適化される必要がある。

ストラテジーソースコード
/*backtest
start: 2022-12-11 00:00:00
end: 2023-12-17 00:00:00
period: 1d
basePeriod: 1h
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(34, minval=1)
mult = input.float(2.0, minval=0.001, maxval=50)

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

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))

// Entry conditions
longCondition = ta.crossover(close, upper1)
shortCondition = ta.crossunder(close, lower1)

// Entry and exit strategy
strategy.entry("Buy", strategy.long, when=longCondition)
strategy.entry("Sell", strategy.short, when=shortCondition)

strategy.close("Buy", when=shortCondition)
strategy.close("Sell", when=longCondition)