コンテンツにスキップ

TokyoHoldJudge

EA0332_TokyoHoldJudge_v1.0 / ⚠️ FAILED — 生成失敗・修正失敗・BT不合格

ワンライナー

前夜NY時間に作られた高値圏を東京時間で維持できるかを判定し、維持できた場合のみロングで拾う順張りEA

判定: 🟠 惜敗(惜敗(過学習の見本))

バズ手法を再現→IS(過去)では好成績もOOS(未来想定)で崩壊。典型的な『過去に最適化しただけ』のパターン(取引90件)。

X起点ライン(話題の手法を検証)

基本情報

項目 値 項目 値
シンボル USDJPY エントリー種別 price_level_touch, session_time
時間足 M15 エグジット atr_tp_sl
方向 long_only 主要インジケータ —

🧬 DNA 5軸

primary_style entry_mechanism regime_target position_logic core_indicator_family
trend_follow pullback trending fixed_sl price_action

🐦 元ネタツイート

https://x.com/kazutrade6/status/2100331214842589228

📊 バックテスト結果

判定: ❌ FAIL / 期間: 2025.08.23 〜 2026.08.18

PF 損益率 勝率 最大DD シャープ 取引数
0.87 -2.61% 54.4% 5.43% -3.38 90

📝 仕様書 / Specification

クリックで展開

TokyoHoldJudge (東京保ち合い判定士) v1.0

1. 原ネタ要約

X投稿者 @kazutrade6 による FOMC 翌日の USDJPY 相場観。核となる主張は「前夜 NY 時間に米国の買い手が作った価格を、東京時間に日本勢が維持できるかどうかで、その買いが本物の需要かどうかが判定できる」というもの。156円という具体価格が語られているが、本質は『前夜高値の東京時間における保持/剥落判定』という市場構造の話。人が反応した理由は、FOMC 直後という高関心イベントの翌日に、シンプルな『保つか割るか』という二分法で明快な判断基準を提示した点。

2. 戦略概要

前夜 NY セッション(GMT 13:00〜21:00 相当)に形成された USDJPY の高値帯を参照水準とする。東京時間(JST 09:00〜15:00)に入り、価格がその水準を ATR バッファ付きで維持できた場合のみ、押し目タッチでロングを拾う順張り戦略。維持できずに割り込んだ場合はエントリーしない(見送り)。

3. 戦略抽象化

  • ツイートの『156円』は固定価格ではなく、『前夜 NY セッション高値(直近 16 本 M15 の最高値)』という相対参照に置換する。
  • 『保つ』は『参照水準を ATR(14) * 0.25 のバッファ以上に上回った状態で、東京セッション開始後 N 本(初期値 2 本)連続で終値が上に位置すること』と定義する。
  • 『割れる』は『参照水準 - ATR(14) * 0.25 を下回って終値確定』と定義し、この場合は当日エントリー禁止。
  • これにより、いつの価格帯・どの日の FOMC 翌日でも同じロジックが機能する。

4. シンボル・時間足

  • Symbol: USDJPY
  • Timeframe: M15(東京セッションの保ち合いを判定するのに十分な粒度、かつノイズ過多にならない)
  • Direction: long_only(ツイートは『戻り売りは見送り』『156円は追わない』と明言しており、買い方向のみ)

5. エントリー条件(AND)

  1. 新バー確定(M15 の Close[1] ベースで判定、Close[0] は使用禁止)
  2. 現在時刻が東京セッション内(JST 09:00〜15:00)。InpSessionStartJST=09:00, InpSessionEndJST=15:00
  3. 参照水準 RefHigh = iHighest(Symbol(), PERIOD_M15, MODE_HIGH, InpLookbackBars, 1)(初期値 InpLookbackBars=16、前夜 NY セッション相当)
  4. 保ち判定:Close[1] > RefHigh + ATR(14)[1] * InpAtrBufferMult(初期値 InpAtrBufferMult=0.25)が InpConfirmationBars 本(初期値 2)連続で成立している
  5. 押し目タッチ:Low[1] <= RefHigh + ATR(14)[1] * InpAtrBufferMult + InpTolerancePips * PipSize かつ Close[1] > RefHigh(ヒゲタッチでも可、終値は水準上を維持)
  6. スプレッド ≤ InpMaxSpreadPips(初期値 2.5 pips、USDJPY の 1 pip = 0.01 JPY)
  7. 金曜 GMT 21:00 以降は新規エントリー禁止
  8. 当日が BOJ / FOMC / NFP 本番日の場合、InpSkipEventDays=true なら見送り(初期値 false、緩和可能)

6. エグジット条件

  • 初期 SL: エントリー価格 - ATR(14) * InpAtrSlMult(初期値 1.5)
  • 初期 TP: エントリー価格 + ATR(14) * InpAtrTpMult(初期値 2.5、RR ≒ 1:1.67)
  • 時間切れ: エントリーから InpTimeExitBars 本(初期値 32 本 = M15 で 8 時間)経過で成行クローズ
  • 利益保護: InpUseBreakeven(初期値 true、trend_follow 系のため)、InpBreakevenTriggerATR=1.2(含み益が ATR * 1.2 に達したら SL を建値 + スプレッド分に移動)
  • 建値移動は初期 SL を不利方向に広げない。

7. リスク管理

  • InpRiskPercent=0.5(口座残高比)
  • InpMaxPositions=1(同時保有 1 ポジション)
  • InpConsecLossCooldown=3 連敗で InpCooldownHours=24 時間の新規エントリー停止
  • 1 日の最大エントリー数 InpMaxTradesPerDay=1(東京セッションの判定は 1 日 1 回が自然)
  • スプレッドフィルター InpMaxSpreadPips=2.5(USDJPY の 1 pip = 0.01 JPY、SL は最低でもスプレッドの 5 倍以上)

8. 汎用化ポイント

  • ツイートの『156円』は絶対値ではなく、『前夜 NY セッションで作られた高値帯』という相対参照に置換。これにより 2024 年の 150 円台でも 2026 年の 160 円台でも同じロジックが機能する。
  • 『保つか割るか』という判定は、価格水準そのものではなく『東京時間の参加者が前夜の買いを維持するか』という市場構造の話であり、価格帯が変わっても本質は残る。
  • ATR バッファにより、ボラティリティレジームが変わっても判定幅が自動調整される。
  • 別銘柄(EURUSD, GBPJPY 等)でも『前夜 NY 高値の東京保持判定』として移植可能。

9. Optimization Envelope

  • 必ず守る条件:
  • エントリーは Close[1] 以降の確定足のみで判定(Close[0] 禁止)
  • 参照水準は相対参照(前夜高値 + ATR バッファ)であり、絶対価格は使わない
  • 東京セッション外では新規エントリーしない
  • max_positions=1 を維持
  • 緩めてよい条件:
  • InpLookbackBars(16 → 12〜24 の範囲で最適化可)
  • InpAtrBufferMult(0.25 → 0.15〜0.4)
  • InpTolerancePips(5 → 3〜8)
  • InpConfirmationBars(2 → 1〜3)
  • InpSkipEventDays(false → true でサンプル数は減るが質は上がる可能性)
  • 最適化してよいパラメータ:
  • InpAtrSlMult(1.0〜2.0)
  • InpAtrTpMult(1.5〜3.0)
  • InpTimeExitBars(16〜48)
  • InpBreakevenTriggerATR(1.0〜2.0)

10. 無取引回避の設計

  • 厳しすぎる条件として、InpConfirmationBars と InpAtrBufferMult が挙げられる。初期段階では InpConfirmationBars=2, InpAtrBufferMult=0.25 とし、バックテストで取引回数が月 3 回未満の場合は InpConfirmationBars=1, InpAtrBufferMult=0.15 に緩和する。
  • InpSkipEventDays=true はサンプル数を大きく減らすため、初期値 false とし、明らかにイベント日で負ける場合のみ true に切り替える。
  • 最低取引頻度の目安: 月 4〜8 回(東京セッションの保ち判定が成立する日は限られるため)。

11. 過剰取引防止の設計

  • InpMaxTradesPerDay=1 により、1 日 1 回の判定に限定。
  • 保ち判定が成立しない日はエントリーしない(見送りがデフォルト)。
  • スプレッドフィルター InpMaxSpreadPips=2.5 で高スプレッド時間帯を除外。
  • 連敗クールダウン InpConsecLossCooldown=3 / InpCooldownHours=24 で連打を防止。

12. Story Package

  • X 投稿フック: 『FOMC 翌日の東京時間、前夜高値を保てるかだけで勝てる EA を作った』
  • ブログ見出し: 『156円を追わない。東京の保ち合いだけを見る USDJPY ロング EA の検証』
  • 失敗時の見せ方: 無取引月・低 PF 月・コンパイルエラー修正ログも『EA1000 チャレンジ』の検証記録としてそのまま公開する。『保つか割るか』判定が機能しなかった日のチャートを貼る。

13. 入力パラメータ一覧(MQL5 input 形式)

Text Only
input group "=== Session ==="
input string InpSessionStartJST = "09:00";   // 東京セッション開始 (JST)
input string InpSessionEndJST   = "15:00";   // 東京セッション終了 (JST)
input int    InpMaxTradesPerDay = 1;         // 1日の最大エントリー数

input group "=== Reference Zone ==="
input int    InpLookbackBars    = 16;        // 前夜NY高値の参照バー数 (M15)
input double InpAtrBufferMult   = 0.25;      // ATRバッファ倍率
input int    InpTolerancePips   = 5;         // タッチ許容pips (USDJPY: 1pip=0.01)
input int    InpConfirmationBars= 2;         // 保ち判定の連続確定本数

input group "=== Exit ==="
input int    InpAtrPeriod       = 14;        // ATR期間
input double InpAtrSlMult       = 1.5;       // SL = ATR * 1.5
input double InpAtrTpMult       = 2.5;       // TP = ATR * 2.5
input int    InpTimeExitBars    = 32;        // 時間切れ (M15 * 32 = 8h)

input group "=== Profit Protection ==="
input bool   InpUseBreakeven        = true;  // 建値移動を使う
input double InpBreakevenTriggerATR = 1.2;   // 建値移動トリガー (ATR倍率)

input group "=== Risk ==="
input double InpRiskPercent     = 0.5;       // 口座残高比リスク%
input int    InpMaxPositions    = 1;         // 同時保有数
input int    InpConsecLossCooldown = 3;      // 連敗クールダウン閾値
input int    InpCooldownHours   = 24;        // クールダウン時間
input double InpMaxSpreadPips   = 2.5;       // 最大スプレッド (USDJPY: 1pip=0.01)

input group "=== Filters ==="
input bool   InpSkipEventDays   = false;     // BOJ/FOMC/NFP本番日をスキップ
input int    InpBlockFridayAfterGMT = 21;    // 金曜この時刻(GMT)以降は新規禁止

input group "=== Misc ==="
input long   InpMagicNumber     = 20260916;  // マジックナンバー

14. 実装要件

  • 新バー検出は iTime(_Symbol, PERIOD_M15, 0) != prevBarTime で行う。
  • シグナル判定は必ず確定足(Close[1] 以前)で行う。Close[0], High[0], Low[0] は約定価格・スプレッド確認・ポジション管理にのみ使用。
  • 参照水準 RefHigh は iHighest(_Symbol, PERIOD_M15, MODE_HIGH, InpLookbackBars, 1) で取得(bar[1] から過去へ)。
  • ATR は iATR(_Symbol, PERIOD_M15, InpAtrPeriod) の確定足値を使用。
  • 東京セッション判定は TimeCurrent() を JST に変換して比較。ブローカーサーバー時刻とのズレに注意。
  • スプレッド判定は SymbolInfoInteger(_Symbol, SYMBOL_SPREAD) を pips 換算(USDJPY は 1pip = 0.01 JPY = 10 points 相当、_Point 依存)。
  • マジックナンバー InpMagicNumber を全注文に付与し、他 EA との干渉を防止。
  • 金曜 GMT 21:00 以降の新規エントリー禁止は TimeGMT() で判定。
  • 建値移動は PositionModify で SL のみ変更し、TP は触らない。
  • 連敗カウントは HistoryDealsTotal から直近の決済を走査し、InpConsecLossCooldown 到達で InpCooldownHours の間 IsTradeAllowed=false。

免責事項

本EAは自動生成された検証用コードです。実運用可否はご自身で検証してください。

EA1000 一覧に戻る


関連用語

— SPONSORED —