ATRダイナミックポジションとトレーリングストップロスシステムを組み合わせた二重確認レンジフィルター戦略

Range Filter ATR SMA Trailing Stop POSITION SIZING
作成日: 2025-05-26 14:22:36 最終変更日: 2025-05-26 14:22:36
コピー: 0 クリック数: 311
2
フォロー
319
フォロワー

ATRダイナミックポジションとトレーリングストップロスシステムを組み合わせた二重確認レンジフィルター戦略 ATRダイナミックポジションとトレーリングストップロスシステムを組み合わせた二重確認レンジフィルター戦略

概要

この戦略は,範囲フィルター (Range Filter) と平均リアル波幅 (Average True Rampage, ATR) を組み合わせた低反転量化取引システムである.これは,範囲フィルターを通じてトレンドの方向性を認識し,同時にATRを使用してポジションのサイズを動的に調整し,尾随の損失を設定し,リスクを効果的に制御する.この戦略は,価格が連続して2つの周期を突破して範囲フィルター上で下線を確認するように要求し,この二重メカニズムは,偽の突破を効果的に減らすことを確認する.システムのデフォルトリスクは,取引毎のリスク資本の1%に設定され,保守的で安定しています.この戦略は,波動が大きいが,傾向が顕著な市場環境に特に適しています.

戦略原則

この戦略の核心となる原則は,範囲フィルターによるトレンド認識とATRのリスク管理システムとの結合である.

  1. 範囲フィルター計算:

    • まず,価格のSMAを中心として計算します.
    • 価格の絶対値と中心線の偏差の移動平均を計算し,波動の範囲として
    • 軌道上 = 中心線 + 波動範囲
    • 下軌道 = 中央線 - 波動範囲
  2. トレンド確認条件:

    • 上昇傾向: 2連期の上昇が終了
    • 下降傾向:価格は2連鎖で下落した
    • この2つの認証メカニズムは 偽信号を減少させます
  3. ATR 動的ポジション:

    • ATRを使って現在の市場の波動性を測る
    • ポジション計算式: (口座資金 * リスク比率) / (ATR * ポイント値)
    • 市場の変動が大きいほど,ポジションが小さい. 変動が小さいほど,ポジションが大きい.
  4. ATR 尾行停止:

    • 複数のヘッダのストップロスは,現在の価格 (ATR*倍数) に設定されます.
    • 空頭ストップは,現在の価格 + (ATR*倍数) に設定されます.
    • 価格が有利な方向に移動すると,ストップ・ロスの線もそれに合わせて移動し,利益をロックします.

戦略的優位性

  1. 適応力がある:

    • 範囲フィルターは,異なる市場周期の変動特性に自動的に適応する
    • ATRのポジション調整メカニズムにより,戦略は変動する環境に自動的に適応できます.
  2. リスク管理が上手い:

    • 取引ごとに固定リスクのパーセント (デフォルトは1%)
    • ポジションの大きさは市場の変動に合わせて調整されます.
    • 追随停止メカニズムは,利益を有効にロックし,損失を制限します.
  3. 信号の質は高い:

    • ダブル確認メカニズム ((連続2回突破) が偽信号を減少させる
    • 範囲フィルターは,市場のノイズをフィルターし,真のトレンドを識別します.
  4. 低退却特性:

    • 尾行ストップは,単一取引の最大損失を制限します.
    • 保守的なリスクパラメータ設定 ((1%のリスク) は,全体的な撤退を減少させる
    • ダイナミックポジションは高波動期に自動的に縮小し,リスクを低減します.
  5. 透明でカスタマイズ可能:

    • 策略のパラメータが明確で論理が明確です.
    • 異なる市場と個人リスクの好みに合わせてパラメータを調整できます.

戦略リスク

  1. 横盤市場も不振だった.:

    • 市場が動いていない場合,頻繁に偽のブレイクシグナルが生じる可能性があります.
    • 解決方法: トレンドフィルターを追加したり 確認回数を増やすことができます.
  2. 急速な逆転のリスク:

    • 強いトレンドが突然逆転すると,尾行ストップは間に合わない可能性があります.
    • 解決方法:波動率の上昇指数または尾行止損距離の縮小を組み合わせる
  3. パラメータ感度:

    • 範囲フィルター周期とATR倍数の選択は,戦略のパフォーマンスに大きな影響を与える
    • 解決法: 十分な履歴調査を行い,適切なパラメータの組み合わせを見つけます.
  4. 継続的な損失のリスク:

    • 取引ごとにリスクがコントロールされている場合でも,連続した負債取引が大きな引き下げにつながる可能性があります.
    • 解決策:最大連続損失の制限を設定するか,市場環境のフィルターを追加する
  5. スライドポイントと手数料の影響:

    • リアルタイムの取引では,スライドポイントと手数料が戦略のパフォーマンスを大きく影響する可能性があります.
    • 解決策:合理的な手数料とスライドポイントの見積もりを再評価に含め,十分な利益の余地を残す

戦略最適化の方向性

  1. 市場環境のフィルターを追加する:

    • 波動率指数 (例えばボリンジャー帯域) を導入して,市場の状態を識別することができる.
    • 低波動率や収束市場での取引を一時停止またはパラメータの調整
    • これは横軸市場における偽信号を減らすことで,全体的な勝率を向上させることができます.
  2. 範囲フィルタリングサイクルを最適化:

    • 固定サイクルではなく適応サイクルを使うことを検討する
    • 市場変動に基づいて自動的に調整できる範囲フィルター周期
    • これは,異なる市場段階に戦略を より良く適応させる.
  3. 複数の時間枠の確認を導入する:

    • より高い時間枠でトレンド確認条件を追加する
    • 主なトレンドの方向のみで取引し,逆向きの取引を避ける
    • これは,信号の質と勝利率を大幅に改善します.
  4. 動的にATR倍数を調整する:

    • 市場波動特性に基づく動的調整による後続停止のATR倍数
    • 低波動市場では小倍数,高波動市場では大倍数を使用
    • 損失の防止の効率と柔軟性を向上させる
  5. タイムベースの退出メカニズムを追加:

    • ポジションの最大時間制限を設定します.
    • 価格が予想通りに動かない場合,強制平仓
    • 資金が長期にわたって無効取引に囚われることなく

要約する

双確認範囲フィルター戦略は,ATRダイナミックポジションと尾行ストップシステムを組み合わせて,リスク制御に焦点を当てた量化取引戦略である.それは,範囲フィルターを通じてトレンドの方向性を認識し,シグナルを確認するために2連期のブレイクを要求し,ATRを使用してポジションのサイズと尾行ストップを動的に調整し,各取引のリスクを前もって設定された割合で効果的に制御する.この戦略の主な優点は,強力な自律性と優れたリスク制御能力にある.特に波動が大きいが,明らかなトレンドのある市場には適している.

ストラテジーソースコード
/*backtest
start: 2025-02-01 00:00:00
end: 2025-05-25 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/

//@version=5
strategy("Range Filter + ATR Strategy (Low Drawdown)", overlay=true, 
     pyramiding=0, default_qty_type=strategy.percent_of_equity, 
     default_qty_value=100, commission_type=strategy.commission.percent, 
     commission_value=0.1, initial_capital=10000)

// Input parameters
rangePeriod = input.int(14, title="Range Filter Period")
atrPeriod = input.int(14, title="ATR Period")
riskPercent = input.float(1.0, title="Risk % per Trade", minval=0.1, maxval=5)
useATRSizing = input(true, title="Use ATR Position Sizing")
trailATR = input(1.5, title="Trailing Stop ATR Multiple")

// Calculate Range Filter
src = close
smooth = ta.sma(src, rangePeriod)
filter = ta.sma(math.abs(src - smooth), rangePeriod)
upper = smooth + filter
lower = smooth - filter

// Calculate ATR
atr = ta.atr(atrPeriod)

// Trend direction
upTrend = src > upper and src[1] > upper[1]
downTrend = src < lower and src[1] < lower[1]

// Position sizing based on ATR
atrPositionSize = (strategy.equity * riskPercent/100) / (atr * syminfo.pointvalue)

// Strategy logic
if (upTrend)
    strategy.entry("Long", strategy.long, qty=useATRSizing ? atrPositionSize : na)
    
if (downTrend)
    strategy.entry("Short", strategy.short, qty=useATRSizing ? atrPositionSize : na)

// Corrected trailing stop using trail_offset instead of trail_points
if (strategy.position_size > 0)
    strategy.exit("Long Exit", "Long", trail_price=na, trail_offset=trailATR * atr)
    
if (strategy.position_size < 0)
    strategy.exit("Short Exit", "Short", trail_price=na, trail_offset=trailATR * atr)

// Plotting
plot(upper, color=color.green, title="Upper Range")
plot(lower, color=color.red, title="Lower Range")
plot(smooth, color=color.blue, title="Smooth Line")