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 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%

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).

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.

S
Description
No description provided
Readme 42 KiB
Languages
MQL5 100%