Web Lukes
📄

🔬【読者の鋭い指摘】ATRフィルタヌのシフト問題を培底怜蚌銘柄で真逆の結果に

公開日: 2025/12/15曎新日: 2025/12/15

😱 読者から痛恚の䞀撃が飛んできた

先日のブレむクアりト蚘事で「高ボラ時ブレむクで勝率66%」っおドダっおたら...

読者から鋭いツッコミが。 💥


「ブレむクした盎近の5分足はATR蚈算から陀倖したほうが、仮説怜蚌ずしおはより自然かもしれない。ブレむクした足が含たれるずその足でATRが䞊がりたすからねぇ」


・・・確かに 😰

なにそれ完党に盲点だった


🀔 読者の指摘を図解しおみる

シフト0元の方法の問題

Code
時刻 00:00 00:05 00:10 00:15 ← ブレむク発生
ATR 0.05 0.05 0.05 0.15 ← ATR急䞊昇
「ブレむク足00:15のATRが0.15だから高ボラ」
↑これ、圓たり前じゃね🀔

ブレむクしたら足が倧きくなる → ATRも䞊がる → 「高ボラ」刀定

因果関係が逆転しおる可胜性 😱

シフト1修正版

Code
時刻 00:00 00:05 00:10 00:15 ← ブレむク発生
ATR 0.05 0.05 0.05 0.15
↑
この足のATRで刀定0.05
「ブレむク前のATRで刀断しよう」

こっちの方が「元々ボラが高かった」を正しく枬れる...はず


🔬 怜蚌条件

共通蚭定

Code
時間足: 5分足
デヌタ数: 各10,000本
ブレむク刀定: 盎近20本の高倀/安倀を突砎
決枈: 120分埌時間決枈

ATRフィルタヌの定矩

これが今回の肝

フィルタヌ条件意味
高ボラATR > 䞭倮倀盞堎が動いおる時
䜎ボラATR ≀ 䞭倮倀盞堎が静かな時

そしおATRのシフト

シフト参照するATR意味
Shift=0ブレむク足のATR元の方法
Shift=11本前のATR修正版

📊 怜蚌1: USDJPY玄50日分

期間: 2025-10-27 〜 2025-12-15

たずブレむクアりト単䜓

方向勝率平均リタヌンサンプル刀定
買い50.8%-0.50 pips417❌ ゎミ
売り46.8%-1.34 pips340❌ ゎミ

フィルタヌなしのブレむクアりトは䜿い物にならない。

これは元蚘事ず同じ結論。


ATRフィルタヌShift=0 vs Shift=1

買いブレむク120分埌:

条件Shift=0Shift=1差
フィルタヌなし50.8%50.8%-
高ボラ49.6%48.4%-1.2pt
䜎ボラ52.5%52.8%+0.3pt

売りブレむク120分埌:

条件Shift=0Shift=1差
フィルタヌなし46.8%46.8%-
高ボラ43.8%45.0%+1.2pt
䜎ボラ53.3%52.0%-1.3pt

USDJPYの衝撃の発芋 🀯

シフトの圱響は誀差レベル1〜2pt。

でもそれより衝撃なのは...

高ボラフィルタヌが逆効果

  • 買い: 高ボラ49.6% < 䜎ボラ52.5%䜎ボラの方がマシ
  • 売り: 高ボラ43.8% < 䜎ボラ53.3%䜎ボラ圧勝

元蚘事の「高ボラで勝率66%」は䞀䜓䜕だったの 😱


📊 怜蚌2: BTCUSD玄35日分

期間: 2025-11-10 〜 2025-12-15

実は俺、BTCUSDで怜蚌しおたんですよ。

ブレむクアりト単䜓

方向勝率平均リタヌンサンプル刀定
買い47.1%-2.89$342❌ ゎミ
売り50.3%+103.06$366△ たあたあ

ATR(3)フィルタヌの効果

俺の実際の蚭定: ATR期間3、倍率2.7

条件買い勝率買いリタヌンサンプル
フィルタヌなし47.1%-2.89$342
高ボラ>䞭倮倀×1.050.2%+42.77$205
高ボラ>䞭倮倀×1.556.8%+114.91$81
高ボラ>䞭倮倀×2.057.1%+144.76$70
高ボラ>䞭倮倀×2.759.3%+218.32$54

倍率䞊げるほど勝率䞊がる 🔥🔥🔥

BTCUSDの結論

高ボラ×2.7䜎ボラ差
59.3%41.7%+17.6pt
+218$-80$箄300$å·®

高ボラフィルタヌがガチで効いおる


🀯 衝撃の事実銘柄で真逆の結果

銘柄高ボラ時䜎ボラ時勝者
USDJPY49.6%-1.85pips52.5%+1.26pips🥇 䜎ボラ
BTCUSD59.3%+218$41.7%-80$🥇 高ボラ

同じATRフィルタヌなのに、効果が真逆


🧐 なぜ銘柄で違うのか

仮説1: 垂堎参加者の違い

USDJPY為替:

  • 機関投資家、ヘッゞファンドが䞻圹
  • 高ボラ時 → 「行き過ぎ」ず刀断 → 逆匵り
  • 倧口の利確泚文がすぐ入る
  • 結果: 高ボラブレむクは続かない ❌

BTCUSD暗号資産:

  • 個人投資家が倚い
  • 高ボラ時 → FOMO発動 → 远随買い殺到
  • 「䞊がっおる乗り遅れるな」の連鎖
  • 結果: 高ボラブレむクが続く ✅

仮説2: 垂堎の成熟床

USDJPY:

  • 100幎以䞊の歎史がある成熟垂堎
  • 「適正氎準」に぀いおプロの合意がある
  • 極端な動きはすぐ修正される

BTCUSD:

  • ただ15幎皋床の新興垂堎
  • 「適正䟡栌」が誰にもわからない
  • トレンドが極端に続きやすい

仮説3: 流動性の違い

USDJPY:

  • 䞖界最倧玚の流動性
  • どんな倧口泚文も吞収される
  • 䟡栌のオヌバヌシュヌトが少ない

BTCUSD:

  • 流動性が盞察的に䜎い
  • 倧きな泚文で䟡栌が倧きく動く
  • ブレむク埌の倀動きが極端になりやすい

📝 で、シフトの圱響は

読者の指摘「ブレむク足のATRを陀倖すべき」に぀いお。

Shift=0 vs Shift=1 の比范

銘柄条件Shift=0Shift=1差
USDJPY高ボラ買い49.6%48.4%-1.2pt
USDJPY䜎ボラ買い52.5%52.8%+0.3pt
BTCUSD高ボラ買い50.2%52.7%+2.5pt
BTCUSD䜎ボラ買い41.7%41.8%+0.1pt

結論: シフトの圱響は小さい

  • 読者の指摘は理論的には100%正しい
  • でも実践的には1〜2%の差
  • 銘柄遞択の方がはるかに重芁

💡 実践ぞの瀺唆

USDJPYでブレむクアりトするなら

Code
❌ 高ボラ時に゚ントリヌ → 逆効果
✅ 䜎ボラ時に゚ントリヌ → ただマシ52-53%
✅ そもそもブレむクアりトより他の手法を怜蚎

BTCUSDでブレむクアりトするなら

Code
✅ 高ボラ時に買い゚ントリヌ → 勝率59%、+218$
❌ 䜎ボラ時に買い゚ントリヌ → 負ける-80$
✅ ATR(3) × 2.7以䞊で絞るず最匷

🎯 最終結論

1. ブレむクアりト単䜓は勝おない

どっちの銘柄でも、フィルタヌなしは勝率50%前埌でリタヌンはマむナス。

2. ATRフィルタヌは銘柄䟝存

銘柄高ボラフィルタヌ掚奚
USDJPY❌ 逆効果䜎ボラ時、たたは別手法
BTCUSD✅ 有効高ボラ時に買い

3. 「䞇胜フィルタヌ」は存圚しない

元蚘事の「高ボラ勝率66%」はBTCUSDでの結果。

USDJPYでは逆効果だった。

銘柄ごずに怜蚌が必芁

4. シフト0 vs 1は倧差ない

読者の指摘は理論的に正しいけど、実践では銘柄遞択の方が100倍重芁。


🙏 読者の皆さんぞ

今回の怜蚌で、銘柄によっおATRフィルタヌの効果が真逆であるこずが刀明したした。

元蚘事で「䞇胜フィルタヌ」のように曞いおしたったこず、お詫びしたす。

怜蚌は継続的に行い、新しい発芋があれば正盎に報告したす。

ツッコミをくれた読者の方、本圓にありがずう

おかげでより深い掞察を埗るこずができたした。 🙏


📊 怜蚌コヌド党文

Python
"""
ATRフィルタヌ怜蚌 - シフト0 vs シフト1
銘柄: USDJPYm, BTCUSDm
"""
import MetaTrader5 as mt5
import pandas as pd
import numpy as np
from scipy import stats
import warnings
warnings.filterwarnings('ignore')
# ===== 蚭定 =====
SYMBOL = "BTCUSDm" # たたは "USDJPYm"
TIMEFRAME = mt5.TIMEFRAME_M5
NUM_BARS = 10000
BREAKOUT_PERIOD = 20
ATR_PERIOD = 3 # BTCは3、USDJPYは14
ATR_MULTIPLIER = 2.7 # フィルタヌ倍率
TIME_HORIZONS = [5, 15, 30, 60, 120]
def initialize_mt5():
if not mt5.initialize():
return False
print(f"MT5 version: {mt5.version()}")
return True
def get_ohlc_data(symbol, timeframe, num_bars):
symbol_info = mt5.symbol_info(symbol)
if symbol_info is None:
# シンボル名のバリ゚ヌションを詊す
for suffix in ['', 'm', '.i', '-m', '_SB']:
test_symbol = symbol.replace('m', '') + suffix
symbol_info = mt5.symbol_info(test_symbol)
if symbol_info is not None:
symbol = test_symbol
break
if symbol_info is None:
return None
if not symbol_info.visible:
mt5.symbol_select(symbol, True)
rates = mt5.copy_rates_from_pos(symbol, timeframe, 0, num_bars)
if rates is None:
return None
df = pd.DataFrame(rates)
df['time'] = pd.to_datetime(df['time'], unit='s')
df.set_index('time', inplace=True)
print(f"Data: {len(df)} bars ({df.index[0]} to {df.index[-1]})")
return df
def calculate_atr(df, period):
"""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)
return tr.rolling(window=period).mean()
def detect_breakouts(df, period):
"""ブレむクアりトを怜出"""
# 盎近N本の高倀・安倀1本前たでで蚈算
df['highest'] = df['high'].rolling(window=period).max().shift(1)
df['lowest'] = df['low'].rolling(window=period).min().shift(1)
# ブレむク刀定
df['breakout_up'] = df['close'] > df['highest']
df['breakout_down'] = df['close'] < df['lowest']
# 連続ブレむクを陀倖最初の1本だけ
df['breakout_up_signal'] = df['breakout_up'] & ~df['breakout_up'].shift(1).fillna(False)
df['breakout_down_signal'] = df['breakout_down'] & ~df['breakout_down'].shift(1).fillna(False)
print(f"Breakout UP: {df['breakout_up_signal'].sum()}")
print(f"Breakout DOWN: {df['breakout_down_signal'].sum()}")
return df
def calculate_future_returns(df, horizons_minutes, timeframe_minutes=5):
"""将来リタヌンを蚈算"""
for minutes in horizons_minutes:
bars_ahead = minutes // timeframe_minutes
future_close = df['close'].shift(-bars_ahead)
df[f'return_{minutes}m'] = (future_close - df['close']) * 100
return df
def analyze_with_filter(df, signal_col, horizons, atr_filter, atr_shift, multiplier=1.0):
"""
ATRフィルタヌ付きでブレむクアりトを分析
atr_filter: 'high', 'low', None
atr_shift: 0圓該足or 11本前の足
multiplier: 閟倀の倍率䟋: 2.7
"""
signal_df = df[df[signal_col] == True].copy()
if len(signal_df) == 0:
return None
if atr_filter is not None:
atr_median = df['atr'].median()
threshold = atr_median * multiplier
if atr_shift == 0:
atr_values = signal_df['atr']
else:
atr_values = df['atr'].shift(atr_shift).loc[signal_df.index]
if atr_filter == 'high':
signal_df = signal_df[atr_values > threshold]
else:
signal_df = signal_df[atr_values <= threshold]
if len(signal_df) < 10:
return None
results = {}
for minutes in horizons:
returns = signal_df[f'return_{minutes}m'].dropna()
if len(returns) >= 10:
results[minutes] = {
'count': len(returns),
'mean': returns.mean(),
'win_rate': (returns > 0).mean() * 100,
}
return results
def main():
if not initialize_mt5():
return
try:
df = get_ohlc_data(SYMBOL, TIMEFRAME, NUM_BARS)
if df is None:
return
df['atr'] = calculate_atr(df, ATR_PERIOD)
df = detect_breakouts(df, BREAKOUT_PERIOD)
df = calculate_future_returns(df, TIME_HORIZONS)
atr_median = df['atr'].median()
print(f"\nATR({ATR_PERIOD}) median: {atr_median:.5f}")
print(f"High vol threshold (x{ATR_MULTIPLIER}): {atr_median * ATR_MULTIPLIER:.5f}")
# 各条件で怜蚌
multipliers = [1.0, 1.5, 2.0, 2.7]
for shift in [0, 1]:
print(f"\n{'='*60}")
print(f"ATR SHIFT = {shift}")
print(f"{'='*60}")
# 䞊方ブレむク買い
print("\n[UP (Buy)]")
for mult in multipliers:
result = analyze_with_filter(
df, 'breakout_up_signal', TIME_HORIZONS, 'high', shift, mult
)
if result and 120 in result:
print(f" High Vol (x{mult}): {result[120]['win_rate']:.1f}%, "
f"Mean={result[120]['mean']:+.2f}, N={result[120]['count']}")
result_low = analyze_with_filter(
df, 'breakout_up_signal', TIME_HORIZONS, 'low', shift, 1.0
)
if result_low and 120 in result_low:
print(f" Low Vol: {result_low[120]['win_rate']:.1f}%, "
f"Mean={result_low[120]['mean']:+.2f}, N={result_low[120]['count']}")
finally:
mt5.shutdown()
if __name__ == "__main__":
main()

📚 関連蚘事: ブレむクアりト分析メむン蚘事 - 元の怜蚌蚘事


📬 質問・ツッコミはXぞ

@hosono_p

「お前のここ間違っおね」←これ倧歓迎 🔥

🎁おすすめツヌル・サヌビス

FX自動売買VPSなら50%OFF

キャンペヌンで月1,790円〜。MT4/MT5プリむンストヌル枈み、自動埩旧機胜付き。14日間無料お詊し。

シンクラりドデスクトップ for FX
ゎトヌ日EAを探しおいるなら゜ヌスコヌド付

4幎で資金4.7倍のバックテスト実瞟。゜ヌスコヌド付きで自由にカスタマむズ可胜。

ゎトヌ日EA Ultimate版3,980円

※䞊蚘リンクにはプロモヌション広告が含たれおいたす

🔮
MEMBERSHIP

量子盞堎謀略ホ゜ノP

ブログでは曞けない本音のトレヌド戊略ずEA開発の裏偎を公開。 デヌタに基づいた怜蚌で、再珟性のある手法だけをお届けしたす。

✓EA゜ヌスコヌド公開
✓バックテスト生デヌタ共有
✓リアルタむム盞堎分析
✓メンバヌ限定蚘事
メンバヌシップに参加する※ noteアカりントで簡単登録

📚あわせお読みたい

📄

🔬【16手法を総圓たり】ブレむクアりト自動探玢で刀明Zigzag最匷、でも3日間レンゞにも光が...

N足高倀安倀、Zigzag、日足レンゞ(1〜6日間)、ATRバンド、ドンチャン...å…š16パタヌンを自動怜蚌結論Zigzag(60.3%)が王者、日足3日間レンゞ(56.7%)がダヌクホヌス、そしお前日のみ(49%)はやっぱりゎミでした。

FX自動売買2025/12/14
📄

⚡【ダマシの正䜓刀明】高ボラ時ブレむクで勝率66%ATRフィルタヌの嚁力

「ブレむクアりトで負けたくる...」その原因、デヌタで解明したした䜎ボラ時は勝率49%ゎミ、高ボラ時は66%優秀。ダマシを避けるATRフィルタヌの䜜り方を完党公開

FX自動売買2025/12/13
📄

📅【デヌタ怜蚌】2月21日リバランスアノマリヌドル円・ゎヌルド・BTCの3銘柄で幎床末の転換点を培底調査

2月21日前埌で為替・ゎヌルド・ビットコむンの倀動きは倉わるのか機関投資家のリバランス・レパトリ・指数芋盎しが重なる2月䞋旬の転換点を、最倧13幎分のデヌタで怜蚌。BTCは2/21以降Sell勝率87.5%ずいう衝撃の結果も。

FX自動売買2026/2/23
📄

😱【衝撃】ゎトヌ日ショヌトは「月末」が最匷だった祝日の圱響も培底怜蚌

ロングは25日最匷だったけど、ショヌトはどうなの324回の怜蚌で刀明した驚きの結果。月末ショヌト勝率70%、10日は47%で地獄。さらに日本祝日・アメリカ祝日の圱響も完党解明

FX自動売買2026/1/21
📄

🀔 月末ゎトヌ日「30日 vs 31日」どっちが匷い→衝撃の結論が出た

「30日だけでいい」「31日も必芁」EAによっおバラバラで混乱しおた問題、ガチ怜蚌で決着27回分のデヌタが暎く「30日月の30日は神、31日月の30日は倧地雷」ずいう残酷すぎる真実...

FX自動売買2025/12/18
📄

🥇【衝撃怜蚌】ゎヌルド幎末アノマリヌは本物だった11幎で10勝1敗、勝率90.9%の「黄金の1ヶ月」

「ゎヌルドは幎末幎始に䞊がる」噂を11幎分の日足デヌタで完党怜蚌。結果12/15→1/15で勝率90.9%、平均+3.55%最適゚ントリヌ日は12月19日、12月25日から26日保有で+4.56%

FX自動売買2025/12/17