
この戦略は,範囲フィルター (Range Filter) と平均リアル波幅 (Average True Rampage, ATR) を組み合わせた低反転量化取引システムである.これは,範囲フィルターを通じてトレンドの方向性を認識し,同時にATRを使用してポジションのサイズを動的に調整し,尾随の損失を設定し,リスクを効果的に制御する.この戦略は,価格が連続して2つの周期を突破して範囲フィルター上で下線を確認するように要求し,この二重メカニズムは,偽の突破を効果的に減らすことを確認する.システムのデフォルトリスクは,取引毎のリスク資本の1%に設定され,保守的で安定しています.この戦略は,波動が大きいが,傾向が顕著な市場環境に特に適しています.
この戦略の核心となる原則は,範囲フィルターによるトレンド認識とATRのリスク管理システムとの結合である.
範囲フィルター計算:
トレンド確認条件:
ATR 動的ポジション:
ATR 尾行停止:
適応力がある:
リスク管理が上手い:
信号の質は高い:
低退却特性:
透明でカスタマイズ可能:
横盤市場も不振だった.:
急速な逆転のリスク:
パラメータ感度:
継続的な損失のリスク:
スライドポイントと手数料の影響:
市場環境のフィルターを追加する:
範囲フィルタリングサイクルを最適化:
複数の時間枠の確認を導入する:
動的にATR倍数を調整する:
タイムベースの退出メカニズムを追加:
双確認範囲フィルター戦略は,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")