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)¶
- 新バー確定(M15 の Close[1] ベースで判定、Close[0] は使用禁止)
- 現在時刻が東京セッション内(JST 09:00〜15:00)。
InpSessionStartJST=09:00,InpSessionEndJST=15:00 - 参照水準
RefHigh = iHighest(Symbol(), PERIOD_M15, MODE_HIGH, InpLookbackBars, 1)(初期値InpLookbackBars=16、前夜 NY セッション相当) - 保ち判定:
Close[1] > RefHigh + ATR(14)[1] * InpAtrBufferMult(初期値InpAtrBufferMult=0.25)がInpConfirmationBars本(初期値 2)連続で成立している - 押し目タッチ:
Low[1] <= RefHigh + ATR(14)[1] * InpAtrBufferMult + InpTolerancePips * PipSizeかつClose[1] > RefHigh(ヒゲタッチでも可、終値は水準上を維持) - スプレッド ≤
InpMaxSpreadPips(初期値 2.5 pips、USDJPY の 1 pip = 0.01 JPY) - 金曜 GMT 21:00 以降は新規エントリー禁止
- 当日が 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は自動生成された検証用コードです。実運用可否はご自身で検証してください。
関連用語¶
- 用語集 - バックテスト
- 用語集 - 勝率
- 用語集 - ATR
- 用語集 - スプレッド
- 用語集 - pips
- 用語集 - ボラティリティ
- 用語集 - TimeCurrent
- 用語集 - _Point
- 用語集 - マジックナンバー
— SPONSORED —