Belajar Ea Sampai Mahir [PDF]

  • 0 0 0
  • Suka dengan makalah ini dan mengunduhnya? Anda bisa menerbitkan file PDF Anda sendiri secara online secara gratis dalam beberapa menit saja! Sign Up
File loading please wait...
Citation preview

MQL4 Kali ini di sela2 nganggur nunggu Adzan beduk heeeeeeeeeeeee Sesuai dengan janji saya di post sebelumnya maka saya akan coba share cara belajar bikin EA sederhana . Mengingat saya bukan programer karena saya belajar otodidak dari forum2 untuk itu saya akan memaparkan dengan gaya saya bukan seperti programer karena keterbatasan kemampuan jadilah bahasa saya mudah2an mudah dipahami Okey! Saya mencoba mengajak rekan2 untuk sedikit belajar atau mengengal sebuah EA sederhana. Karena bagi trader yang sudah lama menekuni forex rasanya kurang lengkap kalau belum bisa bikin EA sendiri, meskipun itu sangat sedehana. Sudah banyak forum2 membahas masalah bahasa mql4 , mungkin melihat sekilas tulisan huruf2 yang banyak akan pusing ................... Tapi sebenarnya tidak juga kalau mau niat belajar ======> enjoy aja! Kuncinya belajar bikin EA adalah tekun dan rajin bertanya! dan juga rajin ngumpulun script library script...................................heeeeeeee gitu maksudnya ngumpulun script gimana ya? tiap EA di bikin dengan parameter2 dan seuai ketentuan yang bikin EA contoh yang sederhana adalah script perintah order/perintah buy OrderSend(Symbol(),0,start_lot,Ask,3,AskSL*Point,Ask+TP*Point,"+Jum+oke+",Magic,0,Blue) kadang adajuga ditulis seperti ini OrderSend(Symbol(),OP_BUY,start_lot,Ask,slipage,Ask-SL*Point, Ask+TP*Point,"+Jum+oke+",Magic,0,Blue); sekilas beda sebenarnya sama saja Nah untuk lebih detil nanti kita bahas di post berikutnya Oke Nah untuk belajar kali ini saya mulai dari setengah dasar anggab lah yang baca ini sudah pernah membuka metaeditor dan gak usah banya teori kita langsung aja buka metaeditor kemudian ==> tekan keyboardnya CTRL N maka akan muncul



Pastikan pada pilihan Expert Advisor terus klik aja next dan muncul jendela dan tuliskan nama EA yang akan dibikin saya coba tulis di nama ==> ss maka akan muncul sbb



int deinit() { / / ---/ / ---return(0); } / / +------------------------------------------------------------------+ / / | expert start function / / +------------------------------------------------------------------+ int start() { / / ---/ / ---return(0);



|



Nah Jadi deh Kita langsung aja membuat EA sederhana dengan rule sbb 1. EA akan Buy bila tidak ada order



Kali ini kita akan langsung bikin EA yang sudah siap bisa digunakan Dengan rule sbb: 1. Bila tidak ada order maka akan melakukan buy 2. Menggunakan TP dan SL Okey cukup sederhana sehingga input parameternya sbb: 1. Nama EA = Buy saja. 2. TP. 3 SL. 4. Lots 5. MagicNumber Pada posting saya sebelumnya (di part 1) sudah saya jelaskan untuk memulai Ketika Metaeditor kita sudah di buka maka tekan CTRL N maka akan muncul jendela menu pilihan Expert Advisor yang dipilih kemudian klik next , dan beri nama EA Buy saja sehingga jadinya begini: / / +------------------------------------------------------------------+ //| Buy Saja.mq4 | //| Copyright 2012, MetaQuotes Software Corp. | //| http:/ / www.metaquotes.net | / / +------------------------------------------------------------------+ #property copyright "Copyright 2012, MetaQuotes Software Corp." #property link "http:/ / www.metaquotes.net" / / +------------------------------------------------------------------+ / / | expert initialization function / / +------------------------------------------------------------------+ int init() { / / ----



|



Untuk membuat parameter sebuah EA maka tiap data di dahului dengan extern sebagai deklarasi dan di tempatkan dibawah : #property copyright "Copyright 2012, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" disini //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+



Nah kita siapkan parameter 1 Nama EA = Buy saja



Untuk penamaan ini menggunakan type daya String yaitu data berupa teks sebagai komen EA komen ini dalam bahasa mql = OrderComment() Ciri penulisan data type ini adalah di dahului dengan kata string dan dilanjutkan dengan nama yang diinginkan tidak besepasi , setelah itu Sama dengan (=) dan kemudiaan di beri tanda " diisi seseuai keingingan ditutup dengan tanda " dan ; Sehingga untuk parameter 1 bisa di tulis extern string Nama_EA = "Buy Saja"; sehingga jadinya: #property copyright "Copyright 2012, MetaQuotes Software Corp." #property link "http://www.metaquotes.net"



extern string Nama_EA = "Buy Saja";



//+------------------------------------------------------------------+ //| expert initialization function



|



//+------------------------------------------------------------------+



Parameter 2



TP = 11 TP atau Take profit ini di tulis dalam bahasa mql = OrderTakeProfit() Untuk TP ini menggunakan type data int (integer) ciri data ini data berupa angka bilangan bulat (tidak berkoma ) Ciri penulisan type data ini didahului dengan kata int dilanjutkan dengan nama yang diinginkan tidak bersepasi , setelah itu Sama dengan (=) dan kemudiaan di beri anka tidak berkoma dengan tanda ; sehingga di tulis: extern int



TP



= 11;



Parameter 3 SL. = 100 SL atau stop loss dalam bahasa mql ditulis OrderStopLoss() Penulisan SL ini sama dengan TP, karena type data integer (int) sehingga aturan penulisan sama ditulis sbb: extern int SL = 100; Sehingga bila dimasukan ke metaeditor sbb:



//+------------------------------------------------------------------+



//| Buy Saja.mq4 | //| Copyright 2012, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright 2012, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" extern string extern int extern int



Nama_EA TP SL



= "Buy Saja"; = 11; = 100;



//+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+



Parameter 4 Lots = 0.1 Lots dalam bahasa MQL ditulis = OrderLots() Tipe data lots ini yang digunakan type double yaitu tepe data yang bilangannya berkoma ciri nya didahului dengan kata double dilanjutkan dengan nama (lots )yang diinginkan tidak bersepasi , setelah itu Sama dengan (=) dan kemudiaan di beri anka boleh berkoma atau tidak *tanda koma disini dengan tulisan titik (.) bukan (,) dan diakhiri dengan tanda ; sehingga ditulis: extern double Lots = 0.1; Nah jadi deh kita lihat hasilnya begini: / / +------------------------------------------------------------------+ //| Buy Saja.mq4 | //| Copyright 2012, MetaQuotes Software Corp. | //| http:/ / www.metaquotes.net | / / +------------------------------------------------------------------+ #property copyright "Copyright 2012, MetaQuotes Software Corp." #property link "http:/ / www.metaquotes.net" extern string Nama_EA extern int TP extern int SL extern double Lots



="Buy Saja"; =11; =100; =0.1;



/ / +------------------------------------------------------------------+ / / | expert initialization function



|



Nah kalau sudah jadi seperti ini maka klik Compile dan kalau berhasil akan muncul tulisan Compiling 'Buy Saja.mq4'... 0 error(s), 0 warning(s) caranya lihat gambar berikut:



Nah jadi deh hasilnya kita bisa lihat di Mt4 coba kita cari di folder expert maka EA Buy Saja sudah terlihat tinggal dobel klik maka akan muncul parameter EA seperti gambar berikut



Hasil ini setelah di Compile dan pastikan tidak ada error Bila masih ada error maka parameter ini gak akan muncul di mt4 Okey mudah kan? Heeeeeeee pasti jawabanya Muuuuuudah! Semoga bisa dimengerti



Kita lanjut di part 3



Pada post sebelumnya kita sudah bikin parameter EA sbb:



Dan kita sudah bahas 3 type data yaitu string, int dan double Nah kali ini saya akan menambahkan satu parameter yang sering digunakan sebagai identitas order EA yaitu nomer Magic (magicnumber). dalam bahasa mql4 => OrderMagicNumber() Apa sih sebenarnya magicnumber? Magicnumber adalah sebagai Ktp order atau Id , loh koq bisa KTP ya? Karena magicnumber sering digunakan sebagai identititas order sebuah EA untuk membedakan order dengan EA lain, meki sebenarnya tidak hanya itu penggunaannya bisa digunakan lebih luas. untuk mengetahui nomer magic pada sebuah order biasanya tunjuk pointer pada sebuah order maka disitu akan muncul angka nomer order dan nomer magic contoh Pada image berikutnya Numermaginya adalah 16 (id 16)



Nah itu gambaran kegunaan magic number ! Nah dalam parameter EA yang akan kita buat kali ini kita akan tambahkan nomor magic Nomor magic ini meupakan type data int (bilangan bulat tanpa koma) sehingga bisa dituliskan //+------------------------------------------------------------------+ //| Buy Saja.mq4 | //| Copyright 2012, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright 2012, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" extern extern extern extern extern



string int int double int



Nama_EA TP SL Lots Magic



= "Buy Saja"; = 11; = 100; = 0.1; = 69;



Oke tinggal di Compile lagi dan di cek tidak ada errornya maka kita lihat di mt4 kalau berhasil maka akan terlihat seperti image berikut setelah ea Buy Saja kita attack



Sip deh parameter EA sudah jadi ! Apa EA sudah bisa jalan ? Kalau jalan sih bisa saja tapi belum bisa order heeeeeeee Nah supaya bisa order sesuai rules yang kita tentukan maka kita akan program Program kita akan tempatkan di bawah int start() int start() { //---Disini //---return(0); }



Untuk memulai program sesuai rule yaitu bila tidak ada order maka akan melakukan order Buy Program yang dibuat menggunakan operasi if Penulisannya dimulai dengn kata if dan di mulai tanda kurung pembuka ( dan di akhiri dengan tutup kurung)kemudian tanda Kurung kurawal pembuka { dan di akhiri tutup kurung kurawal penutup } Ketentuannnya :



if( bila ada kondisi yang ditentukan ) { perintah yang diinginkan diakhiri tanda titik koma ; } Kadang juga bisa di tulis tnpa kurung kurawal dalam kondisi khusus (perintah sederhana) if( bila ada kondisi yang ditentukan ) perintah yang diinginkan diakhiri tanda titik koma ; Oke deh mungkin gambarannya mudah dipahami Sekarang kembali rules EA buy saja yang akan kita buat dimana bila tidak ada order maka EA akan melakukan order buy artinya hanya ada 1 order buy if( tidak ada order ) melakukan order buy; tidak ada order artinya order total =0, ketentuan penulisan sama dengan (=) di dalam kondisi harus di tulis 2 kali ( == ) order total di dalam mt4 disediakan sebagai variabel yang di sediakan dan di tulis OrdersTotal() sehinga kita tulis sebagai kondisi if(OrdersTotal()==0) atau bisa juga ditulis if(OrdersTotal()MA2 && Close[2]= 0; i--) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES);



if (OrderSymbol() != Symbol() || OrderMagicNumber()!=Magic ) continue; if (OrderType() > 1) OrderDelete(OrderTicket()); else { if (OrderType() == 0) OrderClose(OrderTicket(), OrderLots(), Bid, 3, CLR_NONE); else



OrderClose(OrderTicket(), OrderLots(), Ask, 3,



CLR_NONE); } } }



Jadi pembuatan ea kali ini ada penambahan tp in money sehingga pada fungsi diatas bisa dibuat perintah untuk mengeksekusi tp in money if(tp_in_money0) aturan sell Bars ini adalah angka yang jumlah tick candel untuk menunjukkan shift nya dalam menghitung candel , bisa juga diganti dengan angka 1000 atau lebih ,ini untuk menentukan dimasa candel kebelakang keberadaan posisi zigzag. Sedangkan untuk membuat menentukan Open candel mingguan kita gunakan: double



OP=iOpen(Symbol(),PERIOD_W1,0);



if(Ask>OP) aturan buy if(Bid0 ) if(lo>0)



sigz= 1; sigz= 5;



if(Ask>OP)sigc=1; if(Bid= 0; i--) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() != Symbol() || OrderMagicNumber()!=Magic|| OrderType()! =m) continue; if (OrderType() > 1) OrderDelete(OrderTicket()); if (OrderType() == 0) OrderClose(OrderTicket(), OrderLots(), Bid, 3, CLR_NONE); if (OrderType() == 1)OrderClose(OrderTicket(), OrderLots(), Ask, 3, CLR_NONE); } } Untuk menentukan order pada jam tertentu sy buat bagian sbb: Hour()==Jam && Minute()==Menit



Untuk bagian delet ketika salah satu order stop tersenttuh adalah: if(jumlahorder(0)==1 && jumlahorder(1)==0){ closeall(5);



} if(jumlahorder(0)==0 && jumlahorder(1)==1){ closeall(4); }



sedang bagian untuk mendelet orderstop yang tidak tersentuh maka pada jam tersentu di delet contoh jam 23 if(Hour()==23){ closeall(4); closeall(5); }



Untuk asesoris order Pending stop : double as = Ask + Jarak_stop*pt; double bi = Bid - Jarak_stop*pt; if(SL==0)slb=0;else slb=as-SL*pt; if(SL==0)sls=0;else sls=bi+SL*pt; if(TP==0)tpb=0;else tpb=as+TP*pt; if(TP==0)tps=0;else tps=bi-TP*pt;



Bagian lain untuk membuat EA libut trading hari senin adalah DayOfWeek()!=1



Nah EA jadinya sbb



"\ n ------------------------------------------------", "\ n :: Spread : ", MarketInfo(Symbol(), MODE_SPREAD), "\ n :: Leverage : 1 : ", AccountLeverage(), "\ n :: Equity : ", AccountEquity(), "\ n :: J amServer :", Hour(), ":", Minute(), "\ n ------------------------------------------------", "\ n :: Floting buy : ",money(0), "\ n :: Floting sell : ",money(1), "\ n ------------------------------------------------", "\ n :: >>By: J um69