Kali ini kita akan coba melanjutkan tentang membuat EA sederhana yang sebelumnya sudah banyak saya bahas di post sebelumnya.
EA yang dibikin di posting ini telah saya becktest ternyata hasilnya termasuk lumayan untuk sebuah EA sederhana, ini imagenya:
Haaaaaa menarik kan!
Langsung saja kita EA tersebut rulenya sbb
Untuk buy
- Open candel 2 dibawah MA 2 dan close candel 2 diatas MA 2
- Open candel 1 diatas MA 1 dan close candel diatas MA 1
- Harga masih di atas MA1
Hal yang lain perlu ditambahkan adalah
- Jam trading
- SL dan TP bisa di atur 0
- Trailing yang bisa di atur
- TF suka2 ditadak ditentukan
1. TP dan SL supaya bisa di isi dengan 0
Pada EA sebelumnya bila TP dan SL diisi dengan 0 , maka akan error hal ini karena belum ada digunakan fasilitas untuk itu. Nah dalam supaya TP dan SL bisa diisi dengan 0 maka harus di buat variabel untuk mewakili pada harga TP maupun SL.
Untuk mudahnya harga pada Takeprofit buy saya buat ==> double tpb, untuk takeprofit sell==>double tps , harga pada stoploss buy==> double slb dan stoploss sell==> double sls.
terlebih dahulu dibuat deklarasi
double slb,tpb,sls,tps,pt;
dan membuat logikanya
if(SL==0)slb=0;else slb=Ask-SL*pt;
if(SL==0)sls=0;else sls=Bid+SL*pt;
if(TP==0)tpb=0;else tpb=Ask-SL*pt;
if(TP==0)tps=0;else tps=Bid+SL*pt;
OrderSend(Symbol(),OP_BUY,NR(Lots),Ask,3,slb, tpb,Nama_EA,Magic,0,Blue);
OrderSend(Symbol(),OP_SELL,NR(Lots),Bid,3,sls, tps,Nama_EA,Magic,0,Red);
2. TrailingUntuk membuat script trailing ada banyak cara , tapi pada trailing yang akan kita buat ini saya buat dengan fungsi untuk perintah dengan mnggunakan void
perhatikan
void dtrailing()
{
for(int i=0; i<OrdersTotal(); i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic ) continue;
if(OrderType()==OP_BUY) {
if(Bid-OrderOpenPrice()>pt*TrailingStop) {
if((OrderStopLoss()<Bid-pt*TrailingStop) || (OrderStopLoss()==0)) {
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-pt*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}
}
}
if(OrderType()==OP_SELL) {
if((OrderOpenPrice()-Ask)>(pt*TrailingStop)){
if(OrderStopLoss()>(Ask+pt*TrailingStop) || (OrderStopLoss()==0)){
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+pt*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
void digunakan sebagai fungsi trailing , sehingga dtrailing() harus dibuat di bawah int star()
3. Logika buy dan sell
sesuai rule diatas maka dibuat logika sbb:
double MA2 =iMA(Symbol(),0,Pereode,0,MODE_SMA,PRICE_CLOSE ,2);
double MA1 =iMA(Symbol(),0,Pereode,0,MODE_SMA,PRICE_CLOSE ,1);
int signal;
if(Open[2]<MA2 && Close[2]>MA2 && Open[1]>MA1 && Close[1]>MA1 && Ask>MA1) signal=1;// aturan buy
if(Open[2]>MA2 && Close[2]<MA2 && Open[1]<MA1 && Close[1]<MA1 && Bid<MA1) signal=2;//aturan sell
Nah logika diatas dibuat signal =1 berarti order buy dan bila signal=2 berarti order sellNah siahkan dilihat hasilnya dan menambah wawasan dari EA rule diatas
EA ini sebenarnya sudah termasuk bagus bisa digunakan sebagai bahan pembelajaranSilahkan di coba di becktes hasilnya cukup bagus untuk sebuah EA sederhana dan mungkin bisa di coba untuk di Fowardtes
dan bila ada yang belum jelas silahkan kasih komen!
//sudah dikoreksi ada sedikit kesalahan paste //
Semoga bermanfaat
Pastikan Membaca:
Tidak ada komentar:
Posting Komentar