Beranda Perdagangan Sistem Postingan

MQL5 Wizard: Membuat Expert Advisor dengan Sinyal Trading 3 Black Crows/3 White Soldiers dan MFI

Selamat datang di dunia trading yang menarik! Kali ini kita akan membahas tentang MQL5 Wizard, sebuah alat yang memungkinkan kita untuk membuat Expert Advisor (EA) siap pakai berdasarkan kelas dari Standard Library yang disediakan bersama terminal klien. Dengan MQL5 Wizard, kita bisa dengan cepat memeriksa ide trading kita, hanya dengan membuat kelas sinyal trading kita sendiri. Struktur kelas ini dan contohnya bisa kita lihat di artikel MQL5 Wizard: Cara Membuat Modul Sinyal Trading.

Ide umumnya adalah kelas sinyal trading yang diturunkan dari CExpertSignal. Selanjutnya, kita perlu mengganti metode virtual LongCondition() dan ShortCondition() dengan metode kita sendiri.

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

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 tulis kelas yang diturunkan dari CCandlePattern dan tambahkan fitur yang diperlukan (misalnya, konfirmasi oleh oscillator).

Di sini kita akan membahas sinyal yang didasarkan pada pola candlestick pembalikan "3 Black Crows/3 White Soldiers", yang dikonfirmasi oleh indikator Market Facilitation Index (MFI). Modul sinyal trading ini didasarkan pada kelas CCandlePattern, yang merupakan contoh sederhana penggunaannya untuk membuat sinyal trading dengan pola candlestick.


1. Pola Candlestick Pembalikan "3 Black Crows" dan "3 White Soldiers"

1.1. Pola "3 Black Crows"

Pola candlestick bearish yang digunakan untuk memprediksi pembalikan dari tren naik saat ini. Pola ini terdiri dari tiga candlestick bertubuh panjang berturut-turut yang ditutup lebih rendah dari hari sebelumnya, dengan setiap sesi dibuka di dalam tubuh candlestick sebelumnya.

Gambar 1. Pola Candlestick '3 Black Crows'

Gambar 1. Pola Candlestick '3 Black Crows'

Pengenalan pola "3 Black Crows" diimplementasikan dalam metode CheckPatternThreeBlackCrows dari kelas CCandlePattern:

//+------------------------------------------------------------------+
//| Memeriksa pembentukan pola candlestick "3 Black Crows"         |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternThreeBlackCrows()
  {
//--- 3 Black Crows 
   if((Open(3)-Close(3)>AvgBody(1)) && //(candlestick hitam panjang)

      (Open(2)-Close(2)>AvgBody(1)) &&

      (Open(1)-Close(1)>AvgBody(1)) &&

      (MidPoint(2)<MidPoint(3))     && // (midpoints lebih rendah)

      (MidPoint(1)<MidPoint(2)))      
      return(true);
//---
   return(false);
  }

Metode CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "3 Black Crows".


1.2. Pola Candlestick "3 White Soldiers"

Pola candlestick bullish yang digunakan untuk memprediksi pembalikan dari tren turun saat ini. Pola ini terdiri dari tiga candlestick bertubuh panjang yang ditutup lebih tinggi dari hari sebelumnya, dengan setiap sesi dibuka di dalam tubuh candlestick sebelumnya.

Pola ini valid selama candlestick hari kedua dibuka di setengah atas rentang hari pertama. Pada akhir hari kedua, harus ditutup mendekati puncaknya, menyisakan bayangan atas yang sangat kecil atau tidak ada sama sekali. Pola yang sama kemudian diulang pada hari ketiga.

Gambar 2. Pola Candlestick '3 White Soldiers'

Gambar 2. Pola Candlestick '3 White Soldiers'

Berikut adalah metode untuk pengenalan pola "3 White Soldiers":

//+------------------------------------------------------------------+
//| Memeriksa pembentukan pola candlestick "3 White Soldiers"      |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternThreeWhiteSoldiers()
  {
   //--- 3 White Soldiers
   if((Close(3)-Open(3)>AvgBody(1)) && // candlestick putih panjang
      (Close(2)-Open(2)>AvgBody(1)) &&
      (Close(1)-Open(1)>AvgBody(1)) &&
      (MidPoint(2)>MidPoint(3))     && // midpoints lebih tinggi
      (MidPoint(1)>MidPoint(2)))
      return(true);
//---
   return(false);
  }

Metode CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "3 White Soldiers".


2. Sinyal Trading yang Dikonfirmasi oleh Indikator MFI

Sinyal trading untuk membuka posisi long atau short harus dikonfirmasi oleh indikator MFI. Nilai indikator MFI harus lebih rendah dari 40 (untuk posisi long) atau lebih besar dari 60 (untuk posisi short).

Penutupan posisi yang dibuka bergantung pada nilai indikator MFI. Hal ini bisa dilakukan dalam 2 kasus:

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

Gambar 3. Pola '3 Black Crows', yang dikonfirmasi oleh indikator MFI

Gambar 3. Pola '3 Black Crows', yang dikonfirmasi oleh indikator MFI


  • int CBC_WS_MFI::LongCondition() - memeriksa kondisi untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40);
  • int CBC_WS_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 "3 White Soldiers" harus dikonfirmasi oleh indikator MFI: MFi(1)<40 (nilai indikator MFI dari bar yang telah selesai terakhir harus kurang dari 40).

  2. Posisi short harus ditutup jika indikator MFI telah melewati 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 CBC_WS_MFI::LongCondition()
  {
   int result=0;
//--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor
//--- idx=0 - dalam hal ini EA memeriksa kondisi perdagangan pada setiap tick
//--- idx=1 - dalam hal ini EA memeriksa kondisi perdagangan hanya pada bar berita
  int idx   =StartIndex();
//--- memeriksa kondisi untuk membuka posisi long
//--- pembentukan pola 3 White Soldiers dan MFI<40
  if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (MFI(1)<40))
     result=80;
//--- memeriksa kondisi untuk menutup posisi short
//--- crossover 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 "3 Black Crows" harus dikonfirmasi oleh indikator MFI: MFI(1)>60 (nilai indikator MFI dari bar yang telah selesai terakhir harus lebih besar dari 60).

  2. Posisi long harus ditutup jika indikator MFI telah melewati 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 CBC_WS_MFI::ShortCondition()
  {
   int result=0;
//--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor
//--- idx=0 - dalam hal ini EA memeriksa kondisi perdagangan pada setiap tick
//--- idx=1 - dalam hal ini EA memeriksa kondisi perdagangan hanya pada bar berita
  int idx   =StartIndex();
//--- memeriksa kondisi untuk membuka posisi short
//--- pembentukan pola 3 Black Crows dan MFI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (MFI(1)>60))
     result=80;
//--- memeriksa kondisi untuk menutup posisi long
//--- crossover 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 CBC_WS_MFI tidak termasuk dalam kelas Standard Library, untuk menggunakannya, perlu mengunduh file abc_ws_mfi.mqh (lihat lampiran) dan menyimpannya di folder terminal_klien_data\MQL5\Include\Expert\Signal\MySignals. Hal yang sama juga harus dilakukan dengan file acandlepatterns.mqh. Anda dapat menggunakannya di MQL5 Wizard setelah me-restart MetaEditor.

Untuk membuat Expert Advisor, luncurkan MQL5 Wizard:

Gambar 4. Membuat Expert Advisor Menggunakan MQL5 Wizard

Gambar 4. Membuat Expert Advisor Menggunakan MQL5 Wizard

Mari kita tentukan nama Expert Advisor:

Gambar 5. Properti Umum dari Expert Advisor

Gambar 5. Properti Umum dari Expert Advisor

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

Gambar 6. Properti Sinyal dari Expert Advisor

Gambar 6. Properti Sinyal dari Expert Advisor

Dalam kasus kita, kita hanya menggunakan satu modul sinyal trading.

Menambahkan modul Sinyal berdasarkan 3 Black Crows/3 White Soldiers yang dikonfirmasi oleh MFI:

Gambar 7. Properti Sinyal dari Expert Advisor

Gambar 7. Properti Sinyal dari Expert Advisor

Modul sinyal trading telah ditambahkan:

Gambar 8. Properti Sinyal dari Expert Advisor

Gambar 8. Properti Sinyal dari Expert Advisor

Anda dapat memilih properti trailing apa pun, tetapi kita akan menggunakan "Trailing Stop tidak digunakan":

Gambar 9. Properti Trailing dari Expert Advisor

Gambar 9. Properti Trailing dari Expert Advisor

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

Gambar 10. Properti Manajemen Uang dari Expert Advisor

Gambar 10. Properti Manajemen Uang dari Expert Advisor

Dengan menekan tombol "Selesai", kita akan mendapatkan kode dari Expert Advisor yang dihasilkan, yang terletak di Expert_ABC_WS_MFI.mq5, yang 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 ambang sinyal untuk membuka [0...100]
input int            Signal_ThresholdClose  =10;     // Nilai ambang sinyal untuk menutup [0...100]
input double         Signal_PriceLevel      =0.0;    // Level harga untuk mengeksekusi transaksi
input double         Signal_StopLevel       =50.0;   // Level Stop Loss (dalam poin)
input double         Signal_TakeLevel       =50.0    // Level Take Profit (dalam poin)

harus diganti menjadi:

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

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

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

  • Membuka posisi: 80;
  • Menutup posisi: 40.

Expert Advisor yang dihasilkan oleh MQL5 Wizard membuka dan menutup posisi menggunakan "suara" dari modul sinyal trading. Suara dari modul utama (sebagai wadah, 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, kita memiliki: modul utama + 1 modul sinyal trading, jadi kita perlu mempertimbangkan fakta ini saat mengatur nilai ambang. Karena fakta ini, ThresholdOpen dan ThresholdClose harus diatur sebagai 40=(0+80)/2 dan 20=(0+40)/2.

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


2.4. Hasil Backtesting Historis

Kita akan mempertimbangkan backtesting dari Expert Advisor pada data historis (EURUSD H1, periode pengujian: 2010.01.01-2011.03.16, PeriodMFI=37, MA_period=13).

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

Gambar 11. Hasil Pengujian Expert Advisor, berdasarkan 3 Black Crows/3 White Soldiers + MFI

Gambar 11. Hasil Pengujian Expert Advisor, berdasarkan 3 Black Crows/3 White Soldiers + MFI


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

Kode dari Expert Advisor yang dibuat oleh MQL5 Wizard terlampir di expert_abc_ws_mfi.mq5.


Postingan terkait

Komentar (0)