Range_Breakout_Low_Vol_Oscillator¶
EA0304_Range_Breakout_Low_Vol_Oscillator_v1.0 / ⚠️ FAILED — 生成失敗・修正失敗・BT不合格
ワンライナー
Range Breakout Low Vol Oscillator
判定: ⚫ 散(散る(検証に乗らず))
自律生成EA。エントリー不成立 or 検証未成立で評価対象外。量産の中で淘汰された一体。
自律生成ライン(網羅的に量産)
基本情報¶
| 項目 | 値 | 項目 | 値 | |
|---|---|---|---|---|
| シンボル | USDCAD | エントリー種別 | breakout | |
| 時間足 | M15 | エグジット | fixed_sl | |
| 方向 | both | 主要インジケータ | — |
🧬 DNA 5軸¶
| primary_style | entry_mechanism | regime_target | position_logic | core_indicator_family |
|---|---|---|---|---|
range | breakout | low_vol | fixed_sl | oscillator |
📊 バックテスト結果¶
判定: ❌ FAIL / 期間: 2026.04.17 〜 2026.06.01
| PF | 損益率 | 勝率 | 最大DD | シャープ | 取引数 |
|---|---|---|---|---|---|
| 0.84 | -1.69% | 31.0% | 5.49% | -4.72 | 29 |
📝 仕様書 / Specification¶
クリックで展開
リサーチEA仕様書: Range Breakout Low Vol Oscillator¶
EA識別情報¶
- EA名: REF0830_10_Range_Breakout_Low_Vol_Oscillator_v1
- 通貨ペア: USDCAD
- 時間足: M15
- プライマリスタイル: range
- エントリーメカニズム: breakout
- レジームターゲット: low_vol
- ポジションロジック: fixed_sl
- コアインジケーター系統: oscillator
- キャプチャ意図: head (head=新規の頭を取る / middle=頭と尻尾を渡す / tail=枯れ際の反転を取る)
リサーチテーゼ¶
Range Breakout Low Vol Oscillator candidate generated from 4 research source(s). The strategy must preserve the source idea while keeping parameters broad enough to survive out-of-sample testing.
根拠ソース¶
- [MR] 逆張り/リバージョン系は直近12本中、発火率75%・BT合格率0%。いま市場がこの族のトリガー条件を満たしやすい地合い。
- [MR] EURUSD COT混雑実測: レバレッジ勢のネットが3年P9のショート極端。混雑ポジションの巻き戻し(スクイーズ)を取る逆張り・リバーサル系が構造的に有利。
- [MR] EURUSD オプション実測: 大口ストライクまで11pipsのガンマ・ピン圏。ヘッジフローが値動きを吸収するため、レンジ回帰・ピン狙いのロジックが機能しやすい。
- [MR] EURJPY COT混雑実測: レバレッジ勢のネットが3年P9のショート極端。混雑ポジションの巻き戻し(スクイーズ)を取る逆張り・リバーサル系が構造的に有利。
- [FILTER] [MR] 市場クローズ前後 (23:00-01:30 JST) は日次決算ポジション調整で流動性低下、スキャルは避ける
トレード仕様¶
以下5点は必須です。いずれかが欠落・空欄の場合、この仕様書は不合格としてください。
1. Entry logic(エントリー条件)¶
BUY entry: close[1] exceeds the N-bar highest high evaluated at bar[2] or earlier — close[1] > iHigh(_Symbol, PERIOD_CURRENT, iHighest(_Symbol, PERIOD_CURRENT, MODE_HIGH, InpLookback, 2)) (input default InpLookback=20). SELL entry: close[1] < N-bar lowest low — symmetric. ATR activity filter: use atr[2] < atr_avg[2] * InpSqueezeMult evaluated on bar[2] NOT bar[1] — evaluating squeeze and breakout on the same bar causes a logical contradiction (squeeze = low ATR, breakout = high move; same-bar AND is nearly impossible). Regime: use 100-bar SMA slope (sma100[1] - sma100[20] > 0) as an independent trend filter. ONE regime variable only: do NOT also add a price-vs-SMA check — one slope condition is sufficient.
2. Exit logic(決済条件)¶
Partial exit 50% at 1R (distance = entry to initial SL). Trail remaining 50%: ATR trailing stop at InpTrailATR * atr[1] (default InpTrailATR=2.0), only moving in profit direction — NEVER widen stop. Regime exit: if regime condition (volatile/trending) disappears — ADX drops below InpMinADX — close immediately. Time exit: close any open position after InpMaxBars bars (default=48) if still alive. Hard rule: initial SL is NEVER moved against position.
2.5 キャプチャ意図に基づく Exit Discipline (拘束)¶
キャプチャ意図: HEAD — Head capture: the thesis is to catch a new move from the start. SL must be tight because failed breakouts are the dominant failure mode; TP is wide and a trailing stop locks in the extension.
- TP: ATR(14, bar[1]) × 3.5
- SL: ATR(14, bar[1]) × 1.0
- トレイル: +1.5*ATR 到達後にトレイル開始
- 時間切れ: 30 bars
- 部分決済: 部分決済なし
EA 実装ガードレール (絶対遵守):
- Initial SL must be TIGHT (1.0*ATR or less) — failed breakouts are the main risk.
- Trailing stop activates only AFTER +1.5*ATR favorable excursion.
- TP is allowed to be wide (3.5*ATR) but a hard time exit at 30 bars caps the position.
- Do NOT use partial close — head capture rides the whole move via trailing.
参考 MQL5 擬似コード (実装の出発点):
double atrAtEntry = iATR(_Symbol, _Period, 14)[1];
double tp = entryPrice + side * 3.5 * atrAtEntry;
double sl = entryPrice - side * 1.0 * atrAtEntry; // TIGHT initial SL
// Trailing activates once trade reaches +1.5 * atrAtEntry favorable excursion.
if (favorableExcursion >= 1.5 * atrAtEntry) {
double trailing = currentPrice - side * 1.5 * atrAtEntry;
if ((side == +1 && trailing > currentSL) ||
(side == -1 && trailing < currentSL)) {
ModifyStop(trailing);
}
}
if (barsHeld >= 30) { ClosePosition("head_time_exit"); }
上記の Exit Discipline は section 2 (Exit logic) と矛盾する場合、Exit Discipline を優先してください。 メカニズム別の Exit 指示は同方向性の確認、Capture Intent の指示は拘束的な数値規律です。
3. Risk management(資金管理)¶
Fixed fractional risk per trade, no martingale, no grid expansion, max one position per symbol, and hard daily loss guard.
4. Regime filter(レジームフィルター)¶
low_vol regime confirmation using SAME timeframe indicators only
5. Invalidation condition(無効化条件)¶
If walk-forward repeatedly shows OOS PF < 1.0 or trades collapse after loosening entry filters, archive the DNA.
5点構造チェック: 上記5セクションがすべて記載されていることを確認してください。
フィルター¶
- Spread and session filter
- Regime-specific confirmation filter from source evidence
- Minimum ATR activity filter
ロジック独立性要件¶
必須チェック(実装前に確認すること):
- エントリーシグナル変数とレジームフィルター変数は独立したデータ源または独立したlookbackから計算すること
- 悪い例:
bullishCross = fastMA[1] > slowMA[1]とisBearishRegime = fastMA[1] < slowMA[1]を AND 結合 → 同一バーで両立不可、取引ゼロになる - 正しいレジーム定義:
slowMA[1] - slowMA[10]の傾き、上位足のMA方向、長い lookback(50本以上)の傾き - 全フィルターを AND 結合した時に、理論上発火できるバーが存在することをスケッチで確認すること
- 逆張り戦略では「エントリー条件の否定 ≠ レジーム条件」になっているか必ず確認すること
- RSI・BB・ATR など同一インジケーターを「シグナル源」と「フィルター源」の両方に使う場合、同じバーで矛盾する不等式を要求していないか確認すること
- レジーム変数は1本のみ:
bullishRegime(またはuptrend等) という bool 変数を1つ定義し、エントリー条件の AND に使うのはその1変数のみにすること。bullishRegime && regimeUpのように2本のレジーム変数を AND 結合することを禁止する。スロープ・価格位置・ADX など複数軸で判断したい場合は、それらを統合した1本の bool 変数にまとめてから AND に組み込むこと。
Primitive Execution Lane¶
- レーン: VERIFIED
- 検証済みprimitive:
- entry:breakout (confirmed-bar breakout trigger)
- position:fixed_sl (fixed-risk SL/TP with optional time exit)
- experimental primitive:
- none
- 判定理由:
- All detected strategy and position mechanics map to verified primitives
- 実装方針: 発想はentry/regime/filterに閉じ込め、発注・部分決済・建値移動・日次停止は検証済みprimitiveを使う。experimentalの場合は専用helperに隔離する。
最適化許容範囲¶
- 緩和可能: 確証閾値、ATR活性閾値、セッションウィンドウ、シグナル確証バー数。
- 緩和不可: 損切り規律、最大ポジション数1、過去の固定価格水準の不使用。
- 明示的に正当化される場合のみ特殊アプローチを許可: ブローカー非対称性の活用、出金ありマーチンゲール戦略、逆張りセンチメントフェード、地政学イベント裁定、構造的レイテンシエッジ、量子風最適化、群知能ポジションサイジング、ゲーム理論的マーケットメイキング。
- 特殊アプローチを使用する場合は以下を必須記載: (1) 1トレードおよび1日あたりの厳密なリスク上限(pips/%)、(2) キルスイッチ条件(取引停止条件)、(3) 構造的エッジの存在根拠、(4) エッジ消失時の標準ルールへのフォールバック。
- 多様性指令: レジストリ内の既存EAがほとんどTREND系ならMRかBREAKOUTを生成。ほとんどテクニカル指標ベースなら、異常/季節/レジームベースまたは学際的(物理/生物/心理)アプローチを生成。未探索の角度を追求すること。
- 初期最適化範囲: 3〜5パラメータのみ。
- 取引ゼロの場合: まずエントリー確証を緩和、次にセッション制限、次にATR閾値を緩和。
- 取引過多の場合: レジームフィルターと最小シグナル距離を強化。
バックテスト合格基準¶
- Backtest at least 24 months with the latest 3 months held out.
- Use walk-forward setting 4:2 when MT5 runner is available.
- Reject if OOS/IS PF ratio is below 0.70 or if OOS PF min is below 1.10.
- Reject if OOS trade count is below 15 trades per held-out window (minimum 30 total); first loosen entry filters before optimizing profit targets.
- OOS PF is the only success metric. IS PF is parameter sanity, not the headline.
- A profitable strategy must answer 'why does this work?' from a stated hypothesis (microstructure, behavioral bias, seasonal anomaly, regime shift). Chains of indicators with no thesis are presumed curve-fit.
過学習対策¶
- Robust > Profitable. A PF=1.20 strategy that survives every OOS window beats a PF=2.50 one that wins in one window and crashes in another.
- Keep each numeric parameter in a wide theory-backed range; do not tune to a single date range.
- Use canonical defaults (RSI=14, ATR=14, BB=20/2, MA=20/50/200). Magic numbers (RSI=17, ATR=23, BB=18/1.7) are a red flag of curve-fitting unless the spec cites prior research justifying that exact value.
- Limit optimization to 3-5 core parameters in the first pass.
- Forbid AND-chains of more than 4 filters at entry. Each added filter shrinks sample size and looks like edge but is usually fit.
- If a single time-of-day or day-of-week window dominates the trade history, the edge is calendar artifact, not strategy.
- Prefer regime filters with clear market meaning over curve-fitted thresholds.
- Stop improving the candidate after repeated NO_TRADE/LOW_SAMPLE failures.
学習フィードバック¶
- Avoid past failure: 【根本的失敗】全4ウィンドウでIS/OOS共にPF≈0.01〜0.05という壊滅的な水準。 勝率は61〜72%と高いにもかかわらずPF=0.03という矛盾は、 「平均損失(avg_loss≈2,500〜2,900)が平均利益(avg_win≈730〜975)の 約3倍」というペイオフ比の根本的な歪みに起因する。 【具体的な失敗メカニズム】 1. SL=TP=1.5×ATRの対称設定にもかかわらず実際の損失が利益の3倍超になっている。 これはアジアセッション(低ボラ)でエントリーし、ロンドン/NY時間に 大きなトレンドで逆行してSLを大きく超えてスリッページ・ギャップで ストップアウトされる「セッション跨ぎの方向性リスク」が原因と推定される。
- EURUSDのM15アジアセッションでSMAクロスを使うと、 レンジ相場でのダマシクロスが頻発し、逆方向への大きな動きに巻き込まれる。
- レジームフィルター(SMA50スロープ閾値0.5pips)が緩すぎて 実質的にフィルタリング機能を果たしていない。
- 部分決済後のブレークイーブン移動が機能する前に大損失が発生している。 5. IS/OOS逆転(OOS>IS)が全試行で一貫して発生しており、 ISウィンドウが特定の困難な相場レジーム(強トレンド・高ボラ期)に 偏っていた可能性があるが、いずれにせよ全ウィンドウでPF<0.1は 戦略の構造的欠陥を示す。
- 3回の改善試行でPF改善幅<0.05と変化なし=パラメータ調整では 解決不可能な根本的ロジック欠陥。 -> Pivot hint: 【変更すべき軸(優先順)】
-
【最優先】エントリーロジックの完全刷新: SMAクロスをアジアセッションのレンジブレイクアウト戦略に変更する。 具体的にはアジアセッション高値/安値のブレイクアウト(ロンドンオープン前後) をエントリーシグナルとし、方向性のある動きを捉える設計に転換する。
-
【ペイオフ比の修正】TP:SL比を非対称に設定する(例:TP=3×ATR、SL=1×ATR)。 現在のSL=TP=1.5×ATRは理論上RR=1:1だが実際は1:3の逆転が起きており、 少なくともTP=2.5〜3×ATRに拡大してペイオフ比を改善する必要がある。
-
【時間足変更】M15→H1またはH4に切り替える。 アジアセッションのM15はノイズが多くSMAクロスのダマシが頻発する。 H1以上ではクロスシグナルの信頼性が向上する。
-
【シンボル変更】EURUSDからGBPJPY(本来の設計対象)またはUSDJPYに変更する。 アジアセッションの流動性・ボラティリティ特性がEURUSDとは大きく異なる。
-
【セッション戦略の転換】アジアセッション内でのスキャルプではなく、 「アジアレンジ確定後のロンドンオープンブレイクアウト」戦略に変更する (セッション終了時刻=エントリートリガーとして活用)。
-
【レジームフィルター強化】SMA50スロープ閾値を0.5pipsから 5〜10pips相当に引き上げるか、ADXフィルター(ADX>25)を追加して 真のトレンド相場のみでエントリーする。
- Avoid past failure: 【根本的失敗要因】
-
ペア・時間足のミスマッチ: コードはGBPJPY H4向けに設計(スプレッド上限5pips、 最小ATR10pips等)されているが、バックテストはEURUSD H4で実施。 パラメータが対象通貨ペアに最適化されておらず、フィルター条件が機能しなかった。
-
壊滅的なペイオフ比率の歪み: 勝率84%(attempt1)にもかかわらずPF=0.31。 平均勝ちトレード約3,800USD に対し平均負けトレード約9,247USD(損益比1:2.4の逆転)。 TP=ATR×1.5、SL=ATR×1.5で設計上は1:1のはずが、半決済後にBEへ移動する Exit Disciplineが実質的にTPを縮小させ、SLはフルサイズのまま残るため 非対称な損失構造が生まれた。
-
プルバック条件の論理的欠陥: 買いシグナルの条件が 「close[2] < slowSMA[2] + ATR×1.5」(SMAより上にいる状態)であり、 本来のプルバック(SMAに近づく/下回る)を捉えていない。 SMAより上にある状態をプルバックと誤認しており、トレンド追従の エントリータイミングが根本的に間違っている。
-
1本反転確認の信頼性不足: H4足で「close[1] > close[2]」という 1本の陽線確認だけでは、レンジ相場やノイズに対して過剰反応する。 全ウィンドウでIS/OOS共にPF 0.14〜0.27と一貫して低く、 相場環境を問わず機能しないことが証明された。
-
サンプル数の慢性的不足: H4足×2年間で19〜40トレードと極めて少なく、 統計的有意性が確保できない。条件が厳しすぎてエントリー機会を逃している。 -> Pivot hint: 【次に変えるべき軸】
-
ペア統一: コード設計通りGBPJPYでバックテストを実施する(EURUSDは破棄)。 またはEURUSD専用にパラメータを再設計(最大スプレッド2pips、最小ATR8pips等)。
-
プルバック条件の修正: 買いシグナルは「close[2] < slowSMA[2]」(SMAを下回る) または「close[2] < slowSMA[2] + ATR×0.3」(SMAに接近)に変更し、 真のプルバックを捉えるロジックに修正する。
-
Exit構造の再設計: 半決済+BEシフトがペイオフ比率を破壊しているため、 半決済を廃止してTP=ATR×2.0、SL=ATR×1.0(RR=2:1)の非対称構造に変更する。 または半決済後の残りポジションのTPをATR×3.0まで延長してRRを回復させる。
-
時間足の変更: H4では2年間でサンプル不足のため、H1に切り替えて エントリー頻度を4倍に増やし統計的有意性を確保する。 ただしスプレストコストに注意。
-
トレンドフィルターの強化: SMA50スロープだけでなく、 SMA200との位置関係(price > SMA200 = 強気レジーム)や ADX > 25のトレンド強度フィルターを追加して、 レンジ相場でのフォールスシグナルを排除する。
-
複数バー確認の導入: 1本反転確認を「直近3本のうち2本が反転方向」 またはピンバー・エンゴルフィングパターン等のローソク足パターン確認に 変更してシグナル品質を向上させる。
-
Avoid past failure: 【根本的失敗原因】 全3回のバックテスト試行でPFが0.02〜0.06と壊滅的に低く(PF=1.0未満どころか0.1以下)、 4ウィンドウWF全窓で利益ゼロという完全な機能不全を示した。
-
ペイオフ比の構造的欠陥: 勝率73%でもPF=0.03という矛盾は、avg_win(14.69)がavg_loss(27.14)の約半分という 著しく不利なリスクリワード比に起因する。SL=TP=ATR×1.5の対称設定にもかかわらず、 部分決済(半分を+1.0ATRで利確)が残りポジションの平均利益を大幅に圧縮し、 逆にSLは全量で被弾するため実質RR比が0.5以下に劣化している。
-
MAクロスのラグによる逆張り的エントリー: M15のSMA10/30クロスはシグナル確定時点で既に値動きの大半が終了しており、 クロス後の残余モメンタムが小さい。USDCADのM15レンジ相場では クロス直後に反転するケースが多く、SL到達率が高い。
-
SMA50スロープフィルターの機能不全: 閾値(0.0001×Point)が極めて小さく、実質的にほぼ全相場でフィルターが通過してしまう。 レンジ相場でも「レジーム確認済み」として誤エントリーが多発した可能性が高い。
-
M15スキャルピングとスプレッドコストの相性: USDCADはスプレッドが相対的に広く、M15の小さな値幅に対してスプレッドコストの 比率が高い。avg_win=14.69に対してスプレッドが数pips存在すると実質的な期待値が さらに悪化する。
-
部分決済ロジックの逆効果: +1.0ATRで半分決済→残り半分をBE移動という設計が、勝ちトレードの利益を 早期に刈り取りながら、BE到達前に逆行した場合は元のSLで全量損失となる 非対称な損益構造を生み出している。
【やられた相場環境】 2026年4月〜5月のUSDCAD M15:レンジ的な横ばい相場でMAクロスが頻発するが 方向性が続かず、クロス後の即反転パターンが支配的だった期間。 -> Pivot hint: 【優先度順の改善軸】
-
時間足をH1またはH4に切り替える(最優先): M15のMAクロスはノイズが多すぎる。H1以上ではクロス後のモメンタム持続性が 統計的に改善し、スプレッドコスト比率も低下する。 同じSMA10/30クロスでもH1で再検証することを推奨。
-
非対称RR比への変更(SL:TP=1:2以上): 部分決済ロジックを廃止し、TP=SL×2.0〜3.0の固定RR比に変更する。 または部分決済を廃止してフルポジションでTP=ATR×2.5〜3.0を狙う設計に転換。
-
レジームフィルターの厳格化: SMA50スロープ閾値を現在の0.0001×Pointから少なくとも10倍(0.001×Point)以上に引き上げる。 または200期間SMAの傾きとの組み合わせ、もしくはADXフィルター(ADX>25)を追加して 真のトレンド相場のみでエントリーを許可する。
-
エントリーロジックの変更(MAクロスからブレイクアウトへ): MAクロスという遅行シグナルを捨て、直近N本の高値/安値ブレイクアウト (例:20本高値更新)をエントリー条件に変更する。 これによりシグナル確定時点での残余モメンタムが増加する。
-
通貨ペアの変更: USDCADはレンジ傾向が強くMAクロス戦略との相性が悪い。 トレンド性の高いGBPJPYやXAUUSDへの変更を検討する。
- [DIVERSITY-EXPLORE] Targeted an unexplored DNA combination (headroom-directed).
実装ガードレール¶
- [PRIMITIVE-LANE: VERIFIED] Keep creativity in entry/regime/filter logic; use verified execution primitives only.
- [PRIMITIVE-LANE: VERIFIED] Mapped primitives: entry:breakout (confirmed-bar breakout trigger); position:fixed_sl (fixed-risk SL/TP with optional time exit).
- [PRIMITIVE-LANE: VERIFIED] Do not introduce martingale/grid/latency/arbitrage execution mechanics during MQL5 generation.
- [META] [RISK] [CONTRA] MT5 Strategy Testerは同名EAのinput値をキャッシュすることがあり、mq5側のinputデフォルトを変更して再コンパイルしても、BTでは前回値が使われる場合がある。inputデフォルト変更の検証では、別EA名/別ファイル名にするか、tester.ini/ExpertParametersで明示的に値を渡し、Testerログの「started with inputs」を必ず確認する。 (.clinerules)
- [RISK] [META] [CONTRA] 【部分決済後のコメント管理パターン】MQL5ではPositionModifyでコメントを変更できないため、TP1部分決済後の状態管理にコメントプレフィックスを使う設計は「二重部分決済」リスクを内包する。対策として: (1)グローバルなulong配列でTP1済みチケットを管理する、(2)部分決済後に残りを即クローズ→新コメントで再エントリーする、のいずれかのパターンを採用すること。 (.clinerules)
- [TREND] [BREAKOUT] [FILTER] [META] マルチタイムフレームEAでATR等のボラティリティ指標をCopyBufferする際、エントリー判定用の価格・MA(start_pos=1で確定足参照)とATR(start_pos=0で未確定バー参照)でstart_posが混在しやすい。設計方針として「全バッファのstart_posを統一する」か「ATRのみ最新値を使う理由をコメントで明記する」かを決めておくべき。 (.clinerules)
- [FILTER] SYMBOL_SPREADはポイント単位のlong値を返すため、価格単位に変換するには
* _Pointを直接使用する (.clinerules) - [FILTER] スキャルピングEAでXAUUSD等のスプレッド変動が大きい銘柄を扱う場合、pips単位ではなく価格単位(ドル)でスプレッド閾値・トレランスを指定する設計が適切。_Digits==2環境ではpips×_Pointが意図しない極小値になる (.clinerules)
- [TREND] [FILTER] スプレッドリトライパターン(予約エントリーのスプレッド不良時リトライ): 予約フラグ方式でスプレッド不良時に即破棄せず、MAX_SPREAD_RETRY回まで次バーで再試行する設計。リトライカウンターは予約フラグと同時にリセットし、クールダウンや金曜制限等の他条件で予約破棄する際もリセットを忘れないこと。リトライの粒度(ティック単位 vs バー単位)を設計時に明確にすべき。 (.clinerules)
- [META] HistorySelect(0, TimeCurrent()) は全取引履歴を走査対象にするため、長期運用や多数の取引がある口座ではパフォーマンスに影響する。連敗カウント等の直近履歴のみが必要な場合は、開始時刻を限定する(例: TimeCurrent() - 30243600)か、最後のチェック時刻を記録して差分走査にする。 (.clinerules)
- [META] MQL5のOnTradeTransactionではDEAL_ENTRY_INOUTも処理対象に含めないと、ネッティング口座での約定イベントを捕捉できない場合がある (.clinerules)
ストーリーパッケージ¶
- フック: AIが研究メモから自律発掘した「Range Breakout Low Vol Oscillator」をEA化して検証。
- ブログアングル: 研究アイデアは本当にMT5で再現できるのか、OOSで崩れるかまで公開する。
- 失敗アングル: 失敗時は NO_TRADE / LOW_SAMPLE / OVERFIT / HIGH_DD に分類して次の研究候補へ進む。
Spec Validation Warnings (auto-generated)¶
- CONTRADICTION: 【時間的矛盾: ATR低下×ブレイクアウト】Entry logicでATRスクイーズ確認をbar[2]で行い、ブレイクアウトをbar[1]で判定する設計は正しい。しかし、Entry logicの記述では「ATR activity filter: use atr[2] < atr_avg[2] * InpSqueezeMult evaluated on bar[2]」とあり、これは「ATRが低い=スクイーズ状態」を要求している。一方、ブレイクアウト条件「close[1] > iHigh(..., 2)」は「価格が直近N本の高値を突破=ボラティリティの拡大」を意味する。ATR[2] < threshold(低ボラ確認)とclose[1] > highest[2](高ボラ動作)を別バーで評価する設計は時間的矛盾を回避しているが、Entry logicの記述に「evaluating squeeze and breakout on the same bar causes a logical contradiction」とあるにもかかわらず、実際の条件文がどう連結されるかが不明確。さらに致命的なのは、Entry logicに「ATR activity filter」と明記されているが、Filtersセクションにも「Minimum ATR activity filter」が存在する。これが同一条件の二重定義になるか、あるいはEntry logic側の「ATR activity filter」が実際には「ATRが低いこと」を要求しつつ、ブレイクアウトが「高ボラ動作」を要求するという、時間軸を分離していても「低ボラ後のブレイクアウト」という発火頻度の極めて低い条件になっている。
- Fix: ATR条件の意図を明確化すること。スクイーズ後のブレイクアウトを狙うなら、atr[2] < threshold(スクイーズ確認)とclose[1] > highest[2](ブレイクアウト確認)の時系列分離は正しい。しかし「Minimum ATR activity filter」が別途存在する場合、これが「ATRが十分高いこと」を要求すると、Entry logicのATRスクイーズ条件と直接矛盾する。Filtersの「Minimum ATR activity filter」を削除するか、Entry logicのATR条件を「最低ATR活動性」に変更すること。
- WARNING: 【レジームフィルターの二重定義】Entry logicに「Regime: use 100-bar SMA slope (sma100[1] - sma100[20] > 0) as an independent trend filter」と明記されている。しかし、仕様書の必須セクション「4. Regime filter(レジームフィルター)」にも「low_vol regime confirmation using SAME timeframe indicators only」とある。Entry logic内のレジーム判定(SMA傾き)と、必須セクション4のレジームフィルター(low_vol確認)が別々に存在し、両方がAND結合される可能性がある。SMA傾きが上昇トレンドを示す状況と「low_vol」レジームが同時に成立する頻度は低く、さらに「ロジック独立性要件」で「レジーム変数は1本のみ」と禁止されているにもかかわらず、仕様書構造上2箇所でレジーム判定が定義されている。
- Fix: レジーム判定を1本のbool変数に統合すること。例: isValidRegime = (sma100傾きが平坦〜弱トレンド) && (ATRが平均以下) && (ADXが低値) など、low_volを定義する複合条件を1つにまとめてからエントリー条件のANDに組み込む。現在の構造では「トレンドあり」かつ「低ボラ」という稀な組み合わせを要求している可能性がある。
- WARNING: 【Source Evidence未反映】根拠ソースに「市場クローズ前後 (23:00-01:30 JST) は日次決算ポジション調整で流動性低下、スキャルは避ける」という時間帯フィルターがあるが、Filtersセクションに具体的な時間帯フィルター実装が見当たらない。Spread and session filterの存在は示唆されているが、23:00-01:30 JSTの除外が明示されていない。
- WARNING: 【Exit DisciplineとExit logicの数値差】Section 2ではPartial exit 50% at 1R、Trail remaining 50%、Time exit: InpMaxBars=48、Trail: InpTrailATR=2.0。一方、Section 2.5 Exit Disciplineでは「部分決済なし」「時間切れ: 30 bars」「トレイル: +1.5*ATR到達後にトレイル開始」。仕様書自身が「Exit Disciplineを優先」と明記しているためこれは上書きであり矛盾ではないが、実装時にどちらが優先されるかの明確化が必要。
- WARNING: 【通貨ペア不一致】EA識別情報で通貨ペアはUSDCADとされているが、根拠ソースはEURUSDとEURJPYのCOTデータを参照している。USDCADでのブレイクアウト戦略がEURUSD/EURJPYの市場構造データで正当化されている論理の飛躍がある。
- WARNING: 【キャプチャ意図とエントリーロジックの不一致】キャプチャ意図は「head=新規の頭を取る」だが、エントリーロジックは「confirmed-bar breakout trigger」(確証バー後のブレイクアウト)。Head captureは通常、ブレイクアウト発生と同時のエントリーを意味するが、「close[1] > highest[2]」は1本遅れの確証エントリーであり、headではなくmiddleに近い。これは取引ゼロを起こさないが、キャプチャ意図の実現度に影響する。
- WARNING: 【学習フィードバックとの整合性】過去の失敗として「勝率は61〜72%と高いにもかかわらずPF=0.0」が記録されている。これはRRが極端に悪い(小さな利確・大きな損切り)ことを示唆するが、本仕様書のExit DisciplineではTP=3.5ATR、SL=1.0ATRとRR=3.5:1で高RR設計になっている。過去の失敗パターンとは異なるが、ブレイクアウト戦略でTP=3.5*ATRが頻繁に到達するかは疑問。
- WARNING: 【ATR activity filterの二重定義】Entry logicに「ATR activity filter」とあり、Filtersセクションにも「Minimum ATR activity filter」がある。両者が同一条件なら冗長、異なる条件(一方が上限・他方が下限)なら矛盾の可能性。仕様書の明確化が必要。
Capture Intent Code Audit (auto-generated)¶
- FATAL:
time_exit_off_target— Time exit found at 48 bars; prescription wants ~30 (off by 18).
免責事項
本EAは自動生成された検証用コードです。実運用可否はご自身で検証してください。
関連用語¶
- 用語集 - バックテスト
- 用語集 - 勝率
- 用語集 - 逆張り
- 用語集 - レバレッジ
- 用語集 - pips
- 用語集 - SMA
- 用語集 - ATR
- 用語集 - ADX
- 用語集 - RSI
- 用語集 - スリッページ
- 用語集 - ボラティリティ
- 用語集 - スプレッド
- 用語集 - スキャルピング
- 用語集 - マルチタイムフレーム
- 用語集 - CopyBuffer
- 用語集 - _Point
- 用語集 - _Digits
- 用語集 - TimeCurrent