2026-04-15 23:53:01 +07:00
# Hedge Fund Ultimate Pro v5.1 — Dual Engine EA (MT5)
> Expert Advisor MetaTrader 5 dengan dual engine: **Swing Trend-Follow** + **Scalp Mean-Reversion**, dilengkapi 7 lapis proteksi anti-Margin Call dan SL/TP fully adaptive berbasis ATR.
---
## Daftar Isi
- [Fitur Utama ](#fitur-utama )
- [Persyaratan ](#persyaratan )
- [Cara Install ](#cara-install )
- [Cara Menggunakan ](#cara-menggunakan )
- [Penjelasan Parameter Input ](#penjelasan-parameter-input )
- [Arsitektur & Penjelasan Kode ](#arsitektur--penjelasan-kode )
- [Sistem Proteksi Anti-MC ](#sistem-proteksi-anti-mc )
- [Cara Backtest ](#cara-backtest )
2026-05-25 08:29:56 +07:00
- [Pembaruan Terakhir (Changelog) ](#pembaruan-terakhir-changelog )
2026-04-15 23:53:01 +07:00
- [Disclaimer ](#disclaimer )
---
## Fitur Utama
| Fitur | Keterangan |
|-------|------------|
| **Dual Engine** | Swing (trend-following) + Scalp (mean-reversion) berjalan bersamaan |
| **Full Adaptive SL/TP** | Semua SL, TP, Breakeven, dan Trailing berbasis ATR — otomatis menyesuaikan volatilitas |
| **Dynamic TP Extension** | TP swing otomatis diperpanjang +1 ATR saat harga mendekati target; TP scalp bergeser ke BB mid |
| **7 Lapis Anti-MC** | Daily loss limit, equity circuit breaker, margin check, total position cap, dynamic risk reduction, cooldown, weekend close |
| **Progressive Trailing** | Trailing stop makin ketat seiring profit bertambah |
| **Partial Close** | Tutup 50% posisi saat R:R 1:1, sisanya biarkan jalan |
| **Auto-Detect Filling** | Otomatis mendeteksi mode filling broker (FOK/IOC/RETURN) |
| **News Filter** | Menghindari entry 30 menit sebelum dan 15 menit sesudah jam news |
| **Multi-Instrument** | Bisa dipakai di pair/instrument apapun tanpa ubah parameter (karena semua ATR-based) |
---
## Persyaratan
- **Platform**: MetaTrader 5 (MT5)
- **Bahasa**: MQL5
- **Library**: `Trade/Trade.mqh` (sudah bawaan MT5)
- **Timeframe Disarankan**: M15 atau M30 (EA akan otomatis ambil HTF H1 untuk trend filter)
- **Akun**: Hedge atau Netting (disarankan akun Hedge)
- **VPS**: Disarankan agar EA berjalan 24/5 tanpa putus
---
## Cara Install
1. **Copy file** `hedge.mq5` ke folder:
```
[MT5 Data Folder]\MQL5\Experts\
` ``
> Untuk menemukan Data Folder: di MT5, klik **File → Open Data Folder**
2. **Compile**: Buka MetaEditor, buka file ` hedge.mq5`, tekan **F7** (Compile). Pastikan **0 errors**.
3. **Attach ke chart**:
- Buka chart pair yang diinginkan (misal EURUSD, XAUUSD)
- Pilih timeframe M15 atau M30
- Drag EA dari Navigator → Expert Advisors ke chart
- Centang **Allow Algo Trading** di tab Common
- Atur parameter sesuai kebutuhan di tab Inputs
- Klik **OK**
4. **Pastikan AutoTrading aktif** (tombol AutoTrading di toolbar MT5 harus hijau/aktif)
---
## Cara Menggunakan
### Penggunaan Standar (Default)
Parameter default sudah dioptimasi untuk pair forex major. Tinggal attach ke chart dan biarkan berjalan.
### Untuk Gold (XAUUSD)
Karena semua SL/TP berbasis ATR, EA otomatis menyesuaikan. Anda bisa menurunkan ` MaxSpread` ke 50 dan ` Scalp_MaxSpread` ke 30 untuk Gold.
### Scalp Only
Set ` MaxSwingPos = 0` untuk menonaktifkan swing, hanya scalp yang berjalan.
### Swing Only
Set ` EnableScalp = false` untuk menonaktifkan scalp.
---
## Penjelasan Parameter Input
### Risk Management
| Parameter | Default | Penjelasan |
|-----------|---------|------------|
| ` RiskPercent` | 0.75% | Risiko per trade swing terhadap balance |
| ` ScalpRiskPercent` | 0.3% | Risiko per trade scalp (lebih kecil karena frekuensi lebih tinggi) |
| ` MaxDailyLossP` | 3.0% | Jika total loss hari ini melebihi 3% balance, EA berhenti trading & tutup semua posisi |
| ` MaxDrawdownP` | 8.0% | Circuit breaker: jika equity turun 8% dari peak, tutup semua posisi |
| ` MaxSwingPos` | 2 | Maksimal posisi swing terbuka bersamaan |
| ` MaxScalpPos` | 3 | Maksimal posisi scalp terbuka bersamaan |
| ` MagicSwing` | 778899 | Magic number untuk identifikasi posisi swing |
| ` MagicScalp` | 778900 | Magic number untuk identifikasi posisi scalp |
| ` CooldownBars` | 3 | Jumlah bar menunggu setelah loss sebelum entry lagi |
| ` MaxConsecLoss` | 3 | Setelah 3 loss berturut-turut, risk dipotong 50% |
| ` MaxTotalPos` | 4 | Maksimal TOTAL posisi (swing + scalp gabungan) |
| ` DailyProfitTarget` | 2.0% | Berhenti trading jika profit hari ini sudah >= 2% balance (0 = nonaktif) |
| ` MinMarginLevel` | 200% | Tidak entry baru jika margin level di bawah 200% |
### Swing: Trend Filter
| Parameter | Default | Penjelasan |
|-----------|---------|------------|
| ` EMA_Fast` | 50 | EMA cepat untuk deteksi trend |
| ` EMA_Slow` | 200 | EMA lambat untuk deteksi trend |
| ` HTF` | H1 | Timeframe untuk analisis trend (Higher Time Frame) |
| ` ADX_Period` | 14 | Period ADX untuk kekuatan trend |
| ` ADX_Min` | 20.0 | Minimum ADX untuk konfirmasi trend kuat |
### Swing: Entry
| Parameter | Default | Penjelasan |
|-----------|---------|------------|
| ` RSI_Period` | 14 | Period RSI untuk filter overbought/oversold |
| ` RSI_OB` | 70.0 | Level RSI overbought (tidak buy di atas ini) |
| ` RSI_OS` | 30.0 | Level RSI oversold (tidak sell di bawah ini) |
| ` ATR_SL_Multi` | 1.5 | SL ditempatkan di low candle - (ATR × 1.5) |
| ` Swing_RR` | 2.5 | Risk:Reward ratio swing (TP = SL distance × 2.5) |
| ` ATR_Period` | 14 | Period ATR |
### Swing: Management
| Parameter | Default | Penjelasan |
|-----------|---------|------------|
| ` UsePartialClose` | true | Aktifkan partial close (tutup sebagian posisi) |
| ` PartialCloseRR` | 1.0 | Partial close saat profit = 1× SL distance |
| ` PartialPercent` | 50% | Tutup 50% lot saat partial close |
| ` BE_ATR_Multi` | 1.0 | Pindahkan SL ke breakeven saat profit = 1× ATR |
| ` Trail_ATR_Multi` | 1.5 | Mulai trailing saat profit = 1.5× ATR |
| ` Trail_Step_ATR` | 0.8 | Jarak trailing = 0.8× ATR (makin ketat seiring profit naik) |
| ` CloseOnOpposite` | true | Tutup posisi berlawanan saat sinyal baru muncul |
### Scalp: Settings
| Parameter | Default | Penjelasan |
|-----------|---------|------------|
| ` EnableScalp` | true | Aktifkan engine scalp |
| ` BB_Period` | 20 | Period Bollinger Band |
| ` BB_Dev` | 2.0 | Deviasi Bollinger Band |
| ` Scalp_RSI_Period` | 7 | Period RSI cepat untuk scalp |
| ` Scalp_RSI_OB` | 75.0 | RSI overbought trigger scalp |
| ` Scalp_RSI_OS` | 25.0 | RSI oversold trigger scalp |
| ` Scalp_RR` | 1.2 | Risk:Reward ratio scalp |
| ` Scalp_SL_ATR` | 0.8 | SL scalp = ATR × 0.8 |
| ` Scalp_MaxSpread` | 15 | Max spread untuk scalp (lebih ketat dari swing) |
| ` Scalp_BE_ATR` | 0.3 | Breakeven trigger scalp = ATR × 0.3 (adaptive) |
| ` Scalp_Trail_ATR` | 0.15 | Trail distance scalp = ATR × 0.15 (adaptive) |
### Filters
| Parameter | Default | Penjelasan |
|-----------|---------|------------|
| ` MaxSpread` | 30 | Spread maksimal untuk swing entry (dalam points) |
| ` UseSessionFilter` | true | Aktifkan filter jam trading |
| ` SessionStartHour` | 2 | Jam mulai trading swing (London open) |
| ` SessionEndHour` | 20 | Jam akhir trading swing (NY close) |
| ` ScalpStartHour` | 7 | Jam mulai scalp (jam sibuk) |
| ` ScalpEndHour` | 17 | Jam akhir scalp |
| ` CloseBeforeWeekend` | true | Tutup semua posisi hari Jumat jam 20:00 |
| ` AvoidHighImpactHour` | true | Hindari entry dekat jam news |
| ` NewsHours` | "8,13,15" | Jam server rawan news (pisahkan dengan koma) |
---
## Arsitektur & Penjelasan Kode
### Alur Utama (OnTick)
` ``
Setiap Tick:
├── ManageSwing() → Kelola posisi swing (partial close, BE, trailing, TP extension)
├── ManageScalp() → Kelola posisi scalp (adaptive BE, trailing, TP adjust)
├── EquitySafe() → Cek equity drawdown circuit breaker
├── CheckWeekendClose() → Tutup semua jika Jumat >= 20:00
│
└── [Hanya saat Bar Baru]:
├── DailySafe() → Cek daily loss (closed + floating)
├── CooldownOK() → Cek cooldown setelah loss
├── DailyTargetReached() → Cek apakah sudah cukup profit
├── MarginOK() → Cek margin level
├── LoadIndicators() → Load semua data indikator
│
├── ENGINE 1: SWING
│ ├── SwingBuySignal() → EMA trend + ADX + DI + RSI + Price Action
│ └── SwingSellSignal() → Kebalikan dari buy
│
└── ENGINE 2: SCALP
├── ScalpBuySignal() → BB lower bounce + RSI(7) oversold
└── ScalpSellSignal() → BB upper bounce + RSI(7) overbought
` ``
### Penjelasan Fungsi-Fungsi Utama
#### ` DetectFilling()`
Mendeteksi mode filling yang didukung broker secara otomatis. Mencegah error order karena salah filling mode.
#### ` OnInit()`
Inisialisasi semua handle indikator (EMA, ADX, RSI, ATR, Bollinger Band), restore peak equity dari GlobalVariable (persistent antar restart), hitung consecutive losses dari history.
#### ` SwingBuySignal()` / ` SwingSellSignal()`
Sinyal entry swing dengan 6 filter:
1. **Trend**: EMA 50 > EMA 200 (buy) atau < (sell) di timeframe H1
2. **Kekuatan Trend**: ADX >= 20
3. **Directional**: +DI > -DI (buy) atau sebaliknya
4. **RSI Zone**: RSI 40-70 (buy), 30-60 (sell) — hindari overbought/oversold
5. **Momentum Candle**: Body > 40% ATR, wick ratio > 50%
6. **Pattern**: Breakout high sebelumnya ATAU engulfing pattern
#### ` ScalpBuySignal()` / ` ScalpSellSignal()`
Sinyal entry scalp dengan 6 filter:
1. Candle menyentuh BB lower/upper
2. Close kembali di dalam BB (bounce, bukan tembus)
3. RSI(7) di area oversold (<25) / overbought (>75)
4. Candle bullish/bearish konfirmasi
5. Masih ada ruang ke BB middle
6. Tidak melawan trend kuat (ADX > 30)
#### ` LotCalc()`
Menghitung lot berdasarkan risiko:
` ``
Lot = (Balance × Risk%) / (SL_points × tick_value / tick_size × Point)
` ``
Dibulatkan ke ` SYMBOL_VOLUME_STEP` broker, diklem antara ` VOLUME_MIN` dan ` VOLUME_MAX`.
#### ` ManageSwing()`
Manajemen posisi swing yang berjalan setiap tick:
- **Partial Close**: Tutup 50% lot saat profit = 1× SL distance (tracking via GlobalVariable agar persistent)
- **Breakeven**: Geser SL ke entry + 20% ATR saat profit >= 1× ATR
- **Progressive Trailing**: Trail semakin ketat (dari 100% ke 40% base distance) seiring profit bertambah
- **Dynamic TP Extension**: Saat harga mencapai 80% jarak ke TP, TP diperpanjang +1 ATR
#### ` ManageScalp()`
Manajemen posisi scalp (semua ATR-adaptive):
- **Adaptive Breakeven**: Trigger di ATR × 0.3, lock profit 5% ATR
- **Adaptive Trailing**: Trail distance ATR × 0.15, mulai setelah 1.5× BE trigger
- **Dynamic TP**: Geser TP ke BB mid jika lebih menguntungkan
#### ` OnTrade()`
Event handler yang melacak win/loss secara real-time:
- Menghitung consecutive losses untuk dynamic risk reduction
- Reset counter otomatis saat ganti hari
- Membersihkan GlobalVariable partial close saat posisi tertutup
---
## Sistem Proteksi Anti-MC
EA ini memiliki **7 lapis proteksi** yang bekerja berlapis-lapis:
| Lapis | Fungsi | Cara Kerja |
|-------|--------|------------|
| 1 | ` DailySafe()` | Stop trading + close all jika loss hari ini > 3% balance (closed + floating) |
| 2 | ` EquitySafe()` | Circuit breaker: close all jika equity turun 8% dari peak (persistent antar restart) |
| 3 | ` MarginOK()` | Tidak entry baru jika margin level < 200% |
| 4 | ` MaxTotalPos` | Batasi total posisi swing + scalp gabungan (max 4) |
| 5 | ` GetEffectiveRisk()` | Potong risk 50% setelah 3 loss berturut-turut |
| 6 | ` CooldownOK()` | Tidak entry selama 3 bar setelah loss terakhir |
| 7 | ` CheckWeekendClose()` | Close all posisi Jumat sore, hindari gap weekend |
Ditambah proteksi entry:
- **Spread filter** — tidak entry saat spread terlalu lebar
- **Session filter** — hanya trading di jam aktif
- **News filter** — skip entry 30 menit sebelum & 15 menit sesudah jam news
- **ValidateSLTP()** — validasi SL/TP terhadap ` STOPS_LEVEL` dan ` FREEZE_LEVEL` broker
- **DailyProfitTarget** — berhenti trading saat sudah profit 2% hari ini
---
## Cara Backtest
1. Buka **Strategy Tester** di MT5 (Ctrl+R)
2. Pilih Expert: ` hedge`
3. Pilih Symbol & Timeframe (M15/M30)
4. Period: minimal **2 tahun** data
5. Modelling: **Every tick based on real ticks** (paling akurat)
6. Deposit: sesuaikan dengan modal rencana
7. Klik **Start**
### Tips Backtest
- Gunakan **Every tick based on real ticks** untuk hasil paling realistis
- Test di beberapa pair berbeda untuk melihat universalitas
- Perhatikan **Max Drawdown %** dan **Profit Factor**
- Target: Profit Factor > 1.5, Max DD < 15%
---
2026-05-25 08:29:56 +07:00
## Pembaruan Terakhir (Changelog v5.10)
EA ini telah diperbarui untuk meningkatkan stabilitas sistem (*system safeguard*), profitabilitas strategi, serta keamanan transaksi saat digunakan langsung (*live trading*). Berikut detail pembaruan:
### 1. Perbaikan Bug Stabilitas Sistem
* **Fix Double-Counting OnTrade:** Variabel penanda transaksi ` lastDealsTotal` dipindahkan dari variabel lokal ` static` menjadi variabel global dan diinisialisasi secara tepat pada ` OnInit()`. Hal ini menghentikan bug pelacakan kekalahan beruntun (*consecLosses*) yang terhitung ganda secara keliru saat EA pertama kali berjalan.
* **Filter Entry Tengah Bar:** Nilai awal ` lastSwingBar` diinisialisasi dengan open time bar berjalan saat EA dipasang. EA kini akan menunggu pembentukan bar baru selesai sebelum mengevaluasi sinyal entry, menghindari masuk posisi secara acak di tengah bar.
* **Lookback Kekalahan Beruntun:** Fungsi ` CountRecentLosses()` sekarang memindai history transaksi 30 hari ke belakang (sebelumnya hanya awal hari ini). Membuat fitur pemotongan risiko otomatis saat beruntun rugi (*dynamic risk reduction*) bekerja akurat lintas hari.
### 2. Peningkatan Profitabilitas (Swing & Scalp)
* **Integrasi Sinyal Pin Bar (Swing):** Menambahkan deteksi otomatis pola rejection candle **Pin Bar** (Hammer/Shooting Star) sebagai pemicu alternatif untuk entry swing. EA kini dapat mengambil peluang pembalikan arah harga (*pullback*) yang kuat pada level support/resistance utama.
* **Optimasi RSI untuk Pullback Swing:** Melonggarkan filter RSI ke batas bawah **35.0** (Buy) dan batas atas **65.0** (Sell) saat tren dikonfirmasi kuat. Memberikan lebih banyak peluang bagi EA untuk melakukan entry pada koreksi harga yang sehat.
* **Filter Volatilitas Dinamis (Adaptif):** Mengganti filter statis ` 30 points` yang kaku dengan pemeriksaan dinamis ` IsVolatilityOk()`. EA membandingkan volatilitas saat ini dengan rata-rata 50 bar terakhir. EA akan memblokir entry jika pasar mati/sepi (di bawah 60% rata-rata) demi menghindari biaya spread broker yang lebar.
### 3. Pengamanan Transaksi Live (Anti-Spam Broker)
* **Trailing Step Dinamis:** Menghindari pengiriman request modifikasi Stop Loss (SL) secara terus-menerus ke server broker (*broker spamming*). Trailing stop kini diatur dengan langkah dinamis minimal **10% ATR** untuk Swing dan **5% ATR** untuk Scalping.
* **Koreksi Validasi SL/TP:** Meningkatkan fungsi ` ValidateSLTP()` agar tidak terjadi penolakan order oleh broker saat EA memproses transaksi tanpa SL/TP statis (SL/TP nol).
---
2026-04-15 23:53:01 +07:00
## Disclaimer
> **PERINGATAN**: Trading forex/CFD memiliki risiko tinggi. EA ini **TIDAK menjamin profit**. Past performance (backtest) TIDAK menjamin hasil di masa depan. Selalu test di **akun demo** terlebih dahulu. Gunakan modal yang siap Anda risikokan. Pembuat tidak bertanggung jawab atas kerugian yang terjadi.
---
## Lisensi
Kode ini dibagikan untuk tujuan edukasi. Gunakan dengan risiko sendiri.