コンテンツにスキップ

OsiriLongShort

EA0094_OsiriLongShort_v1.0 / 🧪 候補 — 生成済み・検証待ち

ワンライナー

直近安値圏への押し目タッチでロング、直近高値圏への戻りタッチでショートする両建て逆張り戦略

判定: ⬜ 未評価(判定準備中)

バックテスト結果がまだ取り込まれていません(判定準備中)。

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

基本情報

項目 項目
シンボル USDJPY エントリー種別 price_level_touch, price_level_touch
時間足 H1 エグジット atr_tp_sl
方向 both 主要インジケータ ADX_14

🧬 DNA 5軸

primary_style entry_mechanism regime_target position_logic core_indicator_family
range pullback ranging fixed_sl

🐦 元ネタツイート

https://x.com/Kitagawa_fx/status/2059582355262865640

📊 バックテスト結果

未実行

📝 仕様書 / Specification

クリックで展開

押し目ロング・戻り売り EA 仕様書

1. 原ネタ要約

  • 投稿者 @Kitagawa_fx が「中学生でも分かる」と銘打ってドル円の具体的な価格帯(159.10円付近で買い、159.375円で利確売り)を示したツイート。
  • 「基本は押し目を待ってロングが圧倒的優勢」という文言から、ロングが主軸だが、ショートの逆張りも併記されている。
  • 61いいね・3リポストと小規模ながら、具体価格が明示されているため機械化しやすい。

2. 戦略概要

  • USDJPYのH1足で、直近のスイング安値圏(ATRバッファ付き)へのタッチでロング、直近のスイング高値圏へのタッチでショートする逆張り戦略。
  • ADXが25未満のレンジ相場でのみ発動し、トレンド相場では機能しない。
  • エグジットはATRベースの固定SL/TPと、時間切れ決済を併用。

3. 戦略抽象化

  • 原ツイートの「159.10円で買い」→ 直近15本の最安値にATR(14)*0.25のバッファを加えたゾーンにタッチしたらロング。
  • 原ツイートの「159.375円で売り」→ 直近15本の最高値にATR(14)*0.25のバッファを引いたゾーンにタッチしたらショート。
  • 価格水準は市場構造(スイング高安)に置き換え、絶対価格は使用しない。

4. シンボル・時間足

  • シンボル: USDJPY
  • 時間足: H1(原ツイートは時間足明示なし。H1は中期スイングに適切)

5. エントリー条件

ロングエントリー
  • 条件(AND):
  • 新バー確定時、終値が直近15本の最安値(iLowest(NULL,0,MODE_LOW,15,1))からATR(14)*0.25を引いた価格以下(タッチ)
  • 同時に、終値が直近15本の最安値からATR(14)*0.5以内(過度なブレイクは避ける)
  • ADX(14) < 25(レンジ相場確認)
  • スプレッド <= 2.5pips
  • 金曜日GMT21時以降はエントリーしない
ショートエントリー
  • 条件(AND):
  • 新バー確定時、終値が直近15本の最高値(iHighest(NULL,0,MODE_HIGH,15,1))からATR(14)*0.25を加えた価格以上(タッチ)
  • 同時に、終値が直近15本の最高値からATR(14)*0.5以内
  • ADX(14) < 25
  • スプレッド <= 2.5pips
  • 金曜日GMT21時以降はエントリーしない

6. エグジット条件

  • プライマリ: ATRベースの固定SL/TP
  • SL: エントリー価格 - ATR(14)*1.2(ロングの場合)
  • TP: エントリー価格 + ATR(14)*2.0(ロングの場合)
  • ショートは逆方向
  • 代替1: 時間切れ決済(エントリーから48バー経過)
  • 代替2: 建値+トレーリングストップ(含み益がATR*1.0を超えたらSLを建値に移動)

7. リスク管理

  • リスク許容度: 証拠金の0.5%を1ポジションあたりの最大損失とする(SL幅からロット計算)
  • 最大同時ポジション数: 1(ロングまたはショートのどちらか一方のみ)
  • 連敗クールダウン: 3連敗で24時間エントリー停止

8. 汎用化ポイント

  • 直近スイング高安へのタッチという市場構造は、USDJPY以外の通貨ペアや時間足でも機能する可能性がある。
  • ATRバッファにより、ボラティリティ変動に適応できる。
  • 原ツイートの「159.10」「159.375」という絶対価格は、その日の特定レベルに過ぎず、長期バックテストでは無意味。本仕様では市場構造に置き換えたことで、いつの価格帯でも機能する。

9. Optimization Envelope

守るべき条件(変更禁止)
  • ADX < 25 フィルター(逆張り戦略の根幹)
  • スプレッド制限(2.5pips以下)
  • 金曜日深夜のエントリー禁止
  • 連敗クールダウン(3連敗で停止)
緩和可能な条件
  • lookback_bars: 10〜30の範囲で最適化可能
  • atr_buffer_mult: 0.1〜0.5の範囲で最適化可能
  • touch_tolerance_pips: 2〜8の範囲で最適化可能
  • atr_sl_mult: 1.0〜2.0の範囲で最適化可能
  • atr_tp_mult: 1.5〜3.0の範囲で最適化可能
  • time_exit_bars: 24〜72の範囲で最適化可能
最適化推奨パラメータ
  • lookback_bars: 15(デフォルト)、ステップ5
  • atr_buffer_mult: 0.25(デフォルト)、ステップ0.05
  • atr_sl_mult: 1.2(デフォルト)、ステップ0.2
  • atr_tp_mult: 2.0(デフォルト)、ステップ0.3

10. 無取引回避の設計

  • 条件が厳しすぎて全くエントリーしない場合、以下の緩和を順に試す:
  • lookback_bars を20→10に短縮(より頻繁にゾーン更新)
  • atr_buffer_mult を0.25→0.35に拡大(ゾーン幅拡大)
  • touch_tolerance_pips を4→6に拡大(タッチ判定緩和)
  • 目標: 1週間に最低1回のエントリー

11. 過剰取引防止の設計

  • 連打防止: 同一方向のエントリーは、前回エントリーから最低5バー経過するまで許可しない
  • 最大取引数: 1日あたり最大3回(ロング+ショート合計)
  • ボラ制限: ATR(14)が直近50バーのATR平均の2倍を超える場合はエントリー禁止(異常ボラティリティ回避)

12. Story Package

X投稿フック
  • 「『中学生でも分かる』をEA化したら、逆張りロボが誕生した」
  • 「159.10で買い、159.375で売り。たった2本の水平線でトレードする脳死EAのバックテスト結果」
  • 「ADXフィルターでレンジ相場だけ狙う。逆張りの教科書をそのままコードにした」
ブログ見出し
  • 「【EAレビュー】押し目ロング・戻り売り:ドル円の水平線逆張りをATRで機械化」
  • 「3ヶ月バックテスト:勝率とPFは? 無取引期間は?」
失敗時の見せ方
  • 「ADXが高くて全くエントリーしなかった1週間。トレンド相場では機能しないことを確認」
  • 「スプレッド拡大でエントリー機会損失。低スプレッド時間帯の選別が必要」
  • 「連敗クールダウン発動。3連敗後の24時間停止でさらなる損失を回避」

13. 入力パラメータ一覧

C++
// === エントリーパラメータ ===
input int InpLookbackBars = 15;           // 直近スイング高安の参照バー数
input double InpAtrBufferMult = 0.25;     // ATRバッファ倍率
input int InpTouchTolerancePips = 4;      // タッチ許容範囲(pips)
input int InpConfirmationBars = 1;        // 確定待ちバー数

// === フィルターパラメータ ===
input int InpAdxPeriod = 14;              // ADX期間
input int InpAdxThreshold = 25;           // ADX閾値(未満でエントリー)
input double InpSpreadCapPips = 2.5;      // 最大許容スプレッド
input int InpFridayBlockHour = 21;        // 金曜日エントリー禁止開始GMT時

// === エグジットパラメータ ===
input int InpAtrPeriod = 14;              // ATR期間
input double InpAtrSlMult = 1.2;          // SLのATR倍率
input double InpAtrTpMult = 2.0;          // TPのATR倍率
input int InpTimeExitBars = 48;           // 時間切れ決済バー数

// === リスク管理 ===
input double InpRiskPercent = 0.5;        // 1ポジションあたりのリスク(%)
input int InpMaxPositions = 1;            // 最大同時ポジション数
input int InpConsecLossCooldown = 3;      // 連敗クールダウン回数
input int InpCooldownHours = 24;          // クールダウン時間(時間)

// === 過剰取引防止 ===
input int InpMinBarsBetweenTrades = 5;    // 同一方向の最小間隔バー数
input int InpMaxTradesPerDay = 3;         // 1日あたりの最大取引数

14. 実装要件

  • 新バー検出: OnTick() 内で iTime(NULL,0,0) != lastBarTime による確定足検出
  • 確定足の使用: エントリー条件はすべて確定したバーの終値で判定
  • マジックナンバー: 一意のマジックナンバーを定義(例: 20260527)
  • ポジション管理: PositionSelectByTicket() でポジションを追跡
  • スプレッドチェック: エントリー直前に SymbolInfoInteger(_Symbol,SYMBOL_SPREAD) で確認
  • エラーハンドリング: 注文失敗時はリトライせず、次のバーまで待機
  • 履歴管理: 連敗カウントは HistorySelect() で当日の履歴から取得
  • 時間帯判定: TimeGMT() を使用し、金曜日GMT21時以降はエントリー禁止

免責事項

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

EA1000 一覧に戻る


関連用語

— SPONSORED —