【ブレイクアウト続編】ATRフィルターは本当に効果があるのか?3通貨で徹底検証
前回の続き:ATRフィルターを検証!
前回の記事で3つのブレイクアウト手法を比較しました。今回は読者さんからのリクエスト第2弾、ATRフィルターの効果を検証します!
「ATRで高ボラ時のみトレードしたら成績は改善する?」
これ、トレーダーなら一度は考えたことがあるはず。データで答えを出しましょう!
検証条件
| 項目 | 設定 |
|---|---|
| 期間 | 2021年7月〜2024年12月(約3.5年) |
| 対象 | USDJPY、BTCUSD、XAUUSD(ゴールド) |
| ATR期間 | 14日、20日、50日 |
| ATR倍率 | 1.0倍、1.5倍、2.0倍 |
| 手法 | 3日高値安値ブレイクアウト |
ATRフィルターの定義
# ATRフィルターの実装df['atr'] = calculate_atr(df, period) # 14, 20, 50日df['atr_threshold'] = df['atr'].rolling(20).mean() * multiplier # 1.0, 1.5, 2.0倍
# 高ボラ環境でのみトレードdf['is_high_vol'] = df['atr'] > df['atr_threshold']考え方: 当日のATRが過去20日平均ATR × 倍率を超えた場合を「高ボラ環境」と判定。
USDJPY(ドル円)の結果
高ボラ vs 低ボラ 比較
| 条件 | ATR期間 | 倍率 | 勝率 | 平均pips | 取引回数 |
|---|---|---|---|---|---|
| 高ボラ時 | 14 | 1.0 | 59.8% | +16.9 | 388回 |
| 低ボラ時 | 14 | 1.0 | 57.1% | +11.2 | 345回 |
| 高ボラ時 | 20 | 1.5 | 61.2% | +18.3 | 285回 |
| 低ボラ時 | 20 | 1.5 | 56.8% | +10.1 | 448回 |
ATR設定別ヒートマップ
💡 USDJPYの発見:
- 高ボラ時は**+5.7〜8.2pips**の改善効果
- ATR14 × 1.5倍またはATR20 × 1.5倍が最適
- 取引回数は減るが、質の高いトレードに絞れる
BTCUSD(ビットコイン)の結果
高ボラ vs 低ボラ 比較
| 条件 | ATR期間 | 倍率 | 勝率 | 平均$ | 取引回数 |
|---|---|---|---|---|---|
| 高ボラ時 | 14 | 1.5 | 52.3% | +336 | 172回 |
| 低ボラ時 | 14 | 1.5 | 43.8% | +98 | 311回 |
| 高ボラ時 | 20 | 1.0 | 49.6% | +285 | 243回 |
| 低ボラ時 | 20 | 1.0 | 42.1% | +76 | 240回 |
ATR設定別ヒートマップ
💡 BTCの発見:
- ATRフィルター効果が最も顕著!
- 高ボラ時は**+$155〜238**の大幅改善
- ATR14 × 1.5倍が最強設定(勝率+8.5%、平均利益3.4倍)
- BTCはATRフィルター必須と言える
XAUUSD(ゴールド)の結果
高ボラ vs 低ボラ 比較
| 条件 | ATR期間 | 倍率 | 勝率 | 平均$ | 取引回数 |
|---|---|---|---|---|---|
| 高ボラ時 | 14 | 1.0 | 92.8% | +17.6 | 412回 |
| 低ボラ時 | 14 | 1.0 | 90.1% | +16.8 | 310回 |
| 高ボラ時 | 20 | 1.5 | 93.5% | +18.1 | 298回 |
| 低ボラ時 | 20 | 1.5 | 89.8% | +16.2 | 424回 |
ATR設定別ヒートマップ
💡 ゴールドの発見:
- ATRフィルター効果は限定的(そもそも勝率90%超え)
- 高ボラ時でも**+1〜2%程度**の改善のみ
- ゴールドはATRフィルターなしでOK
3通貨の比較まとめ
ATRフィルター効果ランキング
| 順位 | 通貨 | 効果 | 推奨設定 |
|---|---|---|---|
| 🥇 | BTC | ★★★★★ | ATR14 × 1.5倍(必須) |
| 🥈 | USDJPY | ★★★☆☆ | ATR14-20 × 1.5倍(推奨) |
| 🥉 | ゴールド | ★☆☆☆☆ | フィルターなしでOK |
なぜBTCでATRフィルターが効くのか?
- ボラティリティの変動幅が大きい: BTCは低ボラ〜高ボラの差が激しい
- 高ボラ時にトレンドが発生しやすい: ニュース・イベント駆動の市場
- 低ボラ時はダマシが多い: レンジ相場でブレイクアウトが機能しにくい
なぜゴールドでは効かないのか?
- 常に一定のボラティリティ: ATRが安定している
- そもそも勝率が高い: フィルターする必要がない
- ブレイクアウトとの相性が良い: どの環境でも有効
実装コード
import pandas as pdimport numpy as np
def calculate_atr(df, period=14): """ATR(Average True Range)を計算""" high = df['high'] low = df['low'] close = df['close'].shift(1)
tr1 = high - low tr2 = abs(high - close) tr3 = abs(low - close)
tr = pd.concat([tr1, tr2, tr3], axis=1).max(axis=1) atr = tr.rolling(period).mean()
return atr
def apply_atr_filter(df, period=14, multiplier=1.5): """ATRフィルターを適用""" df = df.copy() df['atr'] = calculate_atr(df, period) df['atr_threshold'] = df['atr'].rolling(20).mean() * multiplier df['is_high_vol'] = df['atr'] > df['atr_threshold']
return df
# 使用例df_filtered = apply_atr_filter(df, period=14, multiplier=1.5)high_vol_trades = df_filtered[df_filtered['is_high_vol']]結論
読者リクエストにお答えして、ATRフィルターの効果を検証しました。
最終結論
- BTC: ATRフィルター必須!ATR14 × 1.5倍で平均利益が3倍以上に
- USDJPY: ATRフィルター推奨。+5〜8pipsの改善効果
- ゴールド: ATRフィルター不要。そのまま全トレードでOK
実践的アドバイス
- 高ボラ環境を待つ: 特にBTCは低ボラ時のトレードを避ける
- ATR期間は14〜20日: 短すぎず長すぎない期間が最適
- 倍率は1.5倍: 1.0倍では緩すぎ、2.0倍では厳しすぎ
質問・リクエストがあればコメントください! 次回は時間帯フィルターとATRフィルターの組み合わせも検証予定です 📊
🎁おすすめツール・サービス
※上記リンクにはプロモーション(広告)が含まれています
量子相場謀略|ホソノP
ブログでは書けない本音のトレード戦略とEA開発の裏側を公開。 データに基づいた検証で、再現性のある手法だけをお届けします。