ボリンジャー平均回帰定量戦略の強化

BB EMA ATR SMA stdev
作成日: 2024-11-18 16:07:05 最終変更日: 2024-11-18 16:07:05
コピー: 7 クリック数: 549
1
フォロー
1617
フォロワー

ボリンジャー平均回帰定量戦略の強化

概要

この戦略は,ポーリング帯に基づく平均値回帰取引システムで,トレンドフィルターとダイナミックストップを組み合わせて取引の効果を最適化します.この戦略は,統計学の原理を適用し,価格が平均値から偏ったときに取引し,同時に技術指標を使用して勝利率を上げ,リスクを管理します.

戦略原則

戦略の核心となる要素は以下の通りです.

  1. 20周期のポリンガー帯を主要信号源として使用し,帯域幅は標準差の2倍
  2. 50サイクルEMAをトレンドフィルターとして導入し,取引方向が中期トレンドと一致することを確認します.
  3. 14サイクルATRのダイナミック設定によるストップ・ロズとリターンの設定により,リスク/利益の比率を向上させる
  4. 価格が下行線に触れてEMA上にあるときの多開き,上行線に触れてEMA下にあるときの空き
  5. 2倍ATRを目標として, 1倍ATRをストップポイントとして使用する.

戦略的優位性

  1. 平均回帰とトレンドフォローの利点と組み合わせて,取引の信頼性を高めます.
  2. 市場変動に適応するダイナミックなストップ&テイク設定
  3. 明確な入場・出場ルール,主観的な判断を減らす
  4. 長期にわたる安定した利益に有利な,固定の2:1リスク/利益比
  5. 技術指標の組み合わせにより,偽信号の影響を低減

戦略リスク

  1. 強いトレンドの市場では,大きな動きを見落としてしまう可能性があります.
  2. 横軸整理区間が狭すぎると頻繁に取引される可能性があります.
  3. 市場が変化したときにストップ・ロスが滑り落ちる可能性
  4. 市場の変化に適応するためにパラメータを継続的に監視し調整する必要がある
  5. 取引コストは戦略のリターンに影響を与える可能性がある

戦略最適化の方向性

  1. 補助確認としてボリュームインジケーターを追加
  2. 市場波動率のフィルターを導入し,高波動期を避ける
  3. 最適化パラメータの自己適応機構
  4. 追加された技術指標のクロス検証
  5. 資金管理システムの改善

要約する

これは,古典的な技術分析と近代的な量化方法を組み合わせた戦略である.複数の指標の確認と厳格なリスク管理により,戦略は優れた実用性を有している.

ストラテジーソースコード
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-17 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Optimized Bollinger Mean Reversion", overlay=true)

// Bollinger Band Settings
length = input.int(20, title="BB Length")
src = input(close, title="Source")
mult = input.float(2.0, title="BB Multiplier")

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

// Plot the Bollinger Bands
plot(basis, color=color.blue)
p1 = plot(upper, color=color.red)
p2 = plot(lower, color=color.red)
fill(p1, p2, color=color.rgb(41, 98, 255, 90))

// Trend Filter - 50 EMA
ema_filter = ta.ema(close, 50)

// ATR for Dynamic Stop Loss/Take Profit
atr_value = ta.atr(14)

// Buy condition - price touches lower band and above 50 EMA
buy_condition = ta.crossover(close, lower) and close > ema_filter

// Sell condition - price touches upper band and below 50 EMA
sell_condition = ta.crossunder(close, upper) and close < ema_filter

// Strategy Execution
if (buy_condition)
    strategy.entry("Buy", strategy.long)

if (sell_condition)
    strategy.entry("Sell", strategy.short)

// Exit with dynamic ATR-based stop loss and take profit
strategy.exit("Take Profit/Stop Loss", from_entry="Buy", limit=2*atr_value, stop=1*atr_value)
strategy.exit("Take Profit/Stop Loss", from_entry="Sell", limit=2*atr_value, stop=1*atr_value)