この戦略は,ボリンジャーバンドのデュアル標準偏差モデルに基づいて設計された取引戦略である.ボリンジャーバンドの上下線と,1と2つの標準偏差を取引信号として使用する.価格は上下線を突破するとロングになり,価格が下下線を突破するとショートになる.この戦略は,ストップ損失ラインとして1と2つの標準偏差も使用する.
戦略はまず,ボリンジャー帯の中間レール,上間レール,下間レールを計算します.中間レールは CLOSE のSMAで,上間レールは中間レール + 2です.標準偏差で,下列は中列 - 2標準偏差.価格が上線を突破すると,買い信号が長引くように生成される.価格が下線を突破すると,売り信号が短引くように生成される.また,戦略はミドルレール+1標準偏差とミドルレール-1標準偏差の線もプロットする.それらはストップ損失ラインとして使用される.具体的な論理は:
一般的には,この戦略は典型的なボリンジャーバンドのブレイクアウト戦略である.信号判断の厳格さを高めるために二重標準偏差を使用し,リスクを積極的に制御するために二重ストップ損失線を採用する.この戦略にはいくつかのパラメータ最適化空間がある.ミドルレール期間と標準偏差倍数などのパラメータを調整することで,より良い戦略パフォーマンスを得ることができる.同時に,この戦略はボリンジャーバンド戦略における偽ブレイクアウトの一般的な問題にも直面している.さらに,ストップ損失メカニズムにはさらなる改善と最適化のための余地がある.
/*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)