InterventionPullbackShort¶
EA0029_InterventionPullbackShort_v1.0 / ⚠️ FAILED — 生成失敗・修正失敗・BT不合格
ワンライナー
介入後の急落から反発し、上昇勢いが弱まったところで再度下落開始を確認して売る戻り売り
基本情報¶
| 項目 | 値 | 項目 | 値 | |
|---|---|---|---|---|
| シンボル | USDJPY | エントリー種別 | pullback, price_level_touch | |
| 時間足 | H1 | エグジット | atr_tp_sl | |
| 方向 | short_only | 主要インジケータ | — |
🧬 DNA 4軸¶
| primary_style | entry_mechanism | regime_target | position_logic |
|---|---|---|---|
trend_follow | pullback | trending | fixed_sl |
🐦 元ネタツイート¶
https://x.com/Mio__1985/status/2050113062074794278
📊 バックテスト結果¶
判定: ❌ FAIL / 期間: 2026.01.01 〜 2026.04.01
| PF | 損益率 | 勝率 | 最大DD | シャープ | 取引数 |
|---|---|---|---|---|---|
| 0.79 | -16.68% | 16.4% | 35.00% | -3.04 | 67 |
📝 仕様書 / Specification¶
クリックで展開
介入戻り売り EA 仕様書¶
1. 原ネタ要約¶
2026年5月1日、@Mio__1985 氏が緊急配信したツイート。ドル円が急落し、2回目の為替介入(日銀・財務省の円買い)が入った可能性を指摘。短期的な戻り売りシナリオを推奨し、特に157〜158円までの反発後の勢い弱まりを確認してから売りエントリーする戦略を提示。介入相場のダマシを警戒し、無理なエントリーを避ける慎重姿勢が強調されている。201件のいいねを獲得し、多くのトレーダーが注目した内容。
2. 戦略概要¶
介入による急落後、価格が一時的に反発(戻り)した後、上昇の勢いが弱まり、再び下落に転じたタイミングで売りエントリーする。エントリーは、直近の戻り高値(Swing High)をATRバッファ付きで捉え、その後の数本のローソク足で上昇モメンタムが減衰したことを確認してから行う。
3. 戦略抽象化¶
原ツイートの「157〜158円」という絶対価格は、直近の急落後の戻り高値帯という市場構造として捉え直す。具体的には、急落後の最初の戻り高値をDonchian(10)の上限または直近Swing Highとして動的に検出し、そこにATRベースのバッファ(0.15倍)を加えたゾーンをエントリー基準とする。これにより、価格水準が変わっても機能する汎用的な戦略となる。
4. シンボル・時間足¶
- シンボル: USDJPY
- 時間足: H1 (1時間足) - 介入後の戻り売りは中期的な流れを捉えるため、H1が適切。
5. エントリー条件¶
以下の条件がすべて満たされた場合に売りエントリーする(AND条件)。 1. 価格タッチ条件: 終値が、直近10本の高値(iHigh(NULL, 0, iHighest(NULL, 0, MODE_HIGH, 10, 1)))にATR(14)0.15を加えたゾーンにタッチする。 2. *モメンタム減衰確認: タッチした後、続く3本のローソク足の上昇幅(高値 - 安値)の平均が、タッチした足の上昇幅の50%以下であること(上昇勢いが弱まったことを確認)。 3. **スプレッド制限: スプレッドが3.0pips以下であること。 4. 金曜日除外: GMT21時以降の金曜日はエントリーしない。 5. 指標発表除外: 高影響力の経済指標発表から30分以内はエントリーしない。
6. エグジット条件¶
- プライマリ(固定SL/TP): ATR(14)を基準とする。
- ストップロス (SL): エントリー価格 + ATR(14) * 1.5
- テイクプロフィット (TP): エントリー価格 - ATR(14) * 2.5
- オルタナティブ1(トレーリングストップ): 含み益がATR(14)1.0を超えたら、ATR(14)0.5刻みでストップロスを切り上げる。
- オルタナティブ2(時間切れ): エントリーから48本(H1で48時間)経過したら成行決済。
7. リスク管理¶
- RiskPercent: 証拠金の0.5%を1回の取引でリスクにさらす。
- 最大同時ポジション数: 1
- 連敗クールダウン: 3連敗した場合、24時間エントリーを停止する。
- 最大取引数: 1日あたり最大3回のエントリーに制限する(過剰取引防止)。
8. 汎用化ポイント¶
- 絶対価格の排除: 原ツイートの「157〜158円」という価格は、直近の戻り高値(Swing High)として動的に捉え直した。この戦略の本質は「急落後の戻り売り」であり、価格水準に依存しない。
- ATRによる動的調整: SL/TP、エントリーゾーンのバッファ、トレーリング開始/ステップをすべてATRで動的に決定することで、ボラティリティの変化に適応できる。
- モメンタム減衰の定量化: 「勢いが弱まった」という主観的な判断を、直近数本のローソク足の上昇幅の変化率として定量化した。
9. Optimization Envelope¶
- 絶対に守るべき条件(破ると戦略崩壊):
- 戻り売りの方向性(ショートのみ)
- モメンタム減衰の確認(2本以上のローソク足で確認)
- SL/TPはATRベースとし、絶対価格で固定しない
- 緩和してもよい条件:
lookback_bars(エントリーゾーン計算時の直近バー数): 8〜15の範囲で最適化可能。atr_buffer_mult(ゾーンバッファのATR倍率): 0.1〜0.3の範囲で最適化可能。momentum_failure_threshold(モメンタム減衰の閾値): 0.3〜0.7の範囲で最適化可能。atr_sl_mult,atr_tp_mult: リスクリワード比を調整するため、最適化可能。- 最適化推奨パラメータ:
lookback_bars: 10atr_buffer_mult: 0.15momentum_failure_threshold: 0.5atr_sl_mult: 1.5atr_tp_mult: 2.5
10. 無取引回避の設計¶
- 緩和可能条件:
momentum_failure_thresholdを0.7まで緩和すると、より多くの戻り局面でエントリー機会が増える。lookback_barsを8に減らすと、より短期的な戻りを捉えやすくなり、エントリー頻度が向上する。- 最低取引頻度の目安: 1ヶ月あたり最低5回の取引を目標とする。上記パラメータ調整で達成できない場合、戦略自体の見直しを検討する。
11. 過剰取引防止の設計¶
- 連打防止: 1回のエントリー後、最低でも3本のローソク足(H1で3時間)のインターバルを設ける。
- 最大取引数: 1日あたり最大3回のエントリーに制限する。
- ボラティリティ制限: 直近のATR(14)が過去20日の平均ATRの2倍を超える場合(介入直後の異常ボラティリティ)、エントリーを見送る。
12. Story Package¶
- X投稿フック(勝った時): 「介入戻り売りEA、本日も安定のショート!158円の戻りを捉えて155円まで利確。介入はチャンスだ!」
- X投稿フック(負けた時): 「介入戻り売りEA、戻りが強すぎてSLヒット…。介入の効果が続かず、トレンド転換を見誤った。教訓:介入後は戻りが想定以上に強いこともある。」
- ブログ見出し(検証ログ): 「【EA検証】介入戻り売り戦略を完全自動化!バックテスト結果と実際の課題」
- 失敗時の見せ方: 「介入相場はイレギュラー。EAが100%勝てるわけがない。重要なのは、負けた時にどうリカバリーするか。このEAはリスクを限定し、次のチャンスを待つ。」
13. 入力パラメータ一覧(MQL5 input形式)¶
// エントリーパラメータ
input int InpLookbackBars = 10; // 戻り高値検出のルックバックバー数 // from_tweet: 直近の戻り高値を動的に捉えるため
input double InpAtrBufferMult = 0.15; // エントリーゾーンのATRバッファ倍率 // from_tweet: 157〜158円の幅をATRで一般化
input double InpTouchTolerancePips = 5.0; // タッチ許容範囲(pips) // default
input int InpConfirmationBars = 2; // モメンタム減衰確認バー数 // from_tweet: 勢いが弱まったのを確認
input double InpMomentumFailureThreshold = 0.5; // モメンタム減衰閾値(0.0〜1.0) // default
// フィルターパラメータ
input double InpMaxSpreadPips = 3.0; // 最大スプレッド(pips) // default
input int InpNewsExclusionMinutes = 30; // 指標発表除外時間(分) // default
// エグジットパラメータ
input int InpAtrPeriod = 14; // ATR期間 // default
input double InpAtrSlMult = 1.5; // SLのATR倍率 // default
input double InpAtrTpMult = 2.5; // TPのATR倍率 // default
input double InpTrailingStartAtrMult = 1.0; // トレーリング開始ATR倍率 // default
input double InpTrailingStepAtrMult = 0.5; // トレーリングステップATR倍率 // default
input int InpTimeExitBars = 48; // 時間切れ決済バー数 // default
// リスク管理パラメータ
input double InpRiskPercent = 0.5; // 1取引あたりのリスク(%)
input int InpMaxPositions = 1; // 最大同時ポジション数
input int InpMaxDailyTrades = 3; // 1日最大取引数 // default
input int InpConsecLossCooldown = 3; // 連敗クールダウン数
input int InpCooldownHours = 24; // クールダウン時間(時間)
input int InpMinBarsBetweenTrades = 3; // 取引間の最小バー数 // default
input double InpVolatilityCapMult = 2.0; // ボラティリティ上限倍率(ATR比) // default
// その他
input int InpMagicNumber = 205011306; // マジックナンバー
input string InpComment = "InterventionPullbackShort"; // コメント
14. 実装要件¶
- 新バー検出: 新しいバーが生成された時のみ処理を実行する(OnTick内でIsNewBar()関数を使用)。
- 確定足: エントリー条件の確認は、確定したローソク足の終値を使用する。
- マジックナンバー: 一意のマジックナンバーを設定し、他のEAとポジションを混同しないようにする。
- OrderSendエラーハンドリング: リトライ処理とエラーログ出力を実装する。
- パフォーマンス考慮: インジケータ計算はOnInitで一度行い、Tick毎に再計算しないようにする。
- 履歴データ: 最低でも過去100本のローソク足データが必要。
- テストモード: ストラテジーテスターで正しく動作するよう、
MQLInfoInteger(MQL_TESTER)を考慮した分岐は不要(標準のテスターで動作するように記述する)。 - 初期化: OnInit関数で必要なインジケータハンドルを取得し、OnDeinitで解放する。
免責事項
本EAは自動生成された検証用コードです。実運用可否はご自身で検証してください。
関連用語¶
- 用語集 - バックテスト
- 用語集 - 勝率
- 用語集 - ATR
- 用語集 - スプレッド
- 用語集 - pips
- 用語集 - ボラティリティ
- 用語集 - Tick
- 用語集 - マジックナンバー
- 用語集 - OnInit
- 用語集 - MQLInfoInteger
- 用語集 - OnDeinit