Trend_Follow_Grid_Ranging_Any¶
EA0395_Trend_Follow_Grid_Ranging_Any_v1.0 / ⚠️ FAILED — 生成失敗・修正失敗・BT不合格
ワンライナー
Trend Follow Grid Ranging Any
判定: 🟡 C(ひとクセあり)
自律生成EA。優位性は限定的(PF0.00)。データとしては残すが運用向きではない。
自律生成ライン(網羅的に量産)
基本情報¶
| 項目 | 値 | 項目 | 値 | |
|---|---|---|---|---|
| シンボル | GBPUSD | エントリー種別 | grid | |
| 時間足 | M15 | エグジット | fixed_sl | |
| 方向 | both | 主要インジケータ | — |
🧬 DNA 5軸¶
| primary_style | entry_mechanism | regime_target | position_logic | core_indicator_family |
|---|---|---|---|---|
trend_follow | grid | ranging | fixed_sl | any |
📊 バックテスト結果¶
判定: ❌ FAIL / 期間: 2026.05.23 〜 2026.07.13
| PF | 損益率 | 勝率 | 最大DD | シャープ | 取引数 |
|---|---|---|---|---|---|
| 0.00 | +0.73% | 100.0% | 0.29% | 0.52 | 4 |
📝 仕様書 / Specification¶
クリックで展開
リサーチEA仕様書: Trend Follow Grid Ranging Any¶
EA識別情報¶
- EA名: REF1011_08_Trend_Follow_Grid_Ranging_Any_v1
- 通貨ペア: GBPUSD
- 時間足: M15
- プライマリスタイル: trend_follow
- エントリーメカニズム: grid
- レジームターゲット: ranging
- ポジションロジック: fixed_sl
- コアインジケーター系統: any
- キャプチャ意図: middle (head=新規の頭を取る / middle=頭と尻尾を渡す / tail=枯れ際の反転を取る)
リサーチテーゼ¶
Trend Follow Grid Ranging Any 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: on confirmed bar[1], apply primary signal from the source hypothesis. Regime filter must use a variable computed from a DIFFERENT indicator or a DIFFERENT lookback period than the entry signal — never define regime as the inverse of the entry condition on the same bar. SELL entry: symmetric and opposite to BUY.
2. Exit logic(決済条件)¶
Capture intent: MIDDLE. TP = 1.5ATR(14) at entry; SL = 1.5ATR(14) at entry; trailing stop is FORBIDDEN; time exit at 15 bars held; partial close 50% at +1.0*ATR + move stop to break-even. Rationale: 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. Numeric exit rules above are binding (identical to section 2.5). Mechanism-specific structural exits (in addition, whichever fires first): Regime exit: close immediately if the entry regime condition no longer holds on bar[1].
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 擬似コード (実装の出発点):
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 (every grid level uses the same fixed lot), bounded grid: at most 2 same-direction entries per symbol including the first, next level only after an adverse move of at least 1.0*ATR(14) at first entry, every level carries its own stop-loss, basket kill switch when floating loss exceeds 2% of day-start balance, and hard daily loss guard.
4. Regime filter(レジームフィルター)¶
ranging 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活性閾値、セッションウィンドウ、シグナル確証バー数。
- 緩和不可: 損切り規律、同方向最大2段の有界グリッド(固定ロット・マーチン禁止)、過去の固定価格水準の不使用。
- 明示的に正当化される場合のみ特殊アプローチを許可: ブローカー非対称性の活用、出金ありマーチンゲール戦略、逆張りセンチメントフェード、地政学イベント裁定、構造的レイテンシエッジ、量子風最適化、群知能ポジションサイジング、ゲーム理論的マーケットメイキング。
- 特殊アプローチを使用する場合は以下を必須記載: (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への変更を検討する。
- Avoid past failure: 全WFウィンドウでIS期間のPFが0.0〜0.4程度と壊滅的に低く、逆にOOS期間の方が 安定して高いという「IS/OOS逆転」現象が3イテレーション全てで再現している。 これは偶然の過学習ではなく、ロジック自体が特定の相場レジーム(IS期間に 含まれる強トレンド相場)で構造的に機能不全に陥ることを示す。ダイバージェンス フェードは「トレンドの息切れ」を捉える狙いだが、ADX>20という緩い下限フィルター だけでは真のトレンド継続相場(ADXが高止まりしたまま押し目なく伸びる相場)を 排除できず、そこでエントリーすると価格がSMA50に戻る前にレジームがさらに 加速し、固定SL(0.8ATR)に一様に刈られる。ブレークイーブン保護や動的TPの ゲート調整(Dyn TP最小利益、SL/TP比率)はexitパラメータの微調整に過ぎず、 「そもそもどの相場でエントリーすべきでないか」というentry側のレジーム識別 能力が向上していないため、パラメータをいじってもPFはノイズレベル(±0.1) でしか動かず、PIVOT_TRIGGERED(3回試行でPF改善<0.05)に至った。トレード数も 28件/ウィンドウと少なく、統計的検出力も低い。 -> Pivot hint: (1) エントリー側のレジームフィルターを抜本的に強化する:ADX単純下限だけでなく 「ADXが過去N本でピークアウトし始めている(トレンド減速の兆候)」を条件に追加、 またはSMA50スロープの角度・ATR比を用いてトレンドの「加速中」と「減速中」を 区別する。加速中のトレンドでのフェードを禁止する。 (2) 時間足をH4やD1に上げ、ダイバージェンスの信頼性が高い、よりノイズの少ない スイング構造で判定する(H1は騙しダイバージェンスが多発しやすい)。 (3) 逆張り(フェード)ではなく、ダイバージェンス消滅後のトレンド再加速を狙う 順張り転換に軸を変える、もしくは明確なレンジ相場(ADX<20かつBB幅収縮)に 限定してフェードを適用し、強トレンド相場では完全に非稼働とする「レジーム スイッチ型」に再設計する。 (4) IS期間で壊滅した具体的な日付レンジを特定し、その期間のトレンド強度・ ボラティリティレジームを分析した上で、同種の相場を検出するフィルター (例:ATR拡大率、連続同方向バー数)を追加する。
- Avoid past failure: 総トレード数が13〜18件と極端に少なく、統計的に安定した優位性を検証できるサンプルサイズに達していない。 Walk-Forward検証ではIS期間のPFが0.31〜0.91と一貫して1.0を下回る一方でOOS期間だけPFが1.3〜7.1と 跳ね上がる「IS/OOS逆転(inversion)」が全attemptで検出されており、これは真の優位性ではなく、 たまたまOOS側に有利なトレンド相場が数回含まれていたことによる偶然の産物である可能性が高い。 ブートストラップ検証でもPF信頼区間の下限が0.997〜1.08とほぼ1.0付近にへばりつき、 「優位性がゼロでも説明がつく」水準。SMA傾きフィルターや押し目バンドの絞り込みを重ねるほど トレード数がさらに減少し(18→13件)、フィルター強化が逆にサンプルを痩せさせてPFのブレを 拡大させる悪循環に陥っている。根本原因は、H4×EURJPY×このレジーム定義の組み合わせでは そもそも「本物の押し目」がまれにしか発生せず、エントリー条件を満たす母集団自体が薄いこと。 レンジ・逆行相場でのダマシ押し目(フィルター強化前)による損失クラスターに加え、 フィルター強化後も残る少数サンプルでの結果の不安定性(IS期間の壊滅的PF)が、 ロジックが実運用に耐える再現性を持たないことを示している。 -> Pivot hint: (1) 時間足を下げてトレード数を確保する(H4→H1またはM30に変更し、同じ押し目ロジックで 月間トレード数を最低50件以上に増やしてWF検証の統計的信頼性を担保する)。 (2) レジーム判定をSMA傾きの単純差分ではなく、ADXやより長期のMA配列(例: EMA20/EMA100の クロス状態)等、ノイズに強い指標に置き換えて「本物のトレンド相場」の判定精度を上げる。 (3) 通貨ペアをボラティリティ特性の異なるものに変える、あるいは複数ペア(EURJPY+GBPJPY等) でシグナルを合算しサンプル数を増やす。 (4) 押し目バンドやSMA傾きの閾値によるフィルターをこれ以上厳格化する方向は逆効果(サンプル枯渇 →過学習的な偶然合格を招く)なので、次はフィルターを"緩めて"母集団を増やし、 エグジット側(部分利確比率、BE移動タイミング、時間エグジット本数)の調整でPFを改善する方向に 軸足を移すべき。
- [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が研究メモから自律発掘した「Trend Follow Grid Ranging Any」をEA化して検証。
- ブログアングル: 研究アイデアは本当にMT5で再現できるのか、OOSで崩れるかまで公開する。
- 失敗アングル: 失敗時は NO_TRADE / LOW_SAMPLE / OVERFIT / HIGH_DD に分類して次の研究候補へ進む。
Spec Validation Warnings (auto-generated)¶
- CONTRADICTION: プライマリスタイル 'trend_follow' とレジームターゲット 'ranging' が矛盾している
- Fix: トレンドフォロー戦略がもみ合い相場で機能するのは、もみ合い突破後のトレンド発生時のみ。しかしレジームフィルターが 'ranging regime confirmation'(もみ合い確認中のみエントリー)だと、トレンド発生後はレジーム条件を満たさなくなる。'ranging' レジーム中に 'trend_follow' エントリーは論理的に矛盾。プライマリスタイルを 'mean_reversion' に変更するか、レジームターゲットを 'trending' に変更するか、エントリーロジックを 'breakout from ranging'(もみ合い突破)に明確に定義すること
- CONTRADICTION: グリッドエントリー(grid)と 'ranging' レジームターゲットの組み合わせが、固定SL/TPと組み合わさって取引ゼロまたは即損切りを招く
- Fix: もみ合い相場でグリッドエントリー(ナンピン風)を行い、かつTP=SL=1.5ATRの対称設定だと、ランダムウォーク的な価格動向では期待値がゼロ以下になる。さらに 'ranging' レジーム中はトレンドがないため、1.5ATRのTPに到達する前に反転してSLに到達する確率が高い。グリッドの意義(平均取得単価の改善)が、固定SL(各レベル独自SL)によって相殺される。グリッドを活かすならSLを共有(バスケットSL)にするか、レジームを 'trending' に変更してトレンド継続中の複数エントリーを意味づけること
- WARNING: レジームフィルター 'ranging regime confirmation' と Entry logic の 'confirmed bar[1], apply primary signal from the source hypothesis' が矛盾する可能性
- Fix: トレンドフォローのソース仮説(キャリートレード、欧州市場オープンのトレンド発生)が 'ranging' レジーム中に発火することはほぼない。ソース仮説の '[FILTER] 欧州市場オープン (16:00-18:00 JST) はトレンド発生確率が最も高い' は 'ranging' レジームとは両立しにくい。レジームフィルターを 'trending regime' に変更するか、エントリーシグナルを 'range breakout'(もみ合い突破)に特化させること
- WARNING: Source Evidence の '[SEASONAL] 12月はクリスマス休暇による流動性低下でスプレッド拡大、トレンド系は機能しにくい' が Filters セクションに具体的な実装(12月停止フィルター、スプレッド閾値フィルター)として反映されていない
- WARNING: Source Evidence の '[FILTER] 欧州市場オープン (16:00-18:00 JST) はトレンド発生確率が最も高い時間帯' が Filters セクションに時間帯フィルターとして反映されていない
- WARNING: Source Evidence の '[RISK] AUD/JPY・NZD/JPYキャリーは株式市場リスクオン/オフと高相関、株価指数フィルター推奨' が、GBPUSDのEAに適用可能か不明確。GBPUSDはキャリートレード対象外であり、ソース仮説と通貨ペアの整合性に疑問
- WARNING: Entry logic の 'apply primary signal from the source hypothesis' が具体的に定義されていない。ソース仮説のどの要素をエントリーシグナルとするか不明(キャリーの金利差?欧州市場オープンの時間?トレンド発生の指標?)
- WARNING: Regime filter の 'ranging regime confirmation using SAME timeframe indicators only' が具体的に定義されていない。どの指標で 'ranging' を判定するか不明
- WARNING: Exit logic の 'Regime exit: close immediately if the entry regime condition no longer holds on bar[1]' が、'ranging' レジーム中のエントリー後にトレンドが発生した場合に即座に決済を強制する。これは 'trend_follow' の利益獲得を妨げる可能性がある
- WARNING: Grid recovery が 'experimental primitive' に分類されているが、仕様書に具体的なグリッド回復ロジック(2段目のエントリー条件、バスケット管理など)が記載されていない
Capture Intent Code Audit (auto-generated)¶
- FATAL:
trailing_stop_forbidden— capture_intent='middle' forbids trailing stop, but 1 matching line(s) were found (first at line 761). - snippet:
done = trade.PositionModify(ticket, newSL, tpCur); - FATAL:
time_exit_missing— No bar-count time-exit comparison found. Capture-intent prescription requires time exit at ~15 bars.
免責事項
本EAは自動生成された検証用コードです。実運用可否はご自身で検証してください。
関連用語¶
- 用語集 - バックテスト
- 用語集 - 勝率
- 用語集 - スプレッド
- 用語集 - ATR
- 用語集 - RSI
- 用語集 - スリッページ
- 用語集 - SMA
- 用語集 - pips
- 用語集 - ボラティリティ
- 用語集 - ADX
- 用語集 - 逆張り
- 用語集 - スキャルピング
- 用語集 - EMA
- 用語集 - CTrade
- 用語集 - マルチタイムフレーム
- 用語集 - CopyBuffer
- 用語集 - ArraySetAsSeries
- 用語集 - ArrayResize
- 用語集 - ランダムウォーク