Bollinger Bands ダブルスタンダードデバイエーション取引戦略

作者: リン・ハーンチャオチャン, 日付: 2023-12-18 17:23:42
タグ:

img

概要

この戦略は,ボリンジャーバンドのデュアル標準偏差モデルに基づいて設計された取引戦略である.ボリンジャーバンドの上下線と,1と2つの標準偏差を取引信号として使用する.価格は上下線を突破するとロングになり,価格が下下線を突破するとショートになる.この戦略は,ストップ損失ラインとして1と2つの標準偏差も使用する.

戦略の論理

戦略はまず,ボリンジャー帯の中間レール,上間レール,下間レールを計算します.中間レールは CLOSE のSMAで,上間レールは中間レール + 2です.標準偏差で,下列は中列 - 2標準偏差.価格が上線を突破すると,買い信号が長引くように生成される.価格が下線を突破すると,売り信号が短引くように生成される.また,戦略はミドルレール+1標準偏差とミドルレール-1標準偏差の線もプロットする.それらはストップ損失ラインとして使用される.具体的な論理は:

  1. Bollinger Bands の 中間レールとして CLOSE の SMA を計算する.
  2. CLOSE の標準偏差 STD を計算し, 2*STD を計算する
  3. 中間レール + 2STDはボリンジャー帯の上部レール,中部レール - 2STDは下部レール
  4. 価格が上層線を突破すると長引く
  5. 価格が下線を突破するとショート
  6. 中間レール + 1*STD はストップ・ロストラインとして機能します.ストップ・ロストラインが壊れた場合は,ポジションを閉じる.

戦略 の 利点

  1. 二重標準偏差設計は,誤った信号を避けるために,ブレイクアウト判断をより厳格にする
  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)

もっと