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(デフォルト)、ステップ5atr_buffer_mult: 0.25(デフォルト)、ステップ0.05atr_sl_mult: 1.2(デフォルト)、ステップ0.2atr_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は自動生成された検証用コードです。実運用可否はご自身で検証してください。
関連用語¶
- 用語集 - 逆張り
- 用語集 - バックテスト
- 用語集 - ADX
- 用語集 - ATR
- 用語集 - スプレッド
- 用語集 - pips
- 用語集 - ロット
- 用語集 - ボラティリティ
- 用語集 - 勝率
- 用語集 - Tick
- 用語集 - マジックナンバー
— SPONSORED —