平均回帰ボリンジャーバンド取引戦略と合理的回帰シグナルの組み合わせ

BB MA SD MR RSI VOL
作成日: 2025-01-06 15:33:01 最終変更日: 2025-01-06 15:33:01
コピー: 0 クリック数: 86
1
フォロー
1166
フォロワー

平均回帰ボリンジャーバンド取引戦略と合理的回帰シグナルの組み合わせ

概要

この戦略は、ボリンジャー バンドと価格平均回帰の原理に基づいた定量的な取引システムです。価格と移動平均の偏差を監視し、ボリンジャーバンドの上限と下限のブレイクスルーシグナルと組み合わせて、市場が買われ過ぎまたは売られ過ぎになった後に価格が平均値に戻ると予想されるときに取引が行われます。この戦略では、パーセンテージしきい値を使用して価格偏差の度合いを測定し、適切なトリガー条件を設定して誤ったシグナルを除外し、取引の精度を向上させます。

戦略原則

戦略の中核となるロジックは、次の主要な要素に基づいています。

  1. 20日移動平均を中間トラックとして使用し、標準偏差の2倍のボリンジャーバンドチャネルを構築します。
  2. 重大な逸脱を識別するために3.5%の価格逸脱閾値を導入
  3. is_outside変数を通じて価格が州外かどうかを追跡する
  4. 価格がボリンジャーバンドの範囲に戻ると、取引シグナルがトリガーされます。
  5. 具体的な取引ルールは次のとおりです。
    • 価格が偏差から戻り、上限バンドを突破したらロングポジションを取る
    • 価格が偏差から戻り、下限バンドを突破したらショートする

戦略的優位性

  1. 平均回帰ロジックは堅牢である
    • 価格は最終的に平均値に戻るという統計法則に基づいて
    • 偏差しきい値を通じて取引機会の重要性を確保する
  2. 完璧なリスク管理
    • ボリンジャーバンドはボラティリティの範囲を明確に示します
    • 変動の激しい状況での取引を避けるための偏差追跡
  3. 強力なパラメータ調整機能
    • ボリンジャーバンドのパラメータは、商品の特性に応じて調整できます。
    • 逸脱閾値はリスクの好みに基づいて設定できる

戦略リスク

  1. トレンド市場の失敗のリスク
    • 強いトレンドの市場では、誤ったシグナルが頻繁に発生する可能性があります。
    • 市場の状況を識別するためにトレンドフィルターを追加することをお勧めします
  2. パラメータ感度リスク
    • 不適切なパラメータ設定は戦略のパフォーマンスに影響を与える可能性があります
    • 履歴データのバックテストを通じてパラメータを最適化する必要がある
  3. スリッページコストリスク
    • 頻繁な取引は取引コストの上昇につながる可能性がある
    • 保有期間の制限とコスト管理を増やすことをお勧めします

戦略最適化の方向性

  1. 市場環境の認識を高める
    • ADXなどのトレンド強度指標の紹介
    • 市場の状況に応じてパラメータを動的に調整する
  2. ストッププロフィットとストップロスの仕組みを改善する
    • ATRに基づいて動的なストップロスを設定する
    • 利益を守るためにモバイルストッププロフィットを導入
  3. 取引頻度を最適化する
    • 最小保有期間の制限を延長する
    • コストを管理するために取引間隔を設定する

要約する

この戦略は、ボリンジャー バンドと平均回帰原理を通じて市場の買われすぎと売られすぎの機会を捉え、合理的な偏差しきい値とステータス追跡メカニズムを組み合わせることで、取引リスクを効果的に制御します。戦略フレームワークは優れたスケーラビリティを備えており、パラメータの最適化と機能の改善を通じてさまざまな市場環境に適応できます。リアルタイムアプリケーションではリスク管理に注意し、特定の製品の特性に応じてパラメータを調整することをお勧めします。

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

//@version=5
strategy("Estratégia com Bandas de Bollinger e Sinal de Retorno", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=200)

// Configurações das Bandas de Bollinger
length = input.int(20, title="Período da média")
mult = input.float(2.0, title="Desvio padrão")
bbBasis = ta.sma(close, length)
bbUpper = bbBasis + mult * ta.stdev(close, length)
bbLower = bbBasis - mult * ta.stdev(close, length)

// Configuração para a distância da média
percent_threshold = input.float(3.5, title="Distância da média (%)") / 100

dist_from_mean = 0.0
trigger_condition = false
if not na(bbBasis)
    dist_from_mean := math.abs(close - bbBasis) / bbBasis
    trigger_condition := dist_from_mean >= percent_threshold

// Variáveis para identificar o estado do afastamento
var bool is_outside = false
var color candle_color = color.new(color.white, 0)

if trigger_condition
    is_outside := true

if is_outside and close <= bbUpper and close >= bbLower
    is_outside := false
    candle_color := color.new(color.blue, 0) // Atribui uma cor válida
else
    candle_color := color.new(color.white, 0)

// Aplicar cor às velas
barcolor(candle_color)

// Plotar Bandas de Bollinger
plot(bbBasis, color=color.yellow, title="Média")
plot(bbUpper, color=color.red, title="Banda Superior")
plot(bbLower, color=color.green, title="Banda Inferior")

// Lógica de entrada e saída
longCondition = not is_outside and close > bbUpper
if (longCondition)
    strategy.entry("Buy", strategy.long)

shortCondition = not is_outside and close < bbLower
if (shortCondition)
    strategy.entry("Sell", strategy.short)