コンテンツにスキップ

Scalp_Grid_Trending_Volatility_Band

EA0267_Scalp_Grid_Trending_Volatility_Band_v1.0 / ⚠️ FAILED — 生成失敗・修正失敗・BT不合格

ワンライナー

Scalp Grid Trending Volatility Band

判定: ⚫ 散(散る(検証に乗らず))

自律生成EA。エントリー不成立 or 検証未成立で評価対象外。量産の中で淘汰された一体。

自律生成ライン(網羅的に量産)

基本情報

項目 項目
シンボル EURUSD エントリー種別 grid
時間足 M15 エグジット fixed_sl
方向 both 主要インジケータ

🧬 DNA 5軸

primary_style entry_mechanism regime_target position_logic core_indicator_family
scalp grid trending fixed_sl volatility_band

📊 バックテスト結果

判定: ❌ FAIL / 期間: 2026.04.08 〜 2026.05.23

PF 損益率 勝率 最大DD シャープ 取引数
0.00 +0.00% 0.0% 0.00% 0.00 0

📝 仕様書 / Specification

クリックで展開

EA識別情報

  • EA名: REF0820_10_Scalp_Grid_Trending_Volatility_Band_v1
  • 通貨ペア: GBPJPY
  • 時間足: M15
  • プライマリスタイル: scalp
  • エントリーメカニズム: grid
  • レジームターゲット: trending
  • ポジションロジック: fixed_sl
  • コアインジケーター系統: volatility_band
  • キャプチャ意図: middle (head=新規の頭を取る / middle=頭と尻尾を渡す / tail=枯れ際の反転を取る)

リサーチテーゼ

Scalp Grid Trending Volatility Band candidate generated from 3 research source(s). The strategy must preserve the source idea while keeping parameters broad enough to survive out-of-sample testing.

根拠ソース

  • Market Structure Meta
  • [TREND] [FILTER] キャリートレード (高金利通貨ロング/低金利通貨ショート) は低ボラ相場で有効、ボラ急拡大時は即損切り必須
  • [RISK] [TREND] AUD/JPY・NZD/JPYキャリーは株式市場リスクオン/オフと高相関、株価指数フィルター推奨
  • [FILTER] [TREND] 欧州市場オープン (16:00-18:00 JST) はトレンド発生確率が最も高い時間帯
  • [SEASONAL] [TREND] 12月はクリスマス休暇による流動性低下でスプレッド拡大、トレンド系は機能しにくい

トレード仕様

以下5点は必須です。いずれかが欠落・空欄の場合、この仕様書は不合格としてください。

1. Entry logic(エントリー条件)

BUY entry: during active session (London or NY open ±2h), close[1] > 20-bar SMA + InpATRMult*atr[1] (default InpATRMult=0.3) AND spread < InpMaxSpread (default=15 points). SELL entry: symmetric. ATR activity filter: atr[1] > InpMinATR * _Point (default InpMinATR=50) evaluated independently. Do not reuse ATRMult threshold as both signal and filter on the same bar.

2. Exit logic(決済条件)

Fixed TP: InpTPPoints points (default=150 for USDJPY H1-equivalent scaled). Fixed SL: InpSLPoints points (default=80). RR must be >= 1.5:1 — adjust TP if not. Session exit: MANDATORY close of all positions at session-end boundary ±30 min — scalp positions must NOT be held overnight regardless of P&L. No trailing on scalp — the fixed TP/SL ratio IS the edge.

2.5 キャプチャ意図に基づく Exit Discipline (拘束)

キャプチャ意図: MIDDLE — Middle capture: give up the head and the tail. The EA must not chase the extension; it locks in a measured portion and steps aside.

  • TP: ATR(14, bar[1]) × 1.5
  • SL: ATR(14, bar[1]) × 1.5
  • トレイル: トレイル禁止
  • 時間切れ: 15 bars
  • 部分決済: +1.0*ATR で 50% 部分決済 + 残りは建値SLへ

EA 実装ガードレール (絶対遵守):

  • NEVER add a trailing stop — middle capture forbids tail-chasing.
  • TP and SL are equal in ATR multiples (1.5 each); do NOT widen TP > SL.
  • Time exit at 15 bars is mandatory; do NOT extend in pursuit of further gains.
  • Partial close at +1.0*ATR with BE stop is the only allowed exit refinement.
  • After successful partial close, return/continue immediately; move BE stop only after refreshed position state on a later tick/new bar.

参考 MQL5 擬似コード (実装の出発点):

MQL
double atrAtEntry = iATR(_Symbol, _Period, 14)[1];
double tp = entryPrice + side * 1.5 * atrAtEntry;
double sl = entryPrice - side * 1.5 * atrAtEntry;
// NO trailing stop — middle capture explicitly refuses to chase the tail.
// Partial close: close 50% of position at +1.0 * atrAtEntry favorable excursion.
if (favorableExcursion >= 1.0 * atrAtEntry && !partialClosed) {
    if (ClosePartial(0.5)) {
        partialClosed = true;
        pendingBreakEven = true;
        return; // wait for refreshed position state before stop modification
    }
}
if (pendingBreakEven && refreshedPositionState) {
    ModifyStop(entryPrice);
}
// Time exit: 15 bars from entry, regardless of P/L.
if (barsHeld >= 15) { ClosePosition("middle_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(レジームフィルター)

trending 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 sample count filter before accepting optimization
  • 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

  • レーン: EXPERIMENTAL
  • 検証済みprimitive:
  • position:fixed_sl (fixed-risk SL/TP with optional time exit)
  • experimental primitive:
  • entry:grid
  • grid recovery
  • 判定理由:
  • entry_mechanism='grid' is not in the verified entry primitive set
  • keyword 'grid' requires experimental isolation
  • 実装方針: 発想は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本が反転方向」 またはピンバー・エンゴルフィングパターン等のローソク足パターン確認に 変更してシグナル品質を向上させる。

  • [DIVERSITY-EXPLORE] Targeted an unexplored DNA combination (headroom-directed).

実装ガードレール

  • [PRIMITIVE-LANE: EXPERIMENTAL] This candidate needs an isolated experimental primitive; do not hide it inside normal order/position code.
  • [PRIMITIVE-LANE: EXPERIMENTAL] Experimental items: entry:grid; grid recovery.
  • [PRIMITIVE-LANE: EXPERIMENTAL] Add EXPERIMENTAL_PRIMITIVE, RISK_CAP, KILL_SWITCH, and FALLBACK comments near the helper that implements the new mechanism.
  • [PRIMITIVE-LANE: EXPERIMENTAL] Standard CTrade entry, lot sizing, SL/TP normalization, position identity, daily loss guard, and cooldown handling remain conservative.
  • [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)
  • [TREND] [FILTER] スプレッドリトライパターン(予約エントリーのスプレッド不良時リトライ): 予約フラグ方式でスプレッド不良時に即破棄せず、MAX_SPREAD_RETRY回まで次バーで再試行する設計。リトライカウンターは予約フラグと同時にリセットし、クールダウンや金曜制限等の他条件で予約破棄する際もリセットを忘れないこと。リトライの粒度(ティック単位 vs バー単位)を設計時に明確にすべき。 (.clinerules)
  • [RISK] DEAL_POSITION_IDによるトレード集計: 部分決済を含むポジションでは同一ポジション由来の複数DEALが発生する。連敗カウント等のトレード単位集計にはDEAL_COMMENTではなくDEAL_POSITION_IDを使用し、カウント済みIDを配列で管理することで重複計上を防ぐ。 (.clinerules)
  • [RISK] 【OnTradeTransactionによる決済検出パターン】ポジションクローズの検出にはOnTradeTransaction(trans.type == TRADE_TRANSACTION_DEAL_ADD && DEAL_ENTRY_OUT)を使用し、DEAL_POSITION_IDでエントリー管理配列と照合する設計が堅牢。HistorySelectによるポーリング方式より確実でリアルタイム性が高い。 (.clinerules)
  • [STATS] [META] スリッページ許容値(SetDeviationInPoints)はinputパラメータ化することで、バックテストや運用時の調整が容易になる (.clinerules)
  • [TREND] [BREAKOUT] [META] [A2] closes[], highs[], lows[]にはArraySetAsSeries(true)が設定されているが、adxValBufferにはArraySetAsSeries設定がない。また、TRBuffer/ATRBuffer/SMABufferはArrayResizeで固定長確保後にArraySetAsSeriesを呼んでいない(ただしこれらは実際にはCopyBufferで使用されていないため実害は限定的)。 (.clinerules)

ストーリーパッケージ

  • フック: AIが研究メモから自律発掘した「Scalp Grid Trending Volatility Band」をEA化して検証。
  • ブログアングル: 研究アイデアは本当にMT5で再現できるのか、OOSで崩れるかまで公開する。
  • 失敗アングル: 失敗時は NO_TRADE / LOW_SAMPLE / OVERFIT / HIGH_DD に分類して次の研究候補へ進む。

Spec Validation Warnings (auto-generated)

  • CONTRADICTION: Session filter と Entry logic の時間的矛盾。Entry logic では『during active session (London or NY open ±2h)』を要件としながら、Exit logic では『session-end boundary ±30 min に全ポジション強制決済』と記載。M15 スキャルプで London open (16:00 JST) ±2h = 14:00-18:00 JST のウィンドウ内でエントリーし、session-end で即決済する場合、実際のポジション保有時間が極めて短くなる。特に NY open (21:00 JST) ±2h = 19:00-23:00 JST のウィンドウでエントリーした場合、session-end (翌 06:00 JST) までの保有時間が長くなり、『scalp positions must NOT be held overnight』という要件と矛盾する。仕様書が『session-end boundary ±30 min』を明記しているが、どのセッションの終了を指すのか曖昧であり、実装時にエントリーセッションと決済セッションが異なる場合の処理が不明確。
  • Fix: 『session-end boundary』を明確に定義すること。(1) London session end = 23:00 JST、NY session end = 06:00 JST など具体的な時刻を記載、(2) エントリーセッションと決済セッションの対応関係を明記(例:『London open でエントリーした場合は London session end で決済』)、(3) M15 スキャルプの保有時間目安を明記(例:『最大保有時間 4 時間以内』)。
  • CONTRADICTION: Exit Discipline (section 2.5) と Entry logic の時間軸矛盾。Exit Discipline では『時間切れ: 15 bars』と明記(M15 なら 15*15分 = 225分 ≈ 3.75時間)。一方、Entry logic では『during active session (London or NY open ±2h)』でエントリー。London open (16:00 JST) でエントリーした場合、15 bars 後は 19:15 JST となり、まだ London session 内。しかし NY open (21:00 JST) でエントリーした場合、15 bars 後は 00:15 JST(翌日)となり、『scalp positions must NOT be held overnight』に違反する。仕様書が『時間切れ 15 bars は mandatory』と『overnight 禁止』の両立を要求しているが、NY open エントリーでは両立不可能。
  • Fix: 以下のいずれかで解決: (1) Entry session を London open のみに限定、(2) NY open エントリーの場合は時間切れを短縮(例:8 bars = 120分)、(3) 『overnight 禁止』を『session-end で強制決済』に統一し、15 bars 時間切れは session-end より前に発火する場合のみ適用。
  • CONTRADICTION: Regime filter の定義が不明確で、Entry logic との独立性が確認できない。仕様書の『Regime filter』セクションに『trending regime confirmation using SAME timeframe indicators only』と記載されているが、具体的な計算式が記載されていない。一方、Entry logic では『close[1] > 20-bar SMA + InpATRMult*atr[1]』という上昇シグナルを使用。もし regime filter が『close[1] > 20-bar SMA』(同じ SMA)で trending up を判定する場合、entry signal と regime filter が同一インジケーターの同一バーインデックスから派生し、実質的に『close[1] > SMA AND close[1] > SMA』という冗長条件になる。逆に regime filter が『close[1] < 20-bar SMA』で trending down を判定する場合、『close[1] > SMA AND close[1] < SMA』という矛盾になり取引ゼロになる。
  • Fix: Regime filter の具体的な計算式を明記すること。例:『trending regime = slowMA[1] > slowMA[20] AND ADX[1] > 25』など、entry signal の SMA と異なる期間または異なるインジケーターを使用。または『trending regime = close[1] > SMA[50] AND SMA[20] > SMA[50]』のように、entry signal の SMA[20] と異なる SMA[50] を使用して独立性を確保。
  • WARNING: Entry signal と ATR activity filter が同一バーで矛盾する可能性。Entry logic では『close[1] > 20-bar SMA + InpATRMultatr[1]』でATRを信号に組み込みながら、同時に『atr[1] > InpMinATR * _Point』を独立フィルターとして要求。ATRが低い状態(atr[1] < InpMinATR)では、SMA + 0.3atr[1] の閾値が低くなり、close[1] がこれを超えやすくなる。逆にATRが高い状態では閾値が高くなり超えにくくなる。つまり『ATR活性が高い時のみエントリー』という要件と『ATRが低い時に信号が出やすい』という信号特性が逆向きになり、実際のエントリー機会が極端に限定される。特にスキャルプ戦略で M15 という短時間足では、この矛盾により取引が著しく減少する可能性が高い。
  • Fix: ATR活性フィルターを信号計算と独立させるため、(1) ATR活性判定は bar[2] 以前の過去ATRの平均値と比較する、または (2) 信号のATR倍数(InpATRMult)と活性閾値(InpMinATR)を異なるATR期間で計算する(例:信号は atr[1]、活性は atr[5:20] の平均)、または (3) 活性フィルターを『atr[1] > atr[20] の平均値』など相対的な高さで定義する。
  • WARNING: Source Evidence の実装フィルターへのマッピングが不完全。根拠ソースに『欧州市場オープン (16:00-18:00 JST) はトレンド発生確率が最も高い時間帯』と『12月はクリスマス休暇による流動性低下でスプレッド拡大、トレンド系は機能しにくい』が記載されているが、Filters セクションに『12月除外フィルター』『16:00-18:00 JST 優先フィルター』などの具体的な実装が記載されていない。Entry logic では『during active session (London or NY open ±2h)』と記載されているが、『16:00-18:00 JST 優先』という季節性フィルターが反映されていない。
  • WARNING: Grid entry mechanism が EXPERIMENTAL primitive に分類されているが、Entry logic に『grid』の具体的な定義がない。『entry:grid』とは何か(複数価格水準でのエントリー、ナンピン、段階的ポジション構築など)が不明確。仕様書の『Primitive Execution Lane』では『entry_mechanism='grid' is not in the verified entry primitive set』と警告しているが、実装方針が『entry/regime/filterに閉じ込め』と曖昧。Grid の具体的なロジック(何本のグリッド、間隔、最大ポジション数との関係)を明記すること。
  • WARNING: 学習フィードバック セクションで『SL=TP=1.5×ATRの対称設定にもかかわらず実際の損失が利益の3倍超になっている』という過去失敗が記載されているが、本仕様書の Exit Discipline でも『TP: ATR(14, bar[1]) × 1.5、SL: ATR(14, bar[1]) × 1.5』と同じ対称設定を採用している。過去失敗の根本原因『セッション跨ぎの方向性リスク』が解決されていない。『scalp positions must NOT be held overnight』という要件が追加されているが、NY open エントリーで 15 bars 時間切れの場合、実際に overnight を避けられるかは session-end の定義に依存。
  • WARNING: Partial close ロジックの実装が曖昧。Exit Discipline では『+1.0ATR で 50% 部分決済 + 残りは建値SLへ』と記載されているが、『+1.0ATR』が何を基準にした excursion なのか不明確。Entry price からの利益 1.0*ATR か、それとも entry 時の ATR 値の 1.0 倍か。また『残りは建値SLへ』とは、残り 50% のポジションの SL を entry price に移動することを意味するのか、それとも entry price で決済することを意味するのか。MQL5 擬似コードでは『ModifyStop(entryPrice)』と記載されているが、これは SL を entry price に設定することを意味し、その後の損失リスクが 0 になる。この場合、残り 50% が entry price で決済されるまでの間、TP に到達する可能性がある。TP と BE stop の相互作用を明確にすること。
  • WARNING: RR (Risk/Reward) 比の検証が不明確。Exit logic では『RR must be >= 1.5:1 — adjust TP if not』と記載されているが、TP と SL が『ATR(14, bar[1]) × 1.5』で対称設定の場合、RR = 1.5 / 1.5 = 1.0:1 となり、1.5:1 要件を満たさない。仕様書が『adjust TP if not』と記載しているが、どのように調整するのか(TP を拡大するのか、SL を縮小するのか)が不明確。また、部分決済で 50% を +1.0*ATR で決済した場合、残り 50% の RR が変わる。全体的な RR 計算ロジックを明確にすること。
  • WARNING: Spread filter の具体的な値が曖昧。Entry logic では『spread < InpMaxSpread (default=15 points)』と記載されているが、GBPJPY の通常スプレッドが 1-3 pips(0.01-0.03 points)であるのに対し、15 points は異常に大きい。これは『15 pips』の誤記の可能性がある。また、根拠ソースに『12月はクリスマス休暇による流動性低下でスプレッド拡大』と記載されているが、Entry logic に『12月は InpMaxSpread を拡大する』などの条件付き調整が記載されていない。
  • WARNING: ATR 期間の不統一。Entry logic では『atr[1]』(デフォルト期間不明)を使用し、Exit Discipline では『ATR(14, bar[1])』と明記。同じ ATR インジケーターでも期間が異なる可能性がある。Entry signal と Exit TP/SL の ATR 期間を統一すること。
  • WARNING: キャプチャ意図『MIDDLE』の定義が曖昧。仕様書では『Middle capture: give up the head and the tail. The EA must not chase the extension; it locks in a measured portion and steps aside』と記載されているが、『measured portion』が何を指すのか不明確。部分決済で 50% を +1.0*ATR で決済し、残り 50% を BE stop で保有する場合、『tail を渡す』という意図が実現されているのか不明確。
  • WARNING: Walk-forward 検証の基準が厳しすぎる可能性。バックテスト合格基準では『OOS/IS PF ratio is below 0.70 or if OOS PF min is below 1.10』と記載されているが、M15 スキャルプで 24 ヶ月のデータを 4:2 walk-forward で検証する場合、OOS window が 2 ヶ月ごとになり、サンプル数が少なくなる可能性がある。『OOS trade count is below 15 trades per held-out window (minimum 30 total)』という要件も、スキャルプ戦略では達成困難な可能性がある。

免責事項

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

EA1000 一覧に戻る


関連用語

— SPONSORED —