167 lines
8.3 KiB
Markdown
167 lines
8.3 KiB
Markdown
|
|
# EXP-003 — SCANNER ACTIVATION & FUSION VALIDATION
|
||
|
|
|
||
|
|
**Version:** 1.0.0 · **Status:** DRAFT (menunggu persetujuan eksekusi Phase 2) · **Date:** 2026-08-13
|
||
|
|
**Parent:** `PROJECT_REPORT.md` §6 (P0) & §7 (handoff) · **Baseline produksi:** `79275b1` (v2.8.0)
|
||
|
|
**Sesi inisiator:** CHIRON — disusun bersama user (kepemilikan eksperimen: user + MetaTrader Assistant)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 0. KONTEKS & MANDAT
|
||
|
|
|
||
|
|
Proyek mencapai *technical completion* (17/17 workstream, build 0E/0W, LLM LIVE, fuzzy engine
|
||
|
|
unit-tested, backtest PASS) — tetapi **bukan *strategy validation***. Backtest #1/#2/#3 hanya
|
||
|
|
membuktikan EA dapat berjalan, bukan bahwa strategi punya edge. Blocker utama terverifikasi:
|
||
|
|
**scanner menghasilkan 0 setup dalam 6 bulan** (XAUUSD M15) → `CFuzzyFusion` belum pernah
|
||
|
|
mendapat kesempatan diuji terhadap outcome.
|
||
|
|
|
||
|
|
**Mandat eksperimen ini:** menjawab tiga pertanyaan berurutan secara terkontrol:
|
||
|
|
|
||
|
|
- **Q1 — Signal density:** berapa banyak kandidat yang dihasilkan scanner saat constraint
|
||
|
|
dikurangi satu-dimensi secara terkontrol?
|
||
|
|
- **Q2 — Fusion discrimination:** apakah setup dengan `fused score` tinggi punya outcome lebih
|
||
|
|
baik daripada setup dengan score rendah?
|
||
|
|
- **Q3 — Edge setelah biaya:** apakah kombinasi scanner+fusion punya *net positive expectancy*
|
||
|
|
setelah spread/komisi/slippage?
|
||
|
|
|
||
|
|
Tujuan BUKAN mencari parameter terbaik. Tujuan adalah **menguji hipotesis** dan membiarkan data
|
||
|
|
menentukan apakah setup memiliki edge.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 1. HIPOTESIS
|
||
|
|
|
||
|
|
| ID | Hipotesis | Diuji oleh |
|
||
|
|
|----|-----------|-----------|
|
||
|
|
| H1 | Constraint scanner saat ini terlalu ketat → density < 1 setup/bulan; pelonggaran satu-dimensi meningkatkan density tanpa asumsi a priori tentang kualitas | Phase 3 (arms B1–B4) |
|
||
|
|
| H2 | Fused score berdiskriminasi: expectancy(fused ≥ thr) > expectancy(fused < thr) | Phase 4 |
|
||
|
|
| H3 | Net expectancy kombinasi scanner+fusion > 0 setelah biaya transaksi XAUUSD | Phase 5 |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 2. PRINSIP / GUARDRAILS
|
||
|
|
|
||
|
|
1. **Scanner diubah HANYA untuk menguji hipotesis density** — bukan untuk mengejar profit.
|
||
|
|
2. **Satu dimensi per arm** — C0 baseline; B1–B4 masing-masing mengubah satu dimensi (kombinasi B3 adalah pengecualian terdefinisi).
|
||
|
|
3. **Threshold 55 = EXPERIMENTAL, bukan optimal** — tidak punya makna trading sampai evidence menunjukkan sebaliknya.
|
||
|
|
4. **Bobot statis dulu, adaptif kemudian** — hindari confounding dua inovasi sekaligus (Phase 5 → 6).
|
||
|
|
5. **Tanpa penambahan fitur** (agen ke-6, multi-symbol, ZMQ, native LLM, ensemble, fuzzy optimization) **sebelum Q3 terjawab**.
|
||
|
|
6. **Tidak ada keputusan tanpa data** — semua hasil dicatat ke *evidence manifest*.
|
||
|
|
7. **Tanpa optimasi iteratif untuk profit** — parameter yang diubah adalah *treatment*, bukan hasil optimasi.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 3. ARMS EKSPERIMEN
|
||
|
|
|
||
|
|
Semua arm berjalan pada XAUUSD M15, window 2026-02-01 → 2026-07-31 (6 bulan, konsisten dgn SMOKE).
|
||
|
|
|
||
|
|
| Arm | Perubahan (satu dimensi) | Dimensi yang diuji | Input (default = perilaku saat ini) |
|
||
|
|
|-----|--------------------------|--------------------|--------------------------------------|
|
||
|
|
| **C0** | v2.8.0 sekarang | Baseline | semua default |
|
||
|
|
| **B1** | Proximity 0,25 → 0,50 ATR | Bottleneck proximity | `InpProximityMult=0.50` |
|
||
|
|
| **B2** | Depth 200 → 400 bar | Bottleneck historical search | `InpScanDepth=400` |
|
||
|
|
| **B3** | Proximity 0,50 + depth 400 | Kombinasi | kedua input di atas |
|
||
|
|
| **B4** | Relax unmitigated + expansion 1.2 → 1.0 | Constraint struktural | `InpExpansionMin=1.0`, `InpAllowMitigatedOB=true` |
|
||
|
|
|
||
|
|
Semua arm dijalankan dengan **`InpEnableTrading=false`** → *diagnostic mode*: scanner + fusion
|
||
|
|
berjalan penuh, `Setup_Detected` dicatat **tanpa eksekusi** (tidak ada posisi, tidak ada risiko).
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 4. INSTRUMENTASI (PRASYARAT — PHASE 2)
|
||
|
|
|
||
|
|
Setiap kandidat setup (dan setiap keputusan fusion) dicatat minimal:
|
||
|
|
|
||
|
|
```
|
||
|
|
timestamp, symbol, timeframe, direction,
|
||
|
|
entry, SL, TP,
|
||
|
|
scanner_conditions: {depth, proximity_mult, expansion_min, mitigated_allowed, ob_time_age},
|
||
|
|
structure_score, trend_score, momentum_score, volatility_score, ai_score,
|
||
|
|
agent_weights[5], fused_score, threshold, decision(PASS/SKIP), skip_reason
|
||
|
|
```
|
||
|
|
|
||
|
|
- **Media:** append CSV `MQL5\Files\exp003_setups.csv` + log journal (FUSION line tetap ada).
|
||
|
|
- **Mode:** aktif otomatis saat `InpEnableTrading=false` (log-only) dan saat `true` (full).
|
||
|
|
- **Alasan prasyarat:** tanpa decomposition, tidak mungkin tahu mengapa fusion menerima/menolak
|
||
|
|
setup — *instrumentation dinaikkan dari "peluang P2/P3" menjadi syarat eksperimen ini*.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 5. METRIK & EVIDENCE MANIFEST
|
||
|
|
|
||
|
|
### 5.1 Density & distribusi (Phase 3 — per arm)
|
||
|
|
- `setup_count` · `setup_frequency` (setup/bulan)
|
||
|
|
- Distribusi long/short
|
||
|
|
- Distribusi `fused_score` (min/p25/median/p75/max + histogram 5 bin)
|
||
|
|
- Distribusi skor tiap agen
|
||
|
|
- `threshold_pass_rate` (fused ≥ 55)
|
||
|
|
|
||
|
|
### 5.2 Outcome (Phase 4–6 — per arm, setelah eksekusi diizinkan)
|
||
|
|
- R-multiple (per trade + distribusi) · win rate · expectancy (gross)
|
||
|
|
- Max drawdown · profit factor
|
||
|
|
- **Net expectancy** setelah spread + komisi + slippage realistis (XAUUSD: spread ±35 pts,
|
||
|
|
komisi broker, slippage ekspektasi) — lihat Phase 5.
|
||
|
|
|
||
|
|
### 5.3 Format manifest
|
||
|
|
Ringkasan per arm dalam satu tabel markdown + CSV mentah di `MQL5\Files\exp003_*`.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 6. DECISION GATES (KUANTITATIF)
|
||
|
|
|
||
|
|
| Gate | Kriteria | Tindakan |
|
||
|
|
|------|----------|----------|
|
||
|
|
| **A — Density** | `setup_frequency ≥ 2/bulan` pada minimal satu arm B1–B4 | Lanjut Gate B. Jika semua arm < 2/bulan → problem *signal generation* lebih dalam (definisi OB, regime pasar) → evaluasi hipotesis baru, BUKAN menambah fitur |
|
||
|
|
| **B — Discrimination** | `expectancy(fused≥55) > expectancy(fused<55)` dengan selisih bermakna (effect size, bukan noise) | Lanjut Gate C. Jika tidak ada diskriminasi → fusion TIDAK punya predictive value → hentikan pengembangan fusion, evaluasi raw scanner |
|
||
|
|
| **C — Edge setelah biaya** | `net expectancy > 0` + `max DD < 25%` pada sample | **GO live demo** (operational validation). Jika ≤ 0 → edge belum terbukti → JANGAN live; iterasi hipotesis |
|
||
|
|
| **D — Adaptive vs static** | `adaptive ≥ static` out-of-sample | Pertahankan adaptasi. Jika tidak → kunci bobot statis |
|
||
|
|
|
||
|
|
Catatan statistik: sample kecil (n setup) → fokus ke *directionality + effect size*, bukan p-value ketat.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 7. FASE EKSEKUSI
|
||
|
|
|
||
|
|
| Phase | Aktivitas | Output | Gate |
|
||
|
|
|-------|-----------|--------|------|
|
||
|
|
| **1** | Preserve v2.8.0 (`79275b1`) sebagai baseline | Baseline tercatat | — |
|
||
|
|
| **2** | Instrumentasi + input arms (default = perilaku saat ini) | Build 0E/0W; CSV setup logger | — |
|
||
|
|
| **3** | Scanner Activation: jalankan C0..B4, `InpEnableTrading=false` | Density + distribusi per arm | **Gate A** |
|
||
|
|
| **4** | Fusion Validation: izinkan eksekusi per arm; bandingkan raw vs fused≥thr vs fused<thr | Discrimination evidence | **Gate B** |
|
||
|
|
| **5** | Cost-adjusted: spread/komisi/slippage dalam expectancy | Net expectancy | **Gate C** |
|
||
|
|
| **6** | Adaptive Weight: aktifkan adaptasi online; static vs adaptive (out-of-sample split) | Perbandingan | **Gate D** |
|
||
|
|
| **7** | Demo (operational validation, BUKAN discovery) | Siklus hidup stabil + evidence historis | go/no-go |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 8. OUTPUT YANG DIHARAPKAN
|
||
|
|
|
||
|
|
1. Evidence manifest per arm (CSV + ringkasan markdown).
|
||
|
|
2. Keputusan terverifikasi: fusion punya/tidak punya predictive value; edge ada/tidak setelah biaya.
|
||
|
|
3. Rekomendasi go/no-go live + parameter final HANYA jika edge terbukti.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 9. RISIKO & KONTROL
|
||
|
|
|
||
|
|
- **Overfitting:** satu dimensi per arm; split in-sample/out-of-sample; dilarang optimasi iteratif demi profit.
|
||
|
|
- **Look-ahead:** model 1-menit OHLC → verifikasi ulang every-tick pada arm terpilih (Phase 5/6).
|
||
|
|
- **Cost misestimation:** gunakan spread/komisi konservatif (pesimis), bukan optimis.
|
||
|
|
- **n kecil:** batasi klaim statistik; fokus effect size & konsistensi lintas arm.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 10. STATUS OPERASIONAL (di luar hipotesis)
|
||
|
|
|
||
|
|
- **Disk 44 GB** (`Tester\logs\20260812.log`) — operational risk; **wajib dibereskan sebelum
|
||
|
|
eksperimen panjang** (hapus manual + perluas `clean_old_logs.bat` ke `Tester\logs`).
|
||
|
|
- **`v_feedback`** — TIDAK dikalibrasi sekarang (telemetry kosong); menunggu evidence setup/trade
|
||
|
|
dari Phase 3–4.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 11. REFERENSI
|
||
|
|
|
||
|
|
- `PROJECT_REPORT.md` §5 baris 7 (0 trade), §6 P0, §7 handoff
|
||
|
|
- `MQL5/Include/Execution/COrderBlockScanner.mqh` (constraint scanner)
|
||
|
|
- `MQL5/Include/Models/CFuzzyFusion.mqh` (fusion + bobot)
|
||
|
|
- `MQL5/Experts/CentaurQuant.mq5` (alur keputusan v2.8.0)
|