Jumat, 05 Agustus 2011



EA Shark v4.0 Ultima


modifikasi EA MACD ample - step by step

PART I


EA MACD sample adalah EA bawaan dr mt4. jd setiap kita menginstal mt4, EA ini jg ikut.
EA ini sebenernya udah punya struktur yang bagus tp masi standar bgt, oleh sebab itu kudu dirubah dikit biar bisa jd EA yg handal. di thread ini ane mo ngasi langkah2 memodifikasi EA MACD sample.
oke kita mulai...
pertamatama buka metaeditor, kemudian buka file MACD sample yg ada di folder expert. perhatikan baik2 setiap kode yg ada disitu. karena kita akan mulai mempelajari bagian2 dr EA MACD sample.

1. deklarasi variable external



variable exeternal adalah variabel yg nilainya kudu di input oleh user. perhatikan gambar diatas, kemudian pada bagian paling atas kita coba tambahkan kode seperti berikut ini :

extern string outor = risetyanto adi dharmawan;

hasilnya adalah seoerti gambar berikut :


perlu di perhatikan bahwa setiap pendeklarasian variable herus di tuliskan jg type variable-nya.ada beberapa type variable seperti variable string untuk teks, variable intiger untuk angka, dll. tp disini ane ga membahas mengenai type variable, agan biasa langsung masuk ke http://docs.mql4.com/basis/variables/initialization untuk mempelajari lebi lanjut mengenai variable.

2. deklarasi variable (yg bukan external)



perhatikan gambar diatas, dibawah int start () ada deklarasi variable lg. tp yg ini bukan variable external, karena variable yg ini ga ada tulisan extern di depannya.
dalam pendeklarasian variable, bisa dideklarasikan beberapa variable sekaligus dengan dipisahkan dengan tanda koma (,) tp dgn syarat variable yg dideklarasikan mempunyai tipe data yg sama.
contohnya : double MacdCurrent,MacdPrevius, SignalCurrent;
hal ini berarti ada tiga variable dengan type data double yg dideklarasikan sekaligus.

3. pengkondisian jumlah bar dan takeprofit


perhatikan baik2, soalnya ini dah mulai masuk ke bagian yg agak ribet.
pada gambar diatas ada pengkondisian if(bars<100), maksutnya untuk menghitung jumlah bars yg ada di cart, klo bars yg ada di chart terlalu sedikit ato dibawah 100 maka EA ga akan berjalan. begitu jg dengan pengkondisian if(TakeProfit<10). seperti di sebutkan sebelumnya bahwa TakeProfit merupakan extern variable ato variable yg nilainya dimasukan oleh user. nah dengan pengkondisian ini user diharapkan memasukan nilai TakeProfit lebi besar dr 10 klo ga EA ga akan jalan.baru mua jalan lg klo nilai variable TakeProfit dah diisi dengan nilai yg lbi besar dr 10. (mudah-mudahan ga bingung)

4. indikator

perhatikan gambar diatas gan..
disana ada variable2 yg sebelumnya udah dideklarasikan sebelumnya tp blom di kasi nilai. nah pada bagian ini variable2 itu dikasi nilai. kebetulan disini nilai yg dimasukan adalah nilai dr indikator MACD. pada PART selanjutnya nanti ane akan menjelaskan lebi lanjut mengenai indikator. skarang kita lanjut aja dl..

5. membaca indikator dan periksa kemungkinan untuk open posisi buy


hmmm... ane malah jd agak bingung nih gmana menjelaskannya.
gini aja, ane kasi warna biru buat source code EA, secara keseluruhan kode diatas klo dibaca bunyinya gini, jika blom ada open posisi if(total<1) maka periksa free margin, jika free margin < 1000 x lot if(AccountFreeMargin()<(1000*Lots)) maka EA akan berhenti return(0); jika free margin > 1000 x lot maka periksa sinyal dr indikator, sapa tau ada sinyal buy if(MacdCurrent<0 && MacdCurrent>SignalCurrent && MacdPrevious(MACDOpenLevel*Point) && MaCurrent>MaPrevious) nah jika ternyata sinyal dr indikator ngasi sinyal buy, maka EA akan mengeksekusi perintah untuk melakukan OP buy ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+ TakeProfit*Point,"macd sample",16384,0,Green);. bagian2 lain seperti if(OrderSelect(ticket... menurut ane ga terlalu penting jd dibahas lain kali aja.
nah jd begitu critanya EA ini melakukan OP buy. lanjut...

6. membaca indikator dan periksa kemungkinan untuk OP sell

pada bagian ini klo dibaca bunyinya sama kyak yg poin No.5, cma bedanya klo di No.5 untuk sinyal buy dan OP bay sedangkan di bagian ini untuk sinyal sell dan OP sell.
untuk masalah indikator nanti ane jelasin di PART selanjutnya, karena klo kita mau memodifikasi sebuah EA, bagian indikator-nya adalah bagian yg harus mendapat perhatian lebih. ada satu yg ketinggalan yaitu perintah OrderSend, perintah ini digunakan untuk mengirm perintah open posisi. untuk lebi jelas mengenai ordersend dan order2 lainnya bisa dilihat disini gan..
http://docs.mql4.com/trading/OrderSend

7. close posisi buy dan trailingstop buy


di source code EA ada komen kyak gini

// it is important to enter the market correctly,
// but it is more important to exit it correctly...

jika ada tanda dua garis miring seperti diatas berarti teks yg ada di belakang dua garis miring tsb bukan termasuk kode program dan ga akan dieksekusi. garis miring kyak gini biasa dipake oleh programer untuk memberikan komen di progam buatannya, biar ga lupa ato gmana gtu.
oke skarang kita masuk ke intinya lg.
pada bagian ini ada Cycle operator for for(cnt=0;cnt dan order select OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); lebi jelas mengenai Cycle operator for bisa di lihat disini http://docs.mql4.com/basis/operators/for. dan untuk lebi jelas mengenai orderselect bisa dilihat disini http://docs.mql4.com/trading/OrderSelect
intinya 'Cycle operator for' adalah perintah perulangan (loop) yg dipakai untuk memilih order yg telah dibuka sebelumnya. if(OrderType()==OP_BUY) jika ada order buy maka periksa indikator, if(MacdCurrent>0 && MacdCurrentSignalPrevious && MacdCurrent>(MACDCloseLevel*Point)). perlu diketahui, EA ini akan melakukan OP buy jika ada sinyal buy, dan akan close posisi buy jika ada sinyal sell, begitu juga sebaliknya. indikator yg digunakan disini sama dgn indikator untuk sinyal OP sell. jika ada sinyal sell maka OP buy yg td udah di select ma OrderSelect akan di close OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet) ;

pada bagian ini jg ada kode untuk trailing stop
dalam kode trailing stop terdapat beberapa pengkondisian, trailing stop baru akan berjalan setelah semua pengkondisian bernilai true. klo dibaca gini gan..
jika trailing stop lebih besar dari 1 if(TrailingStop>0) jika harga Bid dikurangi harga OP lebih besar dr poin x TrailingStop if(Bid-OrderOpenPrice()>Point*TrailingStop) jika stoploss lebih kecil dari harga Bid - point x TrailingStop if(OrderStopLoss() maka modifikasi order itu dengan stoplos yg jaraknya adalah Bid-point x TrailingStop OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green); TrailingStop sendiri merupakan extern variable (lihat No. 1) jd nilai dr trailing stop ditentukan sendiri oleh user. jika tidak ingin memakai trailing stop maka user dapat mengisinya dgn angka nol (0). klo extern double TrailingStop = 0 maka pengkondisian if(TrailingStop>0) tidak terpenuhi. td trailing stop ga dijalankan.
gmana gan, bisa dipahami ga? ane sndri bingung gmana menjelaskannya

8. close posisi sell dan trailing stop sell



pada dasarnya bagian ini sama dengan bagian sebelumnya, cma bedanya bagian ini untuk close posisis sell dan trailing stop sell. semua kode yg ada disini baru akan dieksekusi klo semua pengkondisian yg ada di poin No. 7 ga terpenuhi ato bernilai false.
klo pengkondisian di poin no.7 terpenuhi maka bagian ini ga dieksekusi, dan kode akan dibaca dr awal lg.

nah bgitulah gambaran jeroan dr EA MACD sample dengan sedikit penjelasannya. semoga bisa bermanfaat trutama bagi agan2 yg pengen belajar bikin EA.
pada part selanjutnya ane akan menuliskan mengenai cara mengganti indikator, memasang hidden TP/SL, merubah EA MACD sample menjadi EA marti, dll..
sampe ktemu lg di part selanjutnya, ane mo istirahat dl, capek gan..

nb. penjelasan ane disini msi kurang lengkap, jd ane sangat berharap ada master yg bersedia melengkapi ato klo perlu mengkoreksi thread ini
Last edited by sinyo; 10-12-2010 at 12:17 PM.

Tidak ada komentar:

Posting Komentar