Beranda Perdagangan Sistem Postingan

MQL5 Wizard: Membuat EA dengan Sinyal Trading Hammer/Hanging Man dan MFI

Lampiran
316.zip (6.48 KB, Unduh 2 kali)

MQL5 Wizard adalah alat yang sangat berguna untuk trader yang ingin membuat Expert Advisor (EA) siap pakai dengan menggunakan kelas-kelas dari Standard Library yang sudah ada di terminal klien MetaTrader 5. Dengan alat ini, kamu bisa dengan cepat mengecek ide trading yang kamu miliki. Cukup buat kelas sinyal trading kamu sendiri. Struktur kelas tersebut dan contoh penggunaannya dapat kamu temukan dalam artikel MQL5 Wizard: Cara Membuat Modul Sinyal Trading.

Ide dasarnya adalah: kelas sinyal trading diturunkan dari CExpertSignal. Selanjutnya, kamu perlu mengoverride metode virtual LongCondition() dan ShortCondition() dengan metode milikmu sendiri.

Ada sebuah buku berjudul "Strategi Trader Terbaik" (dalam bahasa Rusia) yang membahas banyak strategi trading. Di sini, kita akan fokus pada pola candlestick pembalikan, yang dikonfirmasi oleh Stochastic, CCI, MFI, dan RSI.

Cara terbaik adalah dengan membuat kelas terpisah, yang diturunkan dari CExpertSignal untuk memeriksa pembentukan pola candlestick. Untuk mengonfirmasi sinyal trading yang dihasilkan oleh pola candlestick, cukup buat kelas yang diturunkan dari CCandlePattern dan tambahkan fitur yang diperlukan (misalnya, konfirmasi dengan oscillator).

Di sini, kita akan membahas sinyal yang berbasis pada pola candlestick pembalikan "Hammer/Hanging Man" yang dikonfirmasi oleh MFI. Modul sinyal trading ini dibangun di atas kelas CCandlePattern, sebagai contoh sederhana penggunaannya dalam membuat sinyal trading dengan pola candlestick.

1. Pola Candlestick Pembalikan: "Hammer" dan "Hanging Man"

1.1. Hammer

"Hammer" adalah candlestick dengan badan kecil dan sumbu bawah panjang, terbentuk setelah pergerakan harga turun. Pola "Hammer" menandakan akhir dari tren bearish.

Warna badan candlestick tidak terlalu penting, tetapi hammer bullish menunjukkan potensi bullish yang lebih tinggi. Badan pola "Hammer" biasanya terbentuk di dekat titik terendah candle sebelumnya. Sumbu bawah yang lebih panjang dan sumbu atas yang lebih pendek menunjukkan potensi pembalikan yang lebih tinggi.

Fig. 1. Pola candlestick 'Hammer'

Fig. 1. Pola candlestick 'Hammer'

Pengakuan pola "Hammer" dilakukan dalam metode CheckPatternHammer() dari kelas CCandlePattern:

//+------------------------------------------------------------------+
//| Memeriksa pembentukan pola candlestick "Hammer"               |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternHammer()
  {
//--- Hammer
   if((MidPoint(1)<CloseAvg(2))                                 && // tren turun
      (MathMin(Open(1),Close(1))>(High(1)-(High(1)-Low(1))/3.0)) && // badan di 1/3 atas
      (Close(1)2)) && (Open(1)2)))                 // celah badan
      return(true);
//---
   return(false);
  }

Metode CheckCandlestickPattern(CANDLE_PATTERN_HAMMER) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "Hammer".


1.2. Hanging Man

"Hanging Man" adalah candlestick dengan badan kecil dan sumbu bawah panjang, terbentuk setelah pergerakan harga naik. Pola "Hanging Man" menunjukkan akhir dari tren bullish.

Warna badan candlestick tidak terlalu penting, tetapi candle bearish menunjukkan potensi bearish yang lebih tinggi. Badan pola "Hanging Man" biasanya terbentuk di dekat titik tertinggi candle sebelumnya. Sumbu bawah yang lebih panjang dan sumbu atas yang lebih pendek menunjukkan potensi pembalikan yang lebih tinggi.

Fig. 2. Pola candlestick 'Hanging Man'

Fig. 2. Pola candlestick 'Hanging Man'

Pengakuan pola "Hanging Man" dilakukan dalam metode CheckPatternHangingMan() dari kelas CCandlePattern:

//+------------------------------------------------------------------+
//| Memeriksa pembentukan pola candlestick "Hanging Man"          |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternHangingMan()
  {
//--- Hanging man
   if((MidPoint(1)>CloseAvg(2))                                && // tren naik
      (MathMin(Open(1),Close(1)>(High(1)-(High(1)-Low(1))/3.0)) && // badan di 1/3 atas
      (Close(1)>Close(2)) && (Open(1)>Open(2))))                  // celah badan
      return(true);
//---
   return(false);
  }

Metode CheckCandlestickPattern(CANDLE_PATTERN_HANGING_MAN) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "Hanging Man".


2. Sinyal Trading yang Dikonfirmasi oleh Indikator MFI

Sinyal trading untuk membuka posisi long atau short harus dikonfirmasi oleh MFI. Nilai indikator MFI harus di bawah 40 (untuk posisi long) atau di atas 60 (untuk posisi short).

Penutupan posisi terbuka tergantung pada nilai indikator MFI. Ini bisa dilakukan dalam 2 kasus:

  • Jika MFI telah mencapai level kritis yang berlawanan (70 untuk posisi long dan 30 untuk posisi short)
  • Jika sinyal pembalikan tidak terkonfirmasi (ketika indikator MFI mencapai level berikut: 30 untuk posisi long dan 70 untuk posisi short)

Fig. 3. Pola 'Hammer', dikonfirmasi oleh indikator MFI

Fig. 3. Pola 'Hammer', dikonfirmasi oleh indikator MFI

  • int CH_HM_MFI::LongCondition() - memeriksa kondisi untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40);
  • int CH_HM_MFI::ShortCondition() - memeriksa kondisi untuk membuka posisi short (mengembalikan 80) dan menutup posisi long (mengembalikan 40).

2.1. Membuka posisi long/Menutup posisi short

  1. Pembentukan pola "Hammer" harus dikonfirmasi oleh MFI indikator: MFi(1)<40 (nilai indikator MFI dari bar yang telah selesai harus kurang dari 40).

  2. Posisi short harus ditutup jika MFI indikator telah melintasi level kritis ke atas (70 atau 30).

//+------------------------------------------------------------------+
//| Memeriksa kondisi untuk masuk dan keluar dari pasar               |
//| 1) Masuk pasar (membuka posisi long, hasil=80)                   |
//| 2) Keluar pasar (menutup posisi short, hasil=40)                 |
//+------------------------------------------------------------------+
int CH_HM_MFI::LongCondition()
  {
   int result=0;
//--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor
//--- idx=0 - dalam hal ini EA memeriksa kondisi trading pada setiap tick
//--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya pada bar berita
  int idx   =StartIndex();
//--- memeriksa kondisi untuk membuka posisi long
//--- pembentukan pola Hammer dan MFI<40
  if(CheckCandlestickPattern(CANDLE_PATTERN_HAMMER) && (MFI(1)<40))
     result=80;
//--- memeriksa kondisi untuk menutup posisi short
//--- persilangan garis sinyal dari level overbought/oversold (ke atas 30, ke atas 70)
  if(((MFI(1)>30) && (MFI(2)<30)) || ((MFI(1)>70) && (MFI(2)<70)))
     result=40;
//--- mengembalikan hasil
   return(result);
  }


2.2. Membuka posisi short/Menutup posisi long

  1. Pembentukan pola "Hanging Man" harus dikonfirmasi oleh MFI indikator: MFI(1)>60 (nilai indikator MFI dari bar yang telah selesai harus lebih dari 60).

  2. Posisi long harus ditutup jika MFI indikator telah melintasi level kritis ke atas (70 atau 30).

//+------------------------------------------------------------------+
//| Memeriksa kondisi untuk masuk dan keluar dari pasar               |
//| 1) Masuk pasar (membuka posisi short, hasil=80)                  |
//| 2) Keluar pasar (menutup posisi long, hasil=40)                  |
//+------------------------------------------------------------------+
int CH_HM_MFI::ShortCondition()
  {
   int result=0;
//--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor
//--- idx=0 - dalam hal ini EA memeriksa kondisi trading pada setiap tick
//--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya pada bar berita
  int idx   =StartIndex();
//--- memeriksa kondisi untuk membuka posisi short
//--- pembentukan pola Hanging Man dan MFI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_HANGING_MAN) && (MFI(1)>60))
     result=80;
//--- memeriksa kondisi untuk menutup posisi long
//--- persilangan garis sinyal dari level overbought/oversold (ke atas 70, ke bawah 30)
  if(((MFI(1)>70) && (MFI(2)<70)) || ((MFI(1)<30) && (MFI(2)>30)))
     result=40;
//--- mengembalikan hasil
   return(result);
  }


2.3. Membuat Expert Advisor Menggunakan MQL5 Wizard

Kelas CH_HM_MFI tidak termasuk dalam kelas Standard Library, untuk menggunakannya, kamu perlu mengunduh file ah_hm_mfi.mqh (lihat lampiran) dan menyimpannya di folder terminal_klien_data\MQL5\Include\Expert\Signal\MySignals. Hal yang sama harus dilakukan dengan file acandlepatterns.mqh. Kamu dapat menggunakannya di MQL5 Wizard setelah merestart MetaEditor.

Untuk membuat Expert Advisor, jalankan MQL5 Wizard:

Fig. 4. Membuat Expert Advisor Menggunakan MQL5 Wizard

Fig. 4. Membuat Expert Advisor Menggunakan MQL5 Wizard

Mari kita tentukan nama Expert Advisor:

Fig. 5. Properti umum Expert Advisor

Fig. 5. Properti umum Expert Advisor

Setelah itu, kita perlu memilih modul sinyal trading yang digunakan.

Fig. 6. Properti sinyal Expert Advisor

Fig. 6. Properti sinyal Expert Advisor

Dalam hal ini, kita hanya menggunakan satu modul sinyal trading.

Menambahkan modul Sinyal Berdasarkan Hammer/Hanging Man yang Dikonfirmasi oleh MFI:

Fig. 7. Properti sinyal Expert Advisor

Fig. 7. Properti sinyal Expert Advisor

Modul sinyal trading ditambahkan:

Fig. 8. Properti sinyal Expert Advisor

Fig. 8. Properti sinyal Expert Advisor

Kamu bisa memilih properti trailing apapun, tetapi kita akan menggunakan "Trailing Stop tidak digunakan":

Fig. 9. Properti trailing Expert Advisor

Fig. 9. Properti trailing Expert Advisor

Mengenai properti manajemen uang, kita akan menggunakan "Trading dengan volume trading tetap":

Fig. 10. Properti manajemen uang Expert Advisor

Fig. 10. Properti manajemen uang Expert Advisor

Dengan menekan tombol "Selesai", kita akan mendapatkan kode EA yang dihasilkan, yang berada di Expert_AH_HM_MFI.mq5, dan akan disimpan di terminal_data_folder\MQL5\Experts\.

Parameter input default dari Expert Advisor yang dihasilkan:

//--- input untuk sinyal utama
input int            Signal_ThresholdOpen   =10;     // Nilai threshold sinyal untuk membuka [0...100]
input int            Signal_ThresholdClose  =10;     // Nilai threshold sinyal untuk menutup [0...100]
input double         Signal_PriceLevel      =0.0;    // Tingkat harga untuk mengeksekusi transaksi
input double         Signal_StopLevel       =50.0;   // Tingkat Stop Loss (dalam poin)
input double         Signal_TakeLevel       =50.0// Tingkat Take Profit (dalam poin)

harus diganti menjadi:

//--- input untuk sinyal utama
input int            Signal_ThresholdOpen   =40;     // Nilai threshold sinyal untuk membuka [0...100]
input int            Signal_ThresholdClose  =20;     // Nilai threshold sinyal untuk menutup [0...100]
input double         Signal_PriceLevel      =0.0;    // Tingkat harga untuk mengeksekusi transaksi
input double         Signal_StopLevel       =0.0;    // Tingkat Stop Loss (dalam poin)
input double         Signal_TakeLevel       =0.0    // Tingkat Take Profit (dalam poin)

Parameter input Signal_ThresholdOpen/Signal_ThresholdClose memungkinkan untuk menentukan level threshold untuk membuka dan menutup posisi.

Dalam kode metode LongCondition() dan ShortCondition() dari kelas sinyal trading, kita telah menetapkan nilai tetap dari threshold:

  • Buka posisi: 80;
  • Tutup posisi: 40.

Expert Advisor yang dihasilkan oleh MQL5 Wizard membuka dan menutup posisi menggunakan "suara" dari modul sinyal trading. Suara dari modul utama (sebagai kontainer, terdiri dari semua modul yang ditambahkan) juga digunakan, tetapi metode LongCondition() dan ShortCondition() selalu mengembalikan 0.

Hasil suara dari modul utama juga digunakan dalam rata-rata "suara". Dalam kasus kita, terdapat modul utama + 1 modul sinyal trading, jadi kita perlu memperhitungkan fakta ini ketika mengatur nilai threshold. Oleh karena itu, ThresholdOpen dan ThresholdClose harus diatur menjadi 40=(0+80)/2 dan 20=(0+40)/2.

Nilai dari input parameter Signal_StopLevel dan Signal_TakeLevel diatur menjadi 0, yang berarti bahwa penutupan posisi hanya akan dilakukan ketika kondisi penutupan terpenuhi.


2.4. Hasil Backtesting Sejarah

Mari kita tinjau backtesting dari Expert Advisor pada data historis (EURUSD H1, periode pengujian: 2010.01.01-2011.03.16, PeriodMFI=47, MA_period=5).

Dalam pembuatan Expert Advisor, kita menggunakan volume tetap (Trading Fixed Lot, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan).

Fig. 11. Hasil pengujian Expert Advisor, berdasarkan Hammer/Hanging Man + MFI

Fig. 11. Hasil pengujian Expert Advisor, berdasarkan Hammer/Hanging Man + MFI


Set terbaik dari parameter input dapat ditemukan menggunakan Strategy Tester dari terminal klien MetaTrader 5.

Kode Expert Advisor yang dibuat oleh MQL5 Wizard terlampir dalam expert_ah_hm_mfi.mq5.


Postingan terkait

Komentar (0)