ボリンジャーバンドクロスオーバーシグナルスクリーニング取引戦略

BB SMA DEV SIGNAL
作成日: 2025-02-18 14:47:16 最終変更日: 2025-02-18 14:47:16
コピー: 1 クリック数: 454
1
フォロー
1617
フォロワー

ボリンジャーバンドクロスオーバーシグナルスクリーニング取引戦略

概要

これは,ブリン帯の指標に基づいた取引戦略で,価格とブリン帯の交差関係によって市場トレンドを認識し,取引信号を生成する.この戦略は,55周期の移動平均をブリン帯の中軌道として使用し,ブリン帯の上下軌道として1.0倍標準差を計算する.この戦略の核心は,価格がブリン帯を突破して上下軌道に進むことによって,多引と空き時間を決定することである.

戦略原則

戦略の仕組みは,主に以下のいくつかの重要な部分から構成されています.

  1. ブリン帯計算:55周期のシンプル移動平均 ((SMA) を中軌道として用いて,標準差の倍数は1.0で,上下軌道に計算する.
  2. 信号生成の論理:
    • 閉店価格が上位に突破すると,多信号が生成されます.
    • クローズオフシグナルを生成する
  3. 信号確認機構: barssince関数を使用して,最後の突破から周期数を計算し,空の信号の周期距離を比較して最終取引方向を決定する.
  4. ビジュアル化:図面上の三角標識によって取引信号を表示し,異なる色で多空区分を使用する.

戦略的優位性

  1. 信号明晰: 価格とブリン帯の明瞭な交差関係によって取引信号を生成し,模糊帯を回避する.
  2. トレンドフォロー: 本質的にトレンドフォロー型の戦略で,強気な状況でよりよい収益を得ることができる.
  3. 視覚的直感: 取引信号の認識は,色填充と形状のマークによって非常に直感的です.
  4. パラメータの柔軟性:ブリン帯の周期と標準差倍数は,異なる市場状況に応じて調整することができる.
  5. システム完備: 完全な信号生成,可視化,警報機能が含まれている.

戦略リスク

  1. 振動市場リスク:横盤振動市場では頻繁に偽信号が生じることがあります.
  2. 遅延リスク:より長い周期の移動平均 ((55) を使ったため,信号に一定の遅延がある可能性があります。
  3. 逆転リスク: 急なトレンドの逆転で,大きな引き下がりを受ける可能性があります.
  4. パラメータの感受性: ブリン帯のパラメータの選択は,戦略の性能に大きな影響を与える.

戦略最適化の方向性

  1. 交付量確認の導入:交付量指標を信号確認の補助条件として追加することができる.
  2. 動的パラメータ最適化:市場の変動率動的に調整できるブリン帯の標準差倍数.
  3. トレンドフィルターを追加: 偽信号をフィルターするために,より長い周期のトレンド指標を追加できます.
  4. リスク管理のための移動停止または固定停止の追加が推奨されます.
  5. 市場状態分類:市場状態認識モジュールを追加し,異なる市場状態で異なるパラメータ設定を使用できます.

要約する

これは,ブリン帯に基づくクラシックなトレンドフォロー戦略で,価格とブリン帯の交差関係によって市場トレンドを捕捉する.戦略の設計は簡潔で明快で,良好なビジュアル効果とシグナル生成メカニズムがある.震動的な市場では挑戦されるかもしれないが,適切なパラメータの最適化と補助指標の追加により,戦略の安定性と信頼性をさらに向上させることができる.

ストラテジーソースコード
/*backtest
start: 2024-02-19 00:00:00
end: 2025-02-16 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Bollinger Bands Filter [Strategy]", overlay=true)

// -- INPUTS (kratke tooltipy, ziadne prelomenie riadku)
src    = input.source(close, title="Source", tooltip="Source for BB calc")
length = input.int(55, minval=1, title="SMA length", tooltip="Period for BB basis")
mult   = input.float(1.0, minval=0.1, maxval=5, title="Std Dev", tooltip="Std Dev multiplier")
CC     = input.bool(true, "Color Bars", tooltip="If true, color bars by BB logic")

// -- Bollinger calc
basis = ta.sma(src, length)
dev   = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev

// -- Long/Short logic
longCondition  = close > upper
shortCondition = close < lower

L1 = ta.barssince(longCondition)
S1 = ta.barssince(shortCondition)

longSignal  = L1 < S1 and not (L1 < S1)[1]
shortSignal = S1 < L1 and not (S1 < L1)[1]

// -- Plot signals
plotshape(shortSignal ? close : na, color=color.red, style=shape.triangledown, size=size.small, location=location.abovebar, title="Short Signal")
plotshape(longSignal  ? close : na, color=color.green, style=shape.triangleup,  size=size.small, location=location.belowbar, title="Long Signal")

// -- Plot BB lines
plot(upper, color=color.new(color.red,  40), title="Upper BB")
plot(lower, color=color.new(color.green,40), title="Lower BB")
plot(basis, color=color.new(color.blue, 10), title="Basis")

// -- Fill
fill(plot(na), plot(na)) // 'dummy' fill reset
fill(plot(upper, display=display.none), plot(basis, display=display.none), color=color.new(color.teal, 80))
fill(plot(lower, display=display.none), plot(basis, display=display.none), color=color.new(color.orange, 80))

// -- barcolor
bcol = close > upper ? color.lime : close < lower ? color.red : na
barcolor(CC ? bcol : na)

// -- Alerts
alertcondition(longSignal,  title="Long - BB",  message="BB Filter Long")
alertcondition(shortSignal, title="Short - BB", message="BB Filter Short")

// -- Strategy entries
if longSignal
    strategy.entry("Long", strategy.long)

if shortSignal
    strategy.entry("Short", strategy.short)