CPIPullbackBuy¶
EA0138_CPIPullbackBuy_v1.0 / ⚠️ FAILED — 生成失敗・修正失敗・BT不合格
ワンライナー
CPI発表前後の押し目を直近安値+ATRバッファで拾い、直近高値付近で利確する順張りロング
判定: ⚫ 散(散る(検証に乗らず))
話題の手法をEA化してみたが、そもそもエントリーが成立せず検証不能。ネタとしては『動かなかった』結果。
X起点ライン(話題の手法を検証)
基本情報¶
| 項目 | 値 | 項目 | 値 | |
|---|---|---|---|---|
| シンボル | USDJPY | エントリー種別 | price_level_touch, news_reaction | |
| 時間足 | H1 | エグジット | atr_tp_sl | |
| 方向 | long_only | 主要インジケータ | — |
🧬 DNA 5軸¶
| primary_style | entry_mechanism | regime_target | position_logic | core_indicator_family |
|---|---|---|---|---|
trend_follow | pullback | any | fixed_sl | price_action |
🐦 元ネタツイート¶
https://x.com/NAO_GOLD_FX/status/2064703338743271779
📊 バックテスト結果¶
判定: ❌ FAIL / 期間: 2026.02.11 〜 2026.05.12
| PF | 損益率 | 勝率 | 最大DD | シャープ | 取引数 |
|---|---|---|---|---|---|
| 0.00 | +0.00% | 0.0% | 0.00% | 0.00 | 0 |
📝 仕様書 / Specification¶
クリックで展開
CPI押し目買いEA 仕様書¶
1. 原ネタ要約¶
投稿者はCPI発表前のドル円(USDJPY)について、160.50〜60のレジスタンスゾーンを上抜けする強気シナリオ、160.30〜35への押し目を拾う本命シナリオ、160.30を下抜けする弱気シナリオの3つを提示。最も具体的で機械化しやすいのは「押し目買い」シナリオで、サポート確認後の押し目買いを推奨。
2. 戦略概要¶
CPI発表前後の期間に限定し、直近20バーの最安値にATR(14)×0.15のバッファを加えたゾーンへの価格タッチ(ヒゲ含む)をエントリー条件とする。ゾーン到達後、確定足で終値がゾーン内または上にあることを確認し、ロングエントリー。利確はATR(14)×2.0、損切りはATR(14)×1.5。
3. 戦略抽象化¶
ツイートの具体価格(160.30-35)は市場構造として「直近安値+小さなATRバッファ」に一般化。これにより、異なる価格帯や時間でも同一ロジックが適用可能。
4. シンボル・時間足¶
- シンボル: USDJPY
- 時間足: H1(CPI発表前後の値動きを捉えるのに適切)
5. エントリー条件(AND)¶
NewsFilter == true: 現在時刻がCPI発表後2時間以内(発表時間はEconomic Calendarから動的取得。ただしMT5標準機能では難しいため、inputで指定可能とする)PriceTouchZone: H1足の終値または高値が直近20足の最安値 - ATR(14)*0.15から直近20足の最安値の範囲にタッチ(許容タッチ誤差5pips)ConfirmationBar: タッチから1本目の確定足で終値がそのゾーンより上(ゾーン下限 - 5pips 以上)SpreadCap: スプレッドが3.0pips以下NoConsecLoss: 連続損失回数が2回未満(前回エントリーから12時間経過でリセット)
6. エグジット条件¶
- プライマリ: ATR(14)×2.0 で利確、ATR(14)×1.5 で損切り
- オルタナティブ: エントリーから24バー経過で成行決済(time_exit)
- 利益保護: 建値移動(UseBreakeven = false、デフォルトではオフ。mean_reversionではないためrisk_percentが低いので任意)
7. リスク管理¶
- RiskPercent: 0.5%(口座の0.5%をリスクに取る)
- MaxPositions: 1(同時保有は1ポジションのみ)
- 連敗クールダウン: 連続損失2回で12時間エントリー禁止
8. 汎用化ポイント¶
- 固定価格160.30-35を「直近20足の最安値+ATRバッファ」に置き換え、どの価格帯でも機能する
- CPI発表時間はinputで指定可能(デフォルトは米国CPI発表時刻:毎月第2水曜 8:30 ET)
- ATR倍率は調整可能で、他の通貨ペアにも応用可能(例:EURUSDでも同様の構造が成立)
9. Optimization Envelope¶
- 守るべき条件:
reference_zoneは必ずrecent_swing_low_buffered_by_atrを使用。atr_periodは14固定。touch_tolerance_pipsは最小3、最大10。 - 緩和可能条件:
atr_buffer_mult(0.1〜0.3)、atr_sl_mult(1.0〜2.0)、atr_tp_mult(1.5〜3.0) - 最適化推奨パラメータ:
lookback_bars(10〜30)、confirmation_bars(0〜2)、window_hours_after(1〜4)
10. 無取引回避の設計¶
- CPI発表頻度は月1回のため、デフォルトでは取引機会が極端に少ない。緩和オプションとして
UseNewsFilter = falseにすれば通常時も同じロジックでエントリー可能(その場合は押し目買い汎用EAとして動作) touch_tolerance_pipsを5から8に広げるとタッチ機会増加
11. 過剰取引防止の設計¶
- 連敗クールダウンが2回連続損失で発動
- 最大同時ポジション1
- CPI以外のエントリーを許可する場合も、同一バーでのダブルエントリーは禁止
12. Story Package¶
- 勝利時: 「CPI発表直前の押し目を完璧に拾った!ATRバッファで160.30ゾーンを捉え160.80利確。まさに本命シナリオ」
- 失敗時: 「CPI発表後に急落、SLに引っかかった。押し目を拾ったつもりが逆トレンド。次回はATRバッファを広げて検証」
- 無取引時: 「今月のCPI発表時は価格がゾーンにタッチせず。やはりチャンスは少ない、緩和設定で来月に備える」
- ブログ見出し: 「CPI押し目買いEA、3ヶ月バックテスト結果:期待値0.8、勝率45%。改善の余地あり」
13. 入力パラメータ一覧¶
C++
// ニュースフィルター
input bool InpUseNewsFilter = true; // UseNewsFilter: CPI発表時のみ稼働
input string InpCpiDayTime = "2026.06.10 12:30"; // CPI発表時刻(カスタム)
input int InpHoursAfter = 2; // WindowHoursAfter: 発表後何時間まで有効
// エントリー
input int InpLookbackBars = 20; // LookbackBars: 直近足数
input double InpAtrBufferMult = 0.15; // AtrBufferMult: バッファ倍率(ATR比)
input double InpTouchTolerancePips = 5.0; // TouchTolerancePips: タッチ許容pips
input int InpConfirmationBars = 1; // ConfirmationBars: 確定待ちバー数
// エグジット
input int InpAtrPeriod = 14; // AtrPeriod: ATR期間
input double InpAtrSlMult = 1.5; // AtrSlMult: SL倍率
input double InpAtrTpMult = 2.0; // AtrTpMult: TP倍率
input int InpTimeExitBars = 24; // TimeExitBars: 最大保有バー数
// リスク
input double InpRiskPercent = 0.5; // RiskPercent: 1トレードあたりリスク%
input int InpMaxPositions = 1; // MaxPositions: 最大同時ポジション数
input int InpConsecLossLimit = 2; // ConsecLossLimit: 連敗制限回数
input int InpCooldownHours = 12; // CooldownHours: クールダウン時間
// 利益保護(建値移動)
input bool InpUseBreakeven = false; // UseBreakeven: 建値移動機能
input double InpBreakevenTriggerATR = 1.2; // BreakevenTriggerATR: 発動ATR倍率
// フィルター
input double InpSpreadCapPips = 3.0; // SpreadCapPips: 最大スプレッド
input int InpFridayCloseHourGMT = 19; // 金曜19GMT以降エントリー禁止
// その他
input int InpMagicNumber = 20260610; // MagicNumber
14. 実装要件¶
- 新バー検出は
IsNewBar()関数を使用(確定足ベースの処理) - 価格タッチは高値・安値も含む(iHigh, iLow を参照)
- スプレッドチェックはエントリー直前に実施
- ニュースフィルターは外部ファイルから時刻を読み込むのではなく、inputパラメータで指定可能にする(実装簡略化のため)
- 連敗カウンターは
OnTrade()またはOnDeinit()で保存しない(再起動時にリセット、簡易実装) - マジックナンバーは一意に設定
免責事項
本EAは自動生成された検証用コードです。実運用可否はご自身で検証してください。
関連用語¶
— SPONSORED —