MQL5 Wizard: Membuat Sinyal Trading Berdasarkan Pola Candlestick Pembalikan

Mike 2011.01.20 22:45 16 0 0
Lampiran

MQL5 Wizard memungkinkan kamu untuk membuat Expert Advisor secara otomatis (lihat MQL5 Wizard: Membuat Expert Advisors Tanpa Pemrograman).

Kelas CSignalCandles menyediakan sinyal trading berdasarkan pola candlestick pembalikan. Strategi ini disebut "Sinyal Berdasarkan Pola Candlestick Pembalikan" ketika membuat EA secara otomatis di MQL5 Wizard.

Ide dari sistem ini adalah mengidentifikasi pola pembalikan menggunakan perhitungan dari candlestick komposit. Pola pembalikan ini mirip dengan pola "Hammer" dan "Hanging Man" dalam analisis candlestick Jepang. Namun, sistem ini menggunakan candlestick komposit alih-alih candlestick tunggal dan tidak memerlukan tubuh kecil dari candlestick komposit untuk mengkonfirmasi pembalikan.

Parameter input:

  • Range - jumlah maksimal bar yang digunakan dalam perhitungan candlestick komposit.
  • Minimum - ukuran minimal dari candlestick komposit (dalam poin konvensional).
  • ShadowBig dan ShadowSmall - bayangan (dalam unit candlestick komposit).
  • Limit, StopLoss, dan TakeProfit - harga pembukaan, level SL, dan TP, nilai yang ditentukan relatif terhadap harga penutupan candlestick komposit (unit candlestick komposit).
  • Expiration - waktu kadaluarsa order (dalam bar), digunakan dalam trading dengan pending order (Limit!=0.0).

Pola candlestick pembalikan ditentukan sebagai berikut.

Sistem ini menghitung parameter candlestick komposit mulai dari bar yang baru selesai (dengan indeks 1) hingga jumlah bar yang ditentukan oleh parameter input Range. Jika ukuran candlestick komposit lebih besar dari nilai yang ditentukan oleh parameter input Minimum, maka sistem memeriksa kondisi pembalikan dari candlestick komposit dengan menganalisis bayangannya.

Kekuatan bearish ditandai oleh ukuran bayangan atas dari candlestick komposit, sedangkan kekuatan bullish ditandai oleh ukuran bayangan bawah.

  • Untuk mengkonfirmasi pembalikan tren bearish (dan awal tren bullish), diperlukan hal berikut: ukuran bayangan bawah (kekuatan bullish) harus lebih besar dari nilai yang ditentukan oleh parameter input ShadowBig. Ukuran bayangan atas (kekuatan bearish) harus lebih kecil dari nilai yang ditentukan oleh parameter input ShadowSmall.
  • Untuk mengkonfirmasi pembalikan tren bullish (dan awal tren bearish), diperlukan hal berikut: ukuran bayangan atas (kekuatan bearish) harus lebih besar dari nilai yang ditentukan oleh parameter input ShadowBig. Ukuran bayangan bawah (kekuatan bullish) harus lebih kecil dari nilai yang ditentukan oleh parameter input ShadowSmall.

Selain strategi pembalikan, kamu juga dapat menggunakan strategi breakout dengan menentukan nilai negatif dari parameter input Limit (lihat MQL5 Wizard - Sinyal Trading Berdasarkan Persilangan Dua EMA dengan filter waktu intraday).

Bergantung pada Limit, ada tiga cara yang berbeda untuk masuk ke pasar:

  1. Limit>0. Ini akan masuk pada gerakan balik harga, lebih baik dari harga pasar (Pending order Buy Limit atau Sell Limit akan ditempatkan tergantung pada sinyal trading).
  2. Limit<0. Ini akan masuk dalam arah gerakan harga (Pending order Buy Stop atau Sell Stop akan digunakan tergantung pada sinyal trading).
  3. Limit=0. Ini akan trading menggunakan harga pasar.

Strategi ini diimplementasikan dalam kelas CSignalCandles.

Gambar 1. Sinyal trading, berdasarkan pola candlestick pembalikan

Gambar 1. Sinyal trading, berdasarkan pola candlestick pembalikan


Sinyal Trading

Sinyal trading diimplementasikan dalam kelas CSignalCandles, terdapat fungsi Candle() yang digunakan untuk analisis:

int  Candle(int ind); // Mengembalikan angka positif/negatif tergantung pada jenis candlestick komposit // nilai yang dikembalikan adalah jumlah bar (candlestick) dalam candlestick komposit (dimulai dari ind)

Beberapa candlestick (bar) dapat digunakan dalam konstruksi candlestick komposit. Jumlah minimal bar ditentukan oleh parameter Range. Dalam beberapa kasus, candlestick komposit dapat terbentuk dengan candlestick yang kurang dari Range (ketika kondisi ukuran/bayang terpenuhi). Fungsi Candle mengembalikan 0 jika candlestick komposit tidak dapat dibentuk.


1. Membuka posisi long

Untuk membuka posisi long, diperlukan candlestick komposit bullish. Fungsi ini memeriksa dan mengembalikan jika candlestick komposit belum terbentuk atau candlestick komposit bearish. Sebaliknya, sistem menghitung ukuran candlestick komposit (yang diperlukan untuk perhitungan harga, SL, dan TP) dan menghitung level harga untuk pending order.

Perlu diperhatikan bahwa jenis pending order (Buy Limit atau Buy Stop) tergantung pada tanda dari parameter input Limit (jika Limit=0 atau |harga-ask|<level stop, maka akan ditempatkan order beli pasar, jika Limit>0, maka akan ditempatkan pending order Buy Limit, jika Limit<0, maka akan ditempatkan pending order Buy Stop).

//+------------------------------------------------------------------+ //| Memeriksa kondisi untuk membuka posisi long (beli)                    | //+------------------------------------------------------------------+ bool CSignalCandles::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)   { //--- periksa fakta pembentukan candlestick komposit bullish    if(Candle(1)<=0) return(false); //--- dapatkan ukuran dari candlestick komposit    double size=m_high_composite-m_low_composite; //--- hitung harga untuk pending order    price=m_symbol.NormalizePrice(m_symbol.Ask()-m_limit*size); //--- hitung harga Stop Loss    sl   =m_symbol.NormalizePrice(price-m_stop_loss*size); //--- hitung harga Take Profit    tp   =m_symbol.NormalizePrice(price+m_take_profit*size); //--- set waktu kadaluarsa order    expiration+=m_expiration*PeriodSeconds(m_period); //--- jika kondisi terpenuhi, kembalikan true    return(true);   }

2. Menutup posisi long

Jika candlestick komposit bearish telah terbentuk, posisi long ditutup.

//+------------------------------------------------------------------+ //| Memeriksa kondisi untuk menutup posisi long                         |//+------------------------------------------------------------------+ bool CSignalCandles::CheckCloseLong(double& price)   { //--- periksa fakta pembentukan candlestick komposit bearish    if(Candle(1)>=0) return(false); //---    price=0.0; //--- jika kondisi terpenuhi, kembalikan true    return(true);   }


3. Membuka posisi short

Candlestick komposit bearish harus terbentuk untuk membuka posisi short. Jika candlestick komposit belum terbentuk atau tidak bearish, sistem akan mengembalikan. Sebaliknya, kita tentukan ukurannya dan menghitung level harga untuk pending order

(jenis order tergantung pada tanda dari parameter input Limit, lihat "Membuka posisi long").

//+------------------------------------------------------------------+ //| Memeriksa kondisi untuk membuka posisi short (jual)                  | //+------------------------------------------------------------------+ bool CSignalCandles::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)   { //--- periksa fakta pembentukan candlestick komposit bearish    if(Candle(1)>=0) return(false); //--- dapatkan ukuran dari candlestick komposit    double size=m_high_composite-m_low_composite; //--- hitung harga untuk pending order    price=m_symbol.NormalizePrice(m_symbol.Bid()+m_limit*size); //--- hitung harga Stop Loss    sl   =m_symbol.NormalizePrice(price+m_stop_loss*size); //--- hitung harga Take Profit    tp   =m_symbol.NormalizePrice(price-m_take_profit*size); //--- set waktu kadaluarsa order    expiration+=m_expiration*PeriodSeconds(m_period); //--- jika kondisi terpenuhi, kembalikan true    return(true);   }


4. Menutup posisi short

Jika candlestick komposit bullish telah terbentuk, posisi short ditutup.

//+------------------------------------------------------------------+ //| Memeriksa kondisi untuk menutup posisi short                        |//+------------------------------------------------------------------+ bool CSignalCandles::CheckCloseShort(double& price)   { //--- periksa fakta pembentukan candlestick komposit bullish    if(Candle(1)<=0) return(false); //---    price=0.0; //--- jika kondisi terpenuhi, kembalikan true    return(true);   }

Membuat Expert Advisor Menggunakan MQL5 Wizard

Untuk membuat robot trading berdasarkan strategi ini, kamu perlu memilih properti sinyal sebagai "Sinyal Berdasarkan Pola Candlestick Pembalikan" dalam opsi MQL5 Wizard:

Gambar 2. Pilih 'sinyal berdasarkan pola candlestick pembalikan' di MQL5 Wizard

Gambar 2. Pilih 'Sinyal Berdasarkan Pola Candlestick Pembalikan' di MQL5 Wizard

Selanjutnya, kamu harus menentukan algoritma trailing stop yang diperlukan dan sistem manajemen uang dan risiko. Kode dari Expert Advisor akan dibuat secara otomatis, kamu dapat mengkompilasinya dan mengujinya di Strategy Tester dari terminal klien MetaTrader 5.


Hasil Pengujian

Mari kita pertimbangkan backtesting dari Expert Advisor pada data historis (EURUSD M15, periode pengujian: 1.1.2010-05.01.2011, Range=3, Minimum=50, ShadowBig=0.5, ShadowSmall=0.2, Limit=0, StopLoss=2.0, TakeProfit=1.0, Expiration=4).

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

Gambar 3. Hasil Pengujian Expert Advisor dengan sinyal trading berdasarkan pola candlestick pembalikan

Gambar 3. Hasil Pengujian Expert Advisor dengan sinyal trading berdasarkan pola candlestick pembalikan


Lampiran: File SignalCandles.mqh yang berisi kelas CSignalCandles harus diletakkan di folder terminal_data_folder\MQL5\Include\Expert\Signal.

File expert_candles.mq5 mengandung kode dari Expert Advisor, yang dibuat menggunakan MQL5 Wizard.


Daftar
Komentar 0