Beranda Perdagangan Sistem Postingan

MQL5 Wizard: Menggunakan Sinyal Trading Berbasis Morning/Evening Stars dan RSI untuk MetaTrader 5

Lampiran
324.zip (6.47 KB, Unduh 2 kali)

Selamat datang di dunia trading! Hari ini kita akan membahas tentang MQL5 Wizard, alat yang memungkinkan kita untuk membuat Expert Advisor (EA) siap pakai dengan memanfaatkan kelas-kelas dari Standard Library yang disediakan oleh terminal klien MetaTrader.

Dengan MQL5 Wizard, kita bisa mengecek ide trading dengan cepat. Yang kita butuhkan hanyalah membuat kelas sinyal trading kita sendiri. Struktur kelas ini serta contoh penggunaannya dapat ditemukan di artikel MQL5 Wizard: Cara Membuat Modul Sinyal Trading.

Inti dari proses ini adalah bahwa kelas sinyal trading diturunkan dari CExpertSignal. Selanjutnya, kita perlu menimpa metode virtual LongCondition() dan ShortCondition() dengan metode kita sendiri.

Ada sebuah buku menarik berjudul "Strategi Para Trader Terbaik" (dalam bahasa Rusia) yang membahas berbagai strategi trading. Namun, kita akan fokus pada pola candlestick pembalikan, yang dikonfirmasi oleh indikator seperti Stochastic, CCI, MFI, dan RSI.

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

Kita akan membahas sinyal yang didasarkan pada pola candlestick "Morning Star/Evening Star" (Morning Doji Star/Evening Doji Star) yang dikonfirmasi oleh indikator RSI. Modul sinyal trading ini berdasarkan kelas CCandlePattern, dan ini adalah contoh sederhana penggunaannya untuk membuat sinyal trading dengan pola candlestick.

1. Pola Candlestick Pembalikan "Morning Star" dan "Evening Star"

1.1. Morning Star

Pola ini menunjukkan pembalikan dari tren turun, terdiri dari tiga candlestick (Gambar 1). Setelah candlestick hitam panjang, muncul candlestick kedua (warna tidak penting) dengan tubuh kecil yang berada di luar tubuh candlestick hitam. Tubuh kecil ini menunjukkan bahwa kekuatan bull dan bear seimbang, dan pasar siap untuk berbalik arah.

Candlestick ketiga dalam pola ini adalah candlestick bullish, yang tidak tumpang tindih dengan tubuh candlestick kedua, dan harga penutupan berada di dalam tubuh candlestick pertama (bearish). Candlestick yang dihasilkan dari model ini juga terlihat pada Gambar 1.

Jika candlestick kedua mirip doji, maka pola ini disebut "Morning Doji Star".

Gambar 1. Pola candlestick 'Morning Star' dan 'Morning Doji Star'

Gambar 1. Pola candlestick "Morning Star" dan "Morning Doji Star".

Identifikasi pola "Morning Star" dilakukan di metode CheckPatternMorningStar() dan CheckPatternMorningDoji() dari kelas CCandlePattern:

//+------------------------------------------------------------------+
//| Memeriksa pembentukan pola "Morning Star"                     |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternMorningStar()
  {
//--- Morning Star
   if((Open(3)-Close(3)>AvgBody(1))             && // candlestick bearish, tubuhnya lebih besar dari rata-rata tubuh
      (MathAbs(Close(2)-Open(2)<AvgBody(1)*0.5) && // candlestick kedua memiliki tubuh kecil (kurang dari setengah rata-rata)
      (Close(2)<Close(3))                       && // penutupan candlestick kedua lebih rendah dari penutupan candlestick pertama.

Metode CheckCandlestickPattern(CANDLE_PATTERN_MORNING_STAR) dan CheckCandlestickPattern(CANDLE_PATTERN_MORNING_DOJI) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "Morning Star" dan "Morning Doji Star".

1.2. Evening Star

Pola ini menunjukkan pembalikan dari tren naik, juga terdiri dari tiga candlestick (Gambar 2). Setelah candlestick putih panjang, muncul candlestick kedua (warna tidak penting) dengan tubuh kecil yang berada di luar tubuh candlestick putih. Tubuh kecil ini menunjukkan bahwa kekuatan bull dan bear seimbang, dan pasar siap untuk berbalik arah.

Candlestick ketiga dalam pola ini adalah candlestick bearish, yang tidak tumpang tindih dengan tubuh candlestick kedua, dan harga penutupan berada di dalam tubuh candlestick pertama (bullish). Candlestick yang dihasilkan dari model ini juga terlihat pada Gambar 2.

Jika candlestick kedua mirip doji, maka pola ini disebut "Evening Doji Star".

Gambar 2. Pola candlestick 'Evening Star' dan 'Evening Doji Star'

Gambar 2. Pola candlestick "Evening Star" dan "Evening Doji Star".

Berikut adalah metode untuk mengidentifikasi pola "Evening Star" dan "Evening Doji Star":

//+------------------------------------------------------------------+
//| Memeriksa pembentukan pola "Evening Star"                    |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternEveningStar()
  {
//--- Evening Star
   if((Close(3)-Open(3)>AvgBody(1))             && // candlestick bullish dengan tubuh lebih tinggi dari rata-rata
      (MathAbs(Close(2)-Open(2)<AvgBody(1)*0.5) && // candlestick kedua memiliki tubuh kecil (kurang dari setengah rata-rata)
      (Close(2)>Close(3))                       && // penutupan candlestick kedua lebih tinggi dari penutupan candlestick pertama

Metode CheckCandlestickPattern(CANDLE_PATTERN_EVENING_STAR) dan CheckCandlestickPattern(CANDLE_PATTERN_EVENING_DOJI) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "Evening Star" dan "Evening Doji Star".

2. Sinyal Trading, Dikonfirmasi oleh Indikator RSI

Sinyal trading untuk membuka posisi long atau short harus dikonfirmasi oleh indikator RSI. Nilai RSI harus kurang dari/lebih dari level kritis (40 untuk posisi long dan 60 untuk posisi short).

Penutupan posisi yang dibuka bergantung pada nilai RSI. Ini dapat dilakukan dalam 2 kasus:

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

Gambar 3. Pola 'Morning Star', Dikonfirmasi oleh Indikator RSI

Gambar 3. Pola "Morning Star", dikonfirmasi oleh indikator RSI.

  • int CMS_ES_RSI::LongCondition() - memeriksa kondisi untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40);
  • int CMS_ES_RSI::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 "Morning Star" harus dikonfirmasi oleh indikator RSI:
    RSI(1)<40 (nilai RSI dari bar yang terakhir diselesaikan harus kurang dari 40).

  2. Posisi short harus ditutup jika indikator RSI telah melintasi ke atas level kritis 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 CMS_ES_RSI::LongCondition()
  {
   int result=0;
//--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor
//--- idx=0 - dalam hal ini EA memeriksa kondisi trading di setiap tick
//--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya pada bar berita
  int idx   =StartIndex();
//--- pemeriksaan kondisi untuk membuka posisi long
//--- pembentukan pola Morning Star dan RSI<30
  if(CheckCandlestickPattern(CANDLE_PATTERN_MORNING_STAR) && (RSI(1)<40))
     result=80;
//--- pemeriksaan kondisi untuk menutup posisi short
//--- sinyal garis melintasi level overbought/oversold (ke atas 30, ke atas 70)
  if(((RSI(1)>30) && (RSI(2)<30)) || ((RSI(1)>70) && (RSI(2)<70)))
     result=40;
//--- mengembalikan hasil
   return(result);
  }


2.2. Membuka posisi short/Menutup posisi long

  1. Pembentukan pola "Evening Star" harus dikonfirmasi oleh indikator RSI: RSI(1)>60 (nilai dari indikator RSI harus lebih besar dari 60).

  2. Posisi long harus ditutup jika indikator RSI telah melintasi ke bawah level kritis 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 CMS_ES_RSI::ShortCondition()
  {
   int result=0;
//--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor
//--- idx=0 - dalam hal ini EA memeriksa kondisi trading di setiap tick
//--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya pada bar berita
  int idx   =StartIndex();
//--- pemeriksaan kondisi untuk membuka posisi short
//--- pembentukan pola Evening Star dan RSI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_EVENING_STAR) && (RSI(1)>60))
     result=80;
//--- pemeriksaan kondisi untuk menutup posisi long
//--- sinyal garis melintasi level overbought/oversold (ke bawah 70, ke bawah 30)
  if(((RSI(1)<70) && (RSI(2)>70)) || ((RSI(1)<30) && (RSI(2)>30)))
     result=40;
//--- mengembalikan hasil
   return(result);
  }



2.3. Membuat Expert Advisor Menggunakan MQL5 Wizard

Kelas CMS_ES_RSI tidak termasuk dalam kelas Standard Library, untuk menggunakannya, kita perlu mengunduh file acms_es_rsi.mqh (lihat lampiran) dan menyimpannya di folder client_terminal_data_folder\MQL5\Include\Expert\Signal\MySignals. Hal yang sama juga berlaku untuk file candlepatterns.mqh. Kita dapat menggunakannya di MQL5 Wizard setelah me-restart MetaEditor.

Untuk membuat Expert Advisor, jalankan 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 Expert Advisor

Gambar 6. Properti Sinyal Expert Advisor

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

Menambahkan modul Sinyal Berdasarkan Morning/Evening Stars yang Dikonfirmasi oleh RSI:

Gambar 7. Properti Sinyal Expert Advisor

Gambar 7. Properti Sinyal Expert Advisor

Modul sinyal trading telah ditambahkan:

Gambar 8. Properti Sinyal Expert Advisor

Gambar 8. Properti Sinyal 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 "Finish", kita akan mendapatkan kode dari Expert Advisor yang dihasilkan, yang terletak di Expert_AMS_ES_RSI.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;    // 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 threshold sinyal untuk membuka [0...100]
input int            Signal_ThresholdClose  =20;     // Nilai threshold 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 kita untuk menentukan level threshold untuk membuka dan menutup posisi.

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

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

Expert Advisor yang dihasilkan oleh MQL5 Wizard membuka dan menutup posisi dengan 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() dari modul utama 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 memperhitungkan hal ini saat menetapkan nilai threshold. 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 terpenuhi.


2.4. Hasil Backtesting Sejarah

Mari kita pertimbangkan backtesting dari Expert Advisor pada data historis (EURUSD H1, periode pengujian: 2010.01.01-2011.03.04, PeriodK=47, PeriodD=9, PeriodSlow=13, MA_period=5).

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

Gambar 11. Hasil Pengujian Expert Advisor, Berdasarkan Morning/Evening Stars + RSI

Gambar 11. Hasil Pengujian Expert Advisor, Berdasarkan Morning/Evening Stars + RSI


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

Pemelajaran parameter sangat disederhanakan dengan menggunakan mode Visualisasi 3D dari Strategy Tester, yang ditambahkan mulai dari build 419 (Gambar 12):

Gambar 12. Saldo sebagai fungsi dari parameter input PeriodRSI dan MA_period.

Gambar 12. Saldo sebagai fungsi dari parameter input PeriodRSI dan MA_period

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


Postingan terkait

Komentar (0)