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
- Persyaratan
- Cara Install
- Cara Menggunakan
- Penjelasan Parameter Input
- Arsitektur & Penjelasan Kode
- Sistem Proteksi Anti-MC
- Cara Backtest
- Pembaruan Terakhir (Changelog)
- 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
-
Copy file
hedge.mq5ke folder:[MT5 Data Folder]\MQL5\Experts\Untuk menemukan Data Folder: di MT5, klik File → Open Data Folder
-
Compile: Buka MetaEditor, buka file
hedge.mq5, tekan F7 (Compile). Pastikan 0 errors. -
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
-
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:
- Trend: EMA 50 > EMA 200 (buy) atau < (sell) di timeframe H1
- Kekuatan Trend: ADX >= 20
- Directional: +DI > -DI (buy) atau sebaliknya
- RSI Zone: RSI 40-70 (buy), 30-60 (sell) — hindari overbought/oversold
- Momentum Candle: Body > 40% ATR, wick ratio > 50%
- Pattern: Breakout high sebelumnya ATAU engulfing pattern
ScalpBuySignal() / ScalpSellSignal()
Sinyal entry scalp dengan 6 filter:
- Candle menyentuh BB lower/upper
- Close kembali di dalam BB (bounce, bukan tembus)
- RSI(7) di area oversold (<25) / overbought (>75)
- Candle bullish/bearish konfirmasi
- Masih ada ruang ke BB middle
- 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_LEVELdanFREEZE_LEVELbroker - DailyProfitTarget — berhenti trading saat sudah profit 2% hari ini
Cara Backtest
- Buka Strategy Tester di MT5 (Ctrl+R)
- Pilih Expert:
hedge - Pilih Symbol & Timeframe (M15/M30)
- Period: minimal 2 tahun data
- Modelling: Every tick based on real ticks (paling akurat)
- Deposit: sesuaikan dengan modal rencana
- 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%
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
lastDealsTotaldipindahkan dari variabel lokalstaticmenjadi variabel global dan diinisialisasi secara tepat padaOnInit(). Hal ini menghentikan bug pelacakan kekalahan beruntun (consecLosses) yang terhitung ganda secara keliru saat EA pertama kali berjalan. - Filter Entry Tengah Bar: Nilai awal
lastSwingBardiinisialisasi 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 pointsyang kaku dengan pemeriksaan dinamisIsVolatilityOk(). 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).
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.