Parameter yang Dapat Diubah pada EA
EA ini menyediakan beberapa parameter eksternal yang bisa dimodifikasi oleh pengguna untuk mengontrol perilakunya:
Parameter Umum
| Parameter | Tipe | Deskripsi |
| MagicNumber | int | Identifikasi unik untuk setiap trade yang dilakukan oleh EA. |
| InitialLot | double | Ukuran lot awal untuk trade pertama dalam serangkaian trade. |
| AllowBuy | bool | Menandakan apakah EA diperbolehkan untuk membuka trade Buy (baik awal maupun Martingale). |
| AllowSell | bool | Menandakan apakah EA diperbolehkan untuk membuka trade Sell (baik awal maupun Martingale). |
| TakeProfit | int | Take Profit tetap dalam poin/pips yang digunakan saat menempatkan order pending (tidak untuk eksekusi pasar). |
| FindHighLowBackBars | int | Jumlah bar sebelumnya yang dilihat untuk menentukan high tertinggi dan low terendah untuk penempatan order pending awal. |
| ResetAfterBars | int | Jumlah bar setelah mana order pending awal akan dihapus dan dievaluasi ulang (jika tidak ada posisi yang terbuka). |
Strategi Martingale
| Parameter | Tipe | Deskripsi |
| ReverseMartingale | bool | Jika true, trade Martingale berikutnya akan dilakukan di arah berlawanan dari trade terakhir dalam serinya. |
| LotMultiplier | double | Faktor yang digunakan untuk mengalikan ukuran lot untuk trade berikutnya dalam serangkaian trade yang merugi (misalnya, 2.0 berarti menggandakan lot). |
| SecureProfitMartingaleTarget | double | Total profit mengambang (dalam mata uang akun) pada saat mana seluruh serangkaian trade terbuka akan ditutup. |
| DistanceMartingalePips | int | Jarak (dalam pips) yang harus dilalui harga melawan harga open trade terakhir sebelum trade Martingale baru dibuka. |
| MaxTradesInSeries | int | Jumlah maksimum trade yang diizinkan dalam satu seri Martingale. |
Strategi Waktu
| Parameter | Tipe | Deskripsi |
| AllowMonday... AllowFriday | bool | Menandakan untuk mengizinkan atau melarang trading pada hari-hari tertentu dalam seminggu. |
| ForbiddenDates | string | Daftar tanggal terpisah koma (format YYYY.MM.DD) di mana trading dilarang. |
Ikhtisar Fungsi Utama
OnInit() (Inisialisasi)
Menetapkan MagicNumber EA, mode margin, dan deviasi. Ini mengatur ulang status Martingale (s_currentLot, s_totalTradesInSeries, dll.) ke nilai awal, mempersiapkan untuk memulai baru.
OnDeinit() (Deinisialisasi)
Fungsi sederhana untuk membersihkan, mencetak pesan saat EA dihentikan atau dihapus.
IsTradingDateAllowed() dan IsTradingDayAllowed() (Filter Trading)
Fungsi ini memeriksa hari dan tanggal saat ini terhadap input yang ditentukan pengguna untuk menentukan apakah trading diizinkan.
OpenTradeLogic(ENUM_ORDER_TYPE type, string tradeComment) (Eksekusi Pasar)
Fungsi ini menangani pembukaan posisi pasar baru (Buy atau Sell).
- Memvalidasi dan menormalkan ukuran lot terhadap minimum, maksimum, dan langkah ukuran broker.
- Memeriksa margin bebas yang cukup menggunakan CheckMargin().
- Menjalankan trade tanpa Take Profit atau Stop Loss tetap.
- Memperbarui variabel status Martingale global: s_currentLot, s_lastOpenPrice, s_seriesType, dan s_totalTradesInSeries.
CloseAllPositions()
Mengiterasi melalui semua posisi terbuka saat ini dan menutup posisi yang dibuka oleh EA ini (sesuai dengan MagicNumber).
PendingOrders(ENUM_ORDER_TYPE type, double price, double lotSize, string comment) (Penempatan Order Pending)
Fungsi ini menempatkan Buy Limit atau Sell Limit orders:
- Memvalidasi ukuran lot dan memeriksa margin yang cukup.
- Memvalidasi harga entry terhadap jarak minimum broker.
- Menghitung Take Profit tetap berdasarkan input TakeProfit.
- Mengirim permintaan trade.
UpdateHighLowAndOrders() (Logika Entry Awal)
Ini adalah mekanisme entry awal ketika tidak ada posisi terbuka:
- Mencari High Tertinggi dan Low Terendah.
- Menghitung harga Sell Limit dan Buy Limit.
- Memeriksa apakah order Buy Limit dan Sell Limit dengan MagicNumber EA sudah ada.
- Menempatkan order Sell Limit dan Buy Limit awal.
OnTick() (Logika Utama)
Inti dari logika eksekusi EA:
- Pemeriksaan Waktu: Mencegah perhitungan yang berlebihan pada tick yang sama.
- Pemeriksaan Filter: Jika trading tidak diizinkan pada hari/tanggal, hapus semua order pending.
- Pemeriksaan Target Profit: Jika ada posisi terbuka dan total profit mengambang mencapai SecureProfitMartingaleTarget, panggil CloseAllPositions() dan reset semua variabel status Martingale.
- Pembukaan Order Awal: Jika tidak ada posisi terbuka dan trading diizinkan, reset status Martingale dan periksa apakah bar baru telah terbentuk.
Ringkasan Strategi
EA "Babi Ngepet" menerapkan strategi Martingale yang berisiko namun berpotensi menguntungkan dengan kombinasi entry breakout/reversal:
- Entry Awal: Menempatkan order Buy Limit dan Sell Limit.
- Manajemen Trade: Jika salah satu trade awal terpicu dan posisi bergerak menjadi rugi, EA membuka posisi baru.
- Strategi Keluar: Serangkaian trade terus meningkat hingga profit total mencapai SecureProfitMartingaleTarget.
Postingan terkait
- RRS Impulse: EA Unggulan untuk Trading MetaTrader 4
- Menggunakan Moving Average EA di MetaTrader 5 untuk Trading yang Lebih Efisien
- Panduan Sistem Trading BROTHER - Hasil Ekstrem dengan EA 5 Menit di MetaTrader 4
- MQL5 Wizard: Menggunakan Sinyal Trading Berbasis Morning/Evening Stars dan RSI untuk MetaTrader 5
- Panduan Lengkap Membuat EA dengan MQL5 Wizard: Sinyal Trading Bullish dan Bearish Engulfing + MFI