MQL5 Wizard memungkinkan kita untuk membuat Expert Advisor secara otomatis (lihat juga MQL5 Wizard: Membuat Expert Advisors Tanpa Pemrograman).
Saatnya kita membahas sinyal trading yang didasarkan pada indikator teknikal Alligator, yang diperkenalkan oleh B. Williams dalam bukunya "Trading Chaos". Strategi ini dikenal sebagai Sinyal Berdasarkan Alligator (saat membuat EA secara otomatis di MQL5 Wizard).
Sistem ini didasarkan pada tiga garis moving average (garis Lips, Teeth, dan Jaw), serta osilator yang dihitung menggunakan selisih antara garis-garis tersebut. Sinyal trading dihasilkan setelah terjadinya crossover dari garis Alligator, tergantung pada tren yang ditentukan oleh urutan garis-garis tersebut. Dalam tren naik, garis Lips (dengan periode minimal) berada di atas, diikuti garis Teeth, dan garis Jaw berada di posisi terendah. Sebaliknya, dalam tren turun, urutannya akan terbalik.
Sinyal trading yang dihasilkan adalah sebagai berikut:
- Buka posisi long: crossover garis Alligator dan peningkatan jarak di antara garis-garis tersebut saat tren naik;
- Tutup posisi long: crossover ke atas dari garis Lips dengan garis Jaw;
- Buka posisi short: crossover garis Alligator dan peningkatan jarak di antara garis-garis tersebut saat tren turun;
- Tutup posisi short: crossover ke bawah dari garis Lips dengan garis Jaw;
Strategi ini diimplementasikan dalam kelas CSignalAlligator.

Gambar 1. Sinyal trading berdasarkan indikator Alligator
Sinyal Trading
Strategi trading ini diimplementasikan dalam kelas CSignalAlligator, yang memiliki beberapa metode yang dilindungi untuk mempermudah akses ke nilai indikator:
double Jaw(int ind) // mengembalikan nilai garis Jaw dari bar double Teeth(int ind) // mengembalikan nilai garis Teeth dari bar double Lips(int ind) // mengembalikan nilai garis Lips dari bar double LipsTeethDiff(int ind) // mengembalikan selisih antara garis Lips dan Teeth double TeethJawDiff(int ind) // mengembalikan selisih antara garis Teeth dan Jaw double LipsJawDiff(int ind) // mengembalikan selisih antara garis Lips dan Jaw bool CheckCross(); // digunakan untuk memeriksa crossover garis Alligator
1. Buka Posisi Long
Pemeriksaan kondisi trading memiliki beberapa fitur, yang disebabkan oleh pergeseran garis Lips, Teeth, dan Jaw.
Kondisi untuk membuka posisi long adalah:
- CheckCross digunakan untuk menentukan crossover dan peningkatan selisih antara garis-garis;
- LipsTeethDiff(-2)>=LipsTeethDiff(-1) dan LipsTeethDiff(-1)>=LipsTeethDiff(0); memeriksa peningkatan selisih antara garis Lips dan Teeth;
- LipsTeethDiff(0)>=0.0; garis Lips lebih tinggi dari garis Teeth;
- TeethJawDiff(-2) >=TeethJawDiff(-1) dan TeethJawDiff(-1) >=TeethJawDiff(0); memeriksa peningkatan selisih antara garis Teeth dan Jaw;
- TeethJawDiff(0) >=0.0; garis Teeth lebih tinggi dari garis Jaw.
//+------------------------------------------------------------------+ //| Memeriksa kondisi untuk membuka posisi long (beli) | //+------------------------------------------------------------------+ bool CSignalAlligator::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration) { if(CheckCross()) return(false); //--- price=0.0; sl =0.0; tp =0.0; //--- if(LipsTeethDiff(-2)>=LipsTeethDiff(-1) && LipsTeethDiff(-1)>=LipsTeethDiff(0) && LipsTeethDiff(0)>=0.0 && TeethJawDiff(-2) >=TeethJawDiff(-1) && TeethJawDiff(-1) >=TeethJawDiff(0) && TeethJawDiff(0) >=0.0) m_crossed=true; //--- return(m_crossed); }
2. Tutup Posisi Long
Kondisi untuk menutup posisi long (perhatikan pergeseran garis):
- LipsTeethDiff(-1)<0; garis Lips dari bar berikutnya (karena pergeseran) lebih rendah dari garis Teeth;
- LipsTeethDiff(0)>=0; garis Lips dari bar saat ini lebih tinggi/sama dengan garis Teeth;
- LipsTeethDiff(1)>0; garis Lips dari bar sebelumnya (yang sudah selesai) lebih tinggi dari garis Teeth.
//+------------------------------------------------------------------+ //| Memeriksa kondisi untuk menutup posisi long | //+------------------------------------------------------------------+ bool CSignalAlligator::CheckCloseLong(double& price) { price=0.0; //--- return(LipsTeethDiff(-1)<0 && LipsTeethDiff(0)>=0 && LipsTeethDiff(1)>0); }
3. Buka Posisi Short
Kondisi untuk membuka posisi short:
- CheckCross digunakan untuk menentukan crossover dan peningkatan selisih antara garis-garis;
- LipsTeethDiff(-2)<=LipsTeethDiff(-1) dan LipsTeethDiff(-1)<=LipsTeethDiff(0); memeriksa peningkatan selisih antara garis Lips dan Teeth;
- LipsTeethDiff(0)<=0.0; garis Lips dari bar saat ini lebih rendah dari garis Teeth;
- TeethJawDiff(-2)<=TeethJawDiff(-1) dan TeethJawDiff(-1)<=TeethJawDiff(0); memeriksa peningkatan selisih antara garis Teeth dan Jaw;
- TeethJawDiff(0) <=0.0; garis Teeth dari bar saat ini lebih rendah dari garis Jaw;
//+------------------------------------------------------------------+ //| Memeriksa kondisi untuk membuka posisi short (jual) | //+------------------------------------------------------------------+ bool CSignalAlligator::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration) { if(CheckCross()) return(false); //--- price=0.0; sl =0.0; tp =0.0; //--- if(LipsTeethDiff(-2)<=LipsTeethDiff(-1) && LipsTeethDiff(-1)<=LipsTeethDiff(0) && LipsTeethDiff(0)<=0.0 && TeethJawDiff(-2) <=TeethJawDiff(-1) && TeethJawDiff(-1) <=TeethJawDiff(0) && TeethJawDiff(0) <=0.0) m_crossed=true; //--- return(m_crossed); }
4. Tutup Posisi Short
Kondisi untuk menutup posisi short:
- LipsTeethDiff(-1)>0; garis Lips dari bar berikutnya (karena pergeseran) lebih tinggi dari garis Teeth;
- LipsTeethDiff(0)<=0; garis Lips dari bar saat ini lebih rendah/sama dengan garis Teeth;
- LipsTeethDiff(1)<0; garis Lips dari bar sebelumnya lebih rendah dari garis Teeth.
//+------------------------------------------------------------------+ //| Memeriksa kondisi untuk menutup posisi short | //+------------------------------------------------------------------+ bool CSignalAlligator::CheckCloseShort(double& price) { price=0.0; //--- return(LipsTeethDiff(-1)>0 && LipsTeethDiff(0)<=0 && LipsTeethDiff(1)<0); }
Membuat Expert Advisor Menggunakan MQL5 Wizard
Untuk membuat robot trading berdasarkan strategi ini, Anda perlu memilih properti sinyal sebagai "Sinyal Berdasarkan Alligator" dalam opsi "Membuat Expert Advisors Siap Pakai" di MQL5 Wizard:

Gambar 2. Pilih "Sinyal Berdasarkan Alligator" di MQL5 Wizard
Selanjutnya, Anda harus menentukan algoritma trailing stop yang diperlukan dan sistem manajemen uang dan risiko. Kode Expert Advisor akan dibuat secara otomatis, Anda dapat mengompilasinya dan mengujinya di Strategy Tester dari terminal klien MetaTrader 5.
Hasil Uji Coba
Mari kita lihat backtesting dari Expert Advisor pada data historis (EURUSD H1, periode pengujian: 1.1.2010-05.01.2011, JawPeriod=13, JawShift=8, TeethPeriod=8, TeethShift=5, LipsPeriod=5, LipsShift=3, MaMethod=2, Applied=5, CrossMeasure=5).
Dalam pembuatan Expert Advisor ini, kami menggunakan volume tetap (Trading Fixed Lot, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan).

Gambar 3. Hasil Uji Coba Expert Advisor dengan sinyal trading berdasarkan indikator Alligator
Keuntungan dapat ditingkatkan jika Anda menggunakan filtrasi transaksi dan memperhatikan karakteristik pasar, tergantung pada waktu. Kelas CSignalITF akan memungkinkan Anda untuk menambahkan filter waktu intraday. Waktu terbaik dapat ditemukan menggunakan Strategy Tester dari terminal klien MetaTrader 5. Lihat contoh di MQL5 Wizard - Sinyal Trading Berdasarkan Crossover Dua EMA dengan filter waktu intraday.
Lampiran: File SignalAlligator.mqh dengan kelas CSignalAlligator harus ditempatkan di folder terminal_data_folder\MQL5\Include\Expert\Signal.
File expert_alligator.mq5 berisi kode Expert Advisor yang dibuat menggunakan MQL5 Wizard.
Postingan terkait
- RRS Impulse: EA Unggulan untuk Trading MetaTrader 4
- Panduan Sistem Trading BROTHER - Hasil Ekstrem dengan EA 5 Menit di MetaTrader 4
- MQL5 Wizard: Ciptakan Expert Advisor untuk Pola Candlestick Engulfing dan CCI
- Membuat Expert Advisor Menggunakan MQL5 Wizard: Sinyal Perdagangan dari Bullish dan Bearish Engulfing dengan Stochastic
- MQL5 Wizard: Menggunakan Sinyal Trading Berbasis Morning/Evening Stars dan RSI untuk MetaTrader 5