Anda di halaman 1dari 16

E-book Tutorial Pemrograman EA | 2010

E-book Tutorial Pemrograman EA

EA Dengan Indikator
Standard MA

Felik Admaja
Programer EA

1|http://eCandlestick.com Jasa Buat EA


E-book Tutorial Pemrograman EA | 2010

Indikator standard merupakan indikator bawaan dari Metatrader


antara lain seperti MA, Stochastic Oscilator, RSI, MACD, Alligator,
Bollinger Bands, Parabolic Sar, Ichimoku kinyo, Awesome Oscillator
dan lain-lain. Indikator standard ini bisa Anda temukan pada
metaeditor, lihat pada bagian panel Navigator kemudian pilih pada
Indicators, klik pada tombol plus yang Ada disampingnya, maka akan
muncul semua list atau daftar dari Indikator standard metatrader 4.0

2|http://eCandlestick.com Jasa Buat EA


E-book Tutorial Pemrograman EA | 2010

Anda akan mempelajari bagaimana membuat EA berdasarkan masing-


masing indikator diatas (tidak semua indikator), dengan contoh-contoh
langsung dan beberapa penjelasan. Untuk menuliskan perintah-perintah
penggunaan indikator sebagai dasar dari EA, ada beberapa pedoman
umum yang nanti akan saya tuliskan di depan dan bisa digunakan oleh
Anda sebagai patokan untuk menuliskan perintah penggunaan indikator
tersebut.

Indikator yang ada atau sudah ada sejak pertama kali metatrader diinstal
disebut sebagai indikator standard sedangkan indikator lain yang diluar
indikator standard disebut sebagai indikator custom yang jumlahnya sangat
banyak sekali.

Mari kita mulai membuat EA dengan menggunakan indikator dibawah ini:

EA BERDASAR MOVING AVERAGE (MA)


Langkah-langkahnya:
1. Buka MetaEditor sesuai dengan petunjuk di ebook pengenalan
MetaEditor 4.0
2. Berikan nama EA, nama author, link.
3. Menentukan bagaimana EA akan berjalan, ini merupakan fase yang
sangat penting sekali, dimana dalam tahap ini akan menentukan
jalan kerja EA. Saya ambil contoh rule untuk EA ini adalah BUY
ketika Simple MA periode 5 menembus keatas Simple MA periode
40. Dan rule SELL merupakan kebalikan dari rule BUY dimana jika
Simple MA (SMA) 5 menembus SMA 40 maka akan terjadi SELL.
TakeProfit = 40 point dan StopLoss = 100 point. Bagaimana cara
membuat EAnya?
4. Kita lihat di chart terlebih dahulu, untuk memudahkan logika kita
dalam membuat EA. Pada prinsipnya EA tidak bisa membaca bentuk
garis, EA hanya bisa membaca angka. Logika kitalah yang akan
mengubah sesuatu yang tadinya berbentuk garis-garis menjadi
Angka sehingga mudah dibaca oleh EA. Berikut saya perlihatkan
gambar chart dari logic BUY dan SELL

3|http://eCandlestick.com Jasa Buat EA


E-book Tutorial Pemrograman EA | 2010

Disamping adalah rule ketika SMA


5 menembus SMA 40 dan harusnya
terjadi BUY menurut logic.
Bagaimana kita mengubah sebuah
garis menjadi Angka ? Ingat bahwa
setiap garis tersebut menempati
suatu koordinat bukan ? yakni
koordinat ketinggian sebanding
dengan harga ask atau bid pada
pair tersebut. Jadi sangat mudah
bukan untuk membuat suatu garis
memiliki nilai ? Ya betul, garis MA
akan menempati titik sesuai
ketinggian harga ask dan bid pada
saat itu.

Saya tambahkan titik Bantu untuk membantu Anda membuat logika dari
rule diatas.
Candle yang sedang berjalan atau
candle yang belum closed kita
hitung sebagai candle 0 dan candle
didepan candle 0 disebut candle 1.
Saya tambahkan bulatan-bulatan
merah dan biru untuk
memperjelas kedudukan MA. Pada
candle 1, titik MA merah (SMA 40)
lebih tinggi daripada titik MA biru
(SMA 5). Pada candle 0, titik biru
SMA 5 lebih tinggi dari pada titik
merah SMA 40. Anda baru saja
mendefinisikan sebuah logika
untuk entry BUY.

Logic BUY: JIKA SMA 5 (biru) pada candle 1 lebih rendah daripada SMA
40 (merah) pada candle 1 DAN JIKA SMA 5 (biru) pada candle 0 lebih
tinggi daripada SMA 40 (merah) pada candle 0

4|http://eCandlestick.com Jasa Buat EA


E-book Tutorial Pemrograman EA | 2010

Penggunaan Logika selalu diikuti dengan kata JIKA atau dalam bahasa
Inggris yakni IF. Sangat mudah bukan mendeskripsikan logika dalam
pembuatan EA ? Mari kita lanjutkan mendeskripsikan logika entry SELL.
Masih dengan gambar dibawah ini:

Candle yang sedang berjalan atau candle yang


belum closed kita hitung sebagai candle 0 dan
candle didepan candle 0 disebut candle 1.
Saya tambahkan bulatan-bulatan merah dan
biru untuk memperjelas kedudukan MA. Pada
candle 1, titik MA merah (SMA 40) lebih
rendah daripada titik MA biru (SMA 5). Pada
candle 0, titik biru SMA 5 lebih rendah dari
pada titik merah SMA 40. Anda baru saja
mendefinisikan sebuah logika untuk entry
SELL.

Logic SELL: JIKA SMA 5 (biru) pada candle 1 lebih tinggi daripada SMA
40 (merah) pada candle 1 DAN JIKA SMA 5 (biru) pada candle 0 lebih
rendah daripada SMA 40 (merah) pada candle 0

Selanjutnya kita akan menterjemahkan logika manusia kita diatas ke dalam


bahasa pemrograman, apa bedanya? Sebenarnya tidak ada perbedaan
yang besar, hanya saja dalam bahasa pemrograman kita harus mengikuti
kaidah penulisan supaya komputer bisa membaca maksud kita dengan
benar. Untuk menggunakan indikator MA ada satu penulisan pakem atau
standard sederhana seperti dibawah ini:

iMA (Symbol(), 0, PERIODE, 0, METODE, 0, CANDLE)

5|http://eCandlestick.com Jasa Buat EA


E-book Tutorial Pemrograman EA | 2010

Bagian yang saya berikan warna merah diatas merupakan bagian yang
bisa dicustom dan diisikan sesuai dengan kebutuhan, antara lain
keterangannya sebagai berikut:

PERIODE: diisikan dengan angka bulat atau disebut angka integer atau
angka int dimana Angka bulat (tanpa koma) ini menunjukkan periode dari
MA yang akan digunakan, dalam contoh kasus ini kita akan membuat EA
dari MA periode 5 dan 40.

METODE: digunakan untuk mengganti metode penggunaan MA. Isikan


dengan angka bulat (integer) sesuai tabel dibawah ini:
ANGKA INT TIPE MA KETERANGAN
0 SMA Simple Moving average
1 EMA Exponential Moving average
2 SMMA Smoothing moving average
3 LWMA Linear Weighted Moving average
Dalam contoh kasus ini kita hanya akan menggunakan indikator jenis SMA
atau simple moving average maka nanti kita hanya mengisikan dengan
angka 0.

CANDLE: merupakan hitungan candle keberapa, suatu MA akan dihitung.


Kembali ke gambar sebelumnya dimana kita nanti hanya menggunakan
candle 0 dan candle 1 sebagai acuan untuk melakukan OP.

6|http://eCandlestick.com Jasa Buat EA


E-book Tutorial Pemrograman EA | 2010

5. Definisikan variabel-variabel yang akan Ana gunakan. Apa itu


variabel, untuk mudahnya variabel bisa dianalogikan dengan
pemberian nama pada suatu fungsi tertentu. Dengan variabel kita
lebih mudah mengelola fungsi karena kita sendiri yang memberikan
nama. Variabel didefinisikan dahulu sebelum digunakan dan lazim
didefinisikan di luar dari ketiga sektor. Cara paling mudah dengan
ditaruh di atas dari int start(). Kita buat 4 buah variabel yakni
MA5_Candle1, MA5_Candle0, MA40_Candle1, dan MA40_Candle0.
Anda sudah paham bukan dengan nama yang saya pilih? Pilihlah
nama yang mudah Anda ingat dan menggambarkan fungsi yang
akan Anda gunakan. Lihat file Latihan-MA1.mq4 yang disertakan
bersama ebook ini.

Dimulai dengan kata “double” yang menunjukkan bahwa jenis dari


variabel yang kita buat merupakan variabel yang isinya nantikan akan
berbentuk huruf pecahan / huruf dengan koma. Nantinya variabel ini
akan digunakan untuk menampung nilai-nilai dari MA yang biasanya
akan bernilai sesuai dengan harga pair saat itu bisa saja nilai MA nya
1.4027 atau 1.3982 atau angka-angka pecahan koma yang lain
bergantung pada posisi EA saat itu ada di harga berapa. Oleh karena
itu kita menggunakan jenis variabel double.

7|http://eCandlestick.com Jasa Buat EA


E-book Tutorial Pemrograman EA | 2010

6. Selanjutnya kita akan menulis dan memberikan nilai pada variabel-


variabel yang sudah kita buat sesuai dengan MA dan posisi
Candlenya. Taruh cursor di sektor int start().
7. Tuliskan perintah dibawah ini (lihat file Latihan MA-2.mq4):
int start()
{
//----
MA5_Candle1 = iMA (Symbol(),0,5,0,0,0,1);
MA5_Candle0 = iMA (Symbol(),0,5,0,0,0,0);
MA40_candle1= iMA (Symbol(),0,40,0,0,0,1);
MA40_Candle0= iMA (Symbol(),0,40,0,0,0,0);
//----
return(0);
}

8. Maksud dari perintah diatas adalah untuk memberikan isi pada


variabel-variabel yang kita buat. Misalkan variabel MA5_candle1
akan berisikan nilai MA dengan periode 5 pada candle ke 1. Atau
variabel MA40_Candle0 artinya variabel tersebut akan diisi oleh nilai
dari MA periode 40 candle ke 0.
9. Penjelasan salah satu variabel diatas:

MA5_Candle1 = iMA (Symbol(),0,5,0,0,0,1);


Periode MA nya
Metode 0 = SMA
Candle ke 1

10. Penjelasan variabel-variabel lain sama seperti variabel diatas hanya


beda pada periode dan candle ke berapa yang akan dibaca.
11. Kemudian kita akan menuliskan logika yang telah kita buat di
halaman sebelumnya dari bahasa kita menjadi bahasa

8|http://eCandlestick.com Jasa Buat EA


E-book Tutorial Pemrograman EA | 2010

pemrograman. Mari kita ingat kembali logic EA dalam bahasa


manusia yakni sebagai berikut

Logic BUY: JIKA SMA 5 (biru)


pada candle 1 lebih rendah
daripada SMA 40 (merah) pada
candle 1 DAN JIKA SMA 5
(biru) pada candle 0 lebih tinggi
daripada SMA 40 (merah) pada
candle 0

Logic SELL: JIKA SMA 5 (biru)


pada candle 1 lebih tinggi
daripada SMA 40 (merah) pada
candle 1 DAN JIKA SMA 5
(biru) pada candle 0 lebih
rendah daripada SMA 40
(merah) pada candle 0

9|http://eCandlestick.com Jasa Buat EA


E-book Tutorial Pemrograman EA | 2010

12. Kemudian bila kita kondisikan kedalam bahasa pemrograman maka


akan menjadi seperti dibawah ini (lihat file Latihan MA_3.mq4):

13. Lihat
pada perintah if diatas.
14. Format perintah if adalaha sebagai berikut:

If (kondisi atau logika) {akibat} else {akibat lain}

15. Jika suatu logika atau kondisi terpenuhi maka EA akan


mengeksekusi perintah yang ada di kolom akibat, dan apabila kondisi
tersebut tidak terpenuhi maka EA akan mengeksekusi akibat yang
lain. Pada contoh kasus ini kita hanya menggunakan fungsi if tanpa
penggunaan else. Jadi formatnya seperti ini:

If (kondisi atau logika) {akibat}


Apabila kondisi terpenuhi maka EA akan mengeksekusi perintah
yang ada di kolom akibat, sebaliknya jika tidak terpenuhi EA tidak
mengeksekusi perintah di kolom akibat.
16. Kembali lagi ke contoh kasus diatas untuk logika fungsi BUY akan
seperti dibawah ini:
if (MA5_Candle1 < MA40_candle1 && MA5_Candle0 > MA40_Candle0)

{ /*AKAN DIISI SCRIPT ORDERSEND UNTUK BUY*/ }

10 | h t t p : / / e C a n d l e s t i c k . c o m Jasa Buat EA
E-book Tutorial Pemrograman EA | 2010

17. Jika dibaca maka bunyinya: Jika variabel MA5_Candle1 memiliki nilai
lebih rendah daripada variabel MA40_Candle1 DAN variabel
MA5_Candle0 lebih tinggi nilainya daripada variabel MA40_Candle0
maka EA akan mengeksekusi script BUY.
18. Penggunaan maksud lebih besar dalam pemrograman dinyatakan
dengan lambang “>” dan penggunaan maksud lebih kecil dalam
pemrograman dinyatakan dengan “<”.
19. Penggunaan maksud DAN dalam pemrograman EA digunakan
simbol “&&”
20. Penggunaan maksud ATAU dalam pemrograman EA digunakan
simbol “||”
21. Untuk logika SELL nya tinggal dibalik dari logika BUY.

if (MA5_Candle1 > MA40_candle1 && MA5_Candle0 < MA40_Candle0)

{ /*AKAN DIISI SCRIPT ORDERSEND UNTUK SELL*/ }

22. Jika dibaca maka bunyinya: Jika variabel MA5_Candle1 memiliki nilai
lebih tinggi daripada variabel MA40_Candle1 DAN variabel
MA5_Candle0 lebih rendah nilainya daripada variabel
MA40_Candle0 maka EA akan mengeksekusi script SELL.
23. Sampai disini sudah jelas bukan? Selanjutnya adalah bagaimana
langkah kita untuk membuat script atau memprogram supaya EA Buy
dan Sell.

MEMBUAT SCRIPT BUY DAN SELL


Untuk membuat script BUY dan SELL ada tata cara penulisan pakem atau
standard yang diterima oleh metatrader yakni sebagai berikut:
OrderSend (Symbol(), OP_BUY , Lots , Ask , 10 , Ask-StopLoss*Point , Ask+TakeProfit*Point ,””,Magic,0,Blue);

OrderSend (Symbol(), OP_SELL , Lots , Bid , 10 , Bid +StopLoss*Point , Bid -TakeProfit*Point ,””,Magic,0,Red);

11 | h t t p : / / e C a n d l e s t i c k . c o m Jasa Buat EA
E-book Tutorial Pemrograman EA | 2010

1. Buat variabel Lots, TakeProfit, StopLoss, dan Magic. Namun untuk


kali ini variabel-variabel ini harus bisa tampak di panel EA supaya
user bisa mengubah-ubah nilai dari masing-masing variabel tersebut.
Maka perlu ditambahkan perintah “extern”.
2. Penggunaan codingnya akan seperti gambar dibawah ini (Latihan
MA_4.mq4) :

3. Definisikan masing-masing indikator diatas diluar dari ketiga sektor


int init(), int deinit(), dan int start(). Contoh diatas saya nyatakan
variabel dibawah daerah property link. Tambahkan perintah extern
supaya variabel tersebut tampak di panel EA dan bisa diganti oleh
user. Cara penulisan variabel diatas adalah :
extern spasi jenis variabelnya (bisa double atau int), spasi nama
variabelnya spasi sama dengan spasi nilai variabel defaultnya dan
diakhiri dengan titik koma.
4. Jika perintah yang Anda tuliskan diatas tadi benar maka dalam panel
EA akan muncul nama variabel diatas beserta nilai defaultnya

SAAT SETTING EA DI METATRADER AKAN MUNCUL VARIABEL


DIATAS DAN BISA DIGANTI NILAINYA.

12 | h t t p : / / e C a n d l e s t i c k . c o m Jasa Buat EA
E-book Tutorial Pemrograman EA | 2010

5. Setelah Anda tentukan ariabel Lots, TakeProfit, StopLoss dan Magic


langkah berikutnya adalah memasukkan script BUY dan SELL yang
kita buat ke dalam logika EA berdasarkan MA.
6. Masih ingat script dibawah ini ?
if (MA5_Candle1 < MA40_candle1 && MA5_Candle0 > MA40_Candle0)

{ /*AKAN DIISI SCRIPT ORDERSEND UNTUK BUY*/ }

if (MA5_Candle1 > MA40_candle1 && MA5_Candle0 < MA40_Candle0)

{ /*AKAN DIISI SCRIPT ORDERSEND UNTUK SELL*/ }

7. Langkah pertama kita akan memberikan script Ordersend BUY ke


dalam logic BUY dan akan jadi seperti dibawah ini (lihat file Latihan
MA_5.mq4)
if (MA5_Candle1 < MA40_candle1 && MA5_Candle0 > MA40_Candle0)
{ OrderSend (Symbol(), OP_BUY , Lots , Ask , 10 , Ask-StopLoss*Point , Ask+TakeProfit*Point ,””,Magic,0,Blue);}

8. Langkah kedua kita akan memberikan script Ordersend SELL ke


dalam logic SELL dan akan jadi seperti dibawah ini (lihat file Latihan
MA_5.mq4)
if (MA5_Candle1 < MA40_candle1 && MA5_Candle0 > MA40_Candle0)
{ OrderSend (Symbol(), OP_SELL , Lots , Bid , 10 , Bid +StopLoss*Point , Bid -TakeProfit*Point ,””,Magic,0,Red);}

9. Untuk lebih jelasnya Anda harus membuka file latihan-latihan dan


melihat format penulisan yang ada disana.
10. Apa yang dimaksud atau yang terkandung dari fungsi Ordersend
BUY?

13 | h t t p : / / e C a n d l e s t i c k . c o m Jasa Buat EA
E-book Tutorial Pemrograman EA | 2010

OrderSend (Symbol(), OP_BUY , Lots , Ask , 10 , Ask-StopLoss*Point ,


Ask+TakeProfit*Point ,””,Magic,0,Blue);
 Symbol()  EA akan melakuan order open posisi hanya pada pair
dimana EA tersebut diattach,
 OP_BUY  tipe opennya adalah Open BUY
 Lots  besar volume lot sama dengan Lots
 Ask  dibuka (price Open) sesuai dengan harga Ask
 10  slippage sebesar 10 point
 Ask-StopLoss*Point  Nilai titik Stoploss
 Ask+TakeProfit*Point  nilai titik takeprofit
 “”  Open posisi tanpa komentar atau comment
 Magic  dengan magic number sesuai Magic
 0  Open posisi tanpa expired
 Blue  memberikan warna biru pada chart ketika terjadi Open BUY.

11. Apa yang dimaksud atau yang terkandung dari fungsi Ordersend
SELL?
Ordersend (Symbol(), OP_SELL , Lots , Bid , 10 , Bid +StopLoss*Point , Bid -
TakeProfit*Point ,””,Magic,0,Red);
 Symbol()  EA akan melakuan order open posisi hanya pada pair
dimana EA tersebut diattach
 OP_SELL  tipe opennya adalah Open SELL
 Lots  besar volume lot sama dengan Lots
 Bid  dibuka (price Open) sesuai dengan harga Bid
 10  slippage sebesar 10 point
 Bid+StopLoss*Point  Nilai titik Stoploss
 Bid-TakeProfit*Point  nilai titik takeprofit
 “”  Open posisi tanpa komentar atau comment
 Magic  dengan magic number sesuai Magic
 0  Open posisi tanpa expired
 Red  memberikan warna merah pada chart ketika terjadi Open
SELL.

14 | h t t p : / / e C a n d l e s t i c k . c o m Jasa Buat EA
E-book Tutorial Pemrograman EA | 2010

12. Sampai disini Anda telah membuat sebuah EA dengan indikator MA


sebagai dasar logikanya. Anda bisa compile EA Latihan MA_4.mq4
untuk mengujinya di dalam backtest.
13. Apa yang Anda temukan? Ya EA bekerja sesuai logic yang kita
tentukan namun terjadi Open posisi yang berulang-ulang dititik /
harga yang sama ataupun di titik/harga yang berbeda. Bagaimana
solusinya? Ingat kita belum membatasi bahwa ketika terjadi cross
hanya diperbolehkan untuk OP hanya 1x tidak boleh lebih. Oleh
karena itu kita akan menambahkan script untuk menghitung jumlah
open posisi yang ada sebelumnya. Tentunya jika belum ada open
posisi sebelumnya maka EA berhak untuk membuka posisi. Namun
ketika sudah terdapat open posisi sebelumnya, maka EA tidak
berhak untuk membuka posisi baru.
14. Berikan script dibawah ini sebelum script logika atau script if dari
indikator MA (bisa dilihat di file latihan MA_5.mq4)

15. Script untuk menghitung jumlah Open posisi sebelumnya:


OpenOrders=0;
for(cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol()==Symbol() && OrderMagicNumber() == Magic)
{OpenOrders++;}
}

16. Ingat kita sudah menambahkan beberapa variabel diatas antara lain
OpenOrders dan cnt maka kita harus definisikan variabel tersebut
dibagian atas yakni seperti dibawah ini:

15 | h t t p : / / e C a n d l e s t i c k . c o m Jasa Buat EA
E-book Tutorial Pemrograman EA | 2010

17. Variabel yang kita tambahkan adalah variabel berjenis int yakni
variabel yang hanya berisi angka bulat tanpa koma.
int OpenOrders, cnt;

18. Tambahkan perintah pada bagian logika EA sehingga akan tampak


seperti ini (bisa dilihat di file latihan MA_5.mq4)

19. Tambahkan perintah OpenOrders==0 pada bagian logika BUY dan


logika SELL, maksudnya adalah apabila OpenOrders sama dengan
nol atau sebelumnya tidak ada open posisi, dan logika MA BUY dan
MA SELL terpenuhi maka EA akan melakukan BUY dan SELL.
20. Sampai disini Anda sudah bisa membuat EA dengan basic
perpotongan MA. File yang bisa digunakan adalah file latihan MA_5.
21. Lanjutkan belajar Anda ke ebook-ebook yang lain.

16 | h t t p : / / e C a n d l e s t i c k . c o m Jasa Buat EA

Anda mungkin juga menyukai