MQL5 Wizard: Signal Perdagangan Berdasarkan Corak Candlestick Pembalikan

Mike 2011.01.20 22:45 17 0 0
Lampiran

MQL5 Wizard membolehkan anda mencipta Robot Perdagangan (EA) secara automatik tanpa perlu menulis kod. Untuk maklumat lanjut, anda boleh rujuk artikel MQL5 Wizard: Membuat Robot Perdagangan Tanpa Pengaturcaraan.

Kelas CSignalCandles memberikan isyarat perdagangan berdasarkan corak candlestick pembalikan. Strategi ini dikenali sebagai "Isyarat Berdasarkan Corak Candlestick Pembalikan" ketika mencipta EA secara automatik dalam MQL5 Wizard.

Idea sistem ini adalah untuk mengenal pasti corak pembalikan dengan mengira candlestick komposit. Corak pembalikan ini serupa dengan corak "Hammer" dan "Hanging Man" dalam analisis candlestick Jepun. Namun, ia menggunakan candlestick komposit dan tidak memerlukan badan kecil untuk mengesahkan pembalikan.

Parameter input:

  • Range - jumlah maksimum bar yang digunakan dalam pengiraan candlestick komposit.
  • Minimum - saiz minimum candlestick komposit (dalam titik konvensional).
  • ShadowBig dan ShadowSmall - bayang (dalam unit candlestick komposit).
  • Limit, StopLoss dan TakeProfit - harga buka, tahap SL dan TP, nilai yang ditentukan berbanding harga tutup candlestick komposit (unit candlestick komposit).
  • Expiration - waktu tamat pesanan (dalam bar), digunakan dalam perdagangan dengan pesanan tertunda (Limit!=0.0).

Corak candlestick pembalikan ditentukan seperti berikut:

Ia mengira parameter candlestick komposit bermula dari bar yang telah diselesaikan baru-baru ini (dengan indeks 1) hingga jumlah bar yang ditentukan oleh parameter input Range. Jika saiz candlestick komposit lebih besar daripada nilai yang ditentukan oleh parameter input Minimum, ia memeriksa syarat pembalikan berdasarkan analisis bayangnya.

Kekuatan beruang ditandakan oleh saiz bayang atas candlestick komposit, manakala kekuatan lembu ditandakan oleh saiz bayang bawah.

  • Untuk mengesahkan pembalikan arah aliran menurun (dan permulaan arah aliran menaik) adalah perlu: saiz bayang bawah (kekuatan lembu) mesti lebih besar daripada nilai yang ditentukan oleh parameter input ShadowBig. Saiz bayang atas (kekuatan beruang) mesti kurang daripada nilai yang ditentukan oleh parameter input ShadowSmall.
  • Untuk mengesahkan pembalikan arah aliran menaik (dan permulaan arah aliran menurun) adalah perlu: saiz bayang atas (kekuatan beruang) mesti lebih besar daripada nilai yang ditentukan oleh parameter input ShadowBig. Saiz bayang bawah (kekuatan lembu) mesti kurang daripada nilai yang ditentukan oleh parameter input ShadowSmall.

Selain strategi pembalikan, anda juga boleh menggunakan strategi pecahan dengan menentukan nilai negatif bagi parameter input Limit (lihat MQL5 Wizard - Isyarat Perdagangan Berdasarkan Persilangan Dua EMA dengan penapis masa intraday).

Bergantung kepada Limit, terdapat tiga cara berbeza untuk memasuki pasaran:

  1. Limit>0. Ia akan memasuki pergerakan belakang pada harga, lebih baik daripada harga pasaran (Pesanan Beli Limit atau Jual Limit akan diletakkan bergantung kepada isyarat perdagangan)
  2. Limit<0. Ia akan memasuki arah pergerakan harga (Pesanan Beli Stop atau Jual Stop akan digunakan bergantung kepada isyarat perdagangan).
  3. Limit=0. Ia akan berdagang menggunakan harga pasaran.

Strategi ini dilaksanakan dalam kelas CSignalCandles.

Rajah 1. Isyarat perdagangan, berdasarkan corak candlestick pembalikan

Rajah 1. Isyarat perdagangan, berdasarkan corak candlestick pembalikan


Isyarat Perdagangan

Isyarat perdagangan dilaksanakan dalam kelas CSignalCandles, terdapat fungsi Candle() yang digunakan untuk analisis:

int  Candle(int ind); // Mengembalikan nombor positif/negatif bergantung pada jenis candlestick komposit
                        // nilai yang dikembalikan adalah bilangan bar dalam candlestick komposit (bermula dari ind)

Beberapa candlestick (bar) boleh digunakan dalam pembentukan candlestick komposit. Bilangan minimum bar ditentukan oleh parameter Range. Dalam beberapa kes, candlestick komposit boleh dibentuk dengan candlestick kurang daripada Range (apabila syarat saiz/bayang dipenuhi). Fungsi Candle mengembalikan 0 jika candlestick komposit tidak dapat dibentuk.


1. Membuka posisi buy

Untuk membuka posisi buy, candlestick komposit bullish diperlukan. Fungsi ini memeriksa dan mengembalikan jika candlestick komposit belum terbentuk atau candlestick komposit adalah bearish. Sekiranya tidak, ia mengira saiz candlestick komposit (diperlukan untuk pengiraan harga, SL dan TP) dan mengira tahap harga untuk pesanan tertunda.

Perhatikan, jenis pesanan tertunda (Beli Limit atau Beli Stop) bergantung kepada tandaan parameter input Limit (jika Limit=0 atau |harga-ask|< tahap stops, ia akan meletakkan pesanan beli pasaran, jika Limit>0, ia akan meletakkan pesanan Beli Limit tertunda, jika Limit<0, pesanan Beli Stop tertunda akan diletakkan).

//+------------------------------------------------------------------+
//| Memeriksa syarat untuk membuka posisi buy               |
//+------------------------------------------------------------------+
bool CSignalCandles::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
//--- periksa fakta pembentukan candlestick komposit bullish 
   if(Candle(1)<=0) return(false);
//--- dapatkan saiz candlestick komposit
   double size=m_high_composite-m_low_composite;
//--- kira harga pesanan tertunda
   price=m_symbol.NormalizePrice(m_symbol.Ask()-m_limit*size);
//--- kira harga Stop Loss
   sl   =m_symbol.NormalizePrice(price-m_stop_loss*size);
//--- kira harga Take Profit
   tp   =m_symbol.NormalizePrice(price+m_take_profit*size);
//--- set waktu tamat pesanan
   expiration+=m_expiration*PeriodSeconds(m_period);
//--- syarat dipenuhi, kembalikan true
   return(true);
  }

2. Menutup posisi buy

Jika candlestick komposit bearish telah terbentuk, posisi buy ditutup.

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


3. Membuka posisi sell

Candlestick komposit bearish mesti terbentuk untuk membuka posisi sell. Jika candlestick komposit belum terbentuk, atau ia bukan bearish, kembalikan. Sebaliknya, kita menentukan saiznya dan mengira tahap harga pesanan tertunda.

(jenis pesanan bergantung pada tandaan parameter input Limit, lihat "Membuka posisi buy").

//+------------------------------------------------------------------+
//| Memeriksa syarat untuk membuka posisi sell                        |
//+------------------------------------------------------------------+
bool CSignalCandles::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
//--- periksa fakta pembentukan candlestick komposit bearish 
   if(Candle(1)>=0) return(false);
//--- dapatkan saiz candlestick komposit
   double size=m_high_composite-m_low_composite;
//--- kira harga pesanan tertunda
   price=m_symbol.NormalizePrice(m_symbol.Bid()+m_limit*size);
//--- kira harga Stop Loss
   sl   =m_symbol.NormalizePrice(price+m_stop_loss*size);
//--- kira harga Take Profit
   tp   =m_symbol.NormalizePrice(price-m_take_profit*size);
//--- set waktu tamat pesanan
   expiration+=m_expiration*PeriodSeconds(m_period);
//--- syarat dipenuhi, kembalikan true
   return(true);
  }


4. Menutup posisi sell

Jika candlestick komposit bullish telah terbentuk, posisi sell ditutup.

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

Membuat EA Menggunakan MQL5 Wizard

Untuk mencipta robot perdagangan berdasarkan strategi ini, anda perlu memilih sifat isyarat sebagai "Isyarat Berdasarkan Corak Candlestick Pembalikan" dalam pilihan "Membuat EA Sedia Ada" dalam MQL5 Wizard:

Rajah 2. Pilih isyarat berdasarkan corak candlestick pembalikan dalam MQL5 Wizard

Rajah 2. Pilih isyarat berdasarkan corak candlestick pembalikan dalam MQL5 Wizard

Seterusnya, anda perlu menentukan algoritma trailing stop yang diperlukan dan sistem pengurusan wang dan risiko. Kod EA akan dihasilkan secara automatik, anda boleh mengkompilasi dan mengujinya dalam Strategy Tester terminal klien MetaTrader 5.


Keputusan Ujian

Mari kita pertimbangkan backtesting EA pada data sejarah (EURUSD M15, tempoh ujian: 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 penciptaan EA, kami menggunakan volum tetap (Trading Fixed Lot, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan).

Rajah 3. Keputusan Ujian EA dengan isyarat perdagangan, berdasarkan corak candlestick pembalikan

Rajah 3. Keputusan Ujian EA dengan isyarat perdagangan, berdasarkan corak candlestick pembalikan


Pautan Lampiran: Fail SignalCandles.mqh dengan kelas CSignalCandles mesti diletakkan di folder terminal_data_folder\MQL5\Include\Expert\Signal.

Fail expert_candles.mq5 mengandungi kod EA yang dihasilkan menggunakan MQL5 Wizard.


Senarai
Komen 0