Felik Admaja
Programer EA
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.
Langkah-langkahnya:
1. Pada latihan kali ini, kita akan membuat sebuah EA dengan dasar
sebuah indikator Stochastic, dimana rule untuk BUY adalah ketika
main dari Stochastic berada di bawah titik 20, sinyal dari
STOCHASTIC dibawah titik 20, dan main stochastic berada diatas
sinyal stochastic, baik sinyal maupun main stochastic harus
menghadap keatas. Rule untuk SELL: ketika main stochastick berada
di atas 80, sinyal stochastic berada diatas 80, main stochastic lebih
kecil dari sinyal stochastic, baik main dan sinyal stochastic harus
mengarah kebawah. Penggunaan indikator stochastic ini mirip
dengan penggunaan STOCHASTIC, yakni mendeteksi adanya
overbought dan oversold.
LOGIC BUY: Ketika Main stochastic dan sinyal stochastic berada di bawah
titik 20. Main stochastic (warna hijau) berada diatas sinyal stochastic (garis
merah). Baik main atau sinyal stochastic harus mengarah keatas.
LOGIC SELL: Ketika Main stochastic dan sinyal stochastic berada di atas
titik 80. Main stochastic (warna hijau) berada dibawah sinyal stochastic
(garis merah). Baik main atau sinyal stochastic harus mengarah kebawah.
5. Kita Akan bahas satu persatu script yang ada di dalam file tersebut.
8. Script diatas kita membuat beberapa variabel yang tidak bisa diubah
nilainya oleh user dari panel EA. Kita membuat variabel dengan
nama Stochastic_Main dengan tipe double, fungsinya untuk
mengakomodasi nilai dari main stochastic. Mengapa bertipekan
double? Karena nilai dari Main stochastic adalah berupa angka
pecahan atau angka berkoma. Kemudian variabel Stochastic_Signal
digunakan sebagai variabel untuk mengakomodasi nilai dari sinyal
stochastic.
int start()
{
Stochastic_Main = iStochastic(Symbol(),0,5,3,3,MODE_SMA,0,MODE_MAIN,1);
Stochastic_Signal = iStochastic(Symbol(),,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,1);
10. Script utama ditaruh di dalam alur int start(). Pada coding diatas,
variabel Stochastic_Main dan Stochastic_Signal dibuat sama nilainya
dengan nilai indikator Main Stochastic dan Sinyal Stochastic dengan
rumus:
iStochastic(Symbol(),0,5,3,3,MODE_SMA,0,MODE_MAIN,1);
iStochastic(Symbol(),0,5,3,3,MODE_SMA,0,MODE_SIGNAL,1);
Penting untuk kita ingat bahwa sebelum membuat EA maka kita harus tahu
karakteristik dari indikator yang kita gunakan. Nilai-nilai seperti period,
method merupakan properti dari indikator tersebut. Yang biasa kita lihat
sebagai berikut: (biasa kita lihat ketika kita akan memasang indikator)
OpenOrders=0;
for(cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol()==Symbol() && OrderMagicNumber() == Magic)
{OpenOrders++;}
}
11. Script diatas digunakan untuk menghitung open order yang sudah
terbuka. Kita akan bahas satu persatu
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
OpenOrders=0;
for(cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol()==Symbol() && OrderMagicNumber() == Magic)
{OpenOrders++;}
}
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
15. Perintah diatas digunakan untuk memfilter supaya open order yang
dhitung adalah open order yang terjadi pada pair dimana EA
dipasang (OrderSymbol()==Symbol()) dan hanya memfilter open
order yang memiliki Magic number sama dengan Magic
(OrderMagicNumber() == Magic) hal ini dimaksudkan supaya EA
tidak menghitung open order yang dilakukan secara manual maupun
open order oleh EA lain.
OpenOrders=0;
for(cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol()==Symbol() && OrderMagicNumber() == Magic)
{OpenOrders++;}
}
17. Perintah for ditulis dengan format for (kondisi) {perintah}. Dalam
script diatas EA hanya menghitung open posisi yang open di
timeframe dimana EA dipasang dan hanya menghitung open orders
yang memiliki magic number sama dengan Magic EA.
18. Untuk menggunakan script diatas, Anda bisa melakukan copy paste
pada project Anda berikutnya. Kenapa kita harus menghitung open
posisi yang sudah terjadi? Hal ini digunakan untuk menghindari open
posisi lebih dari satu (ribuan open posisi) pada titik yang sama jika
ada sinyal untuk Open. EA hanya dibatasi untuk open hanya 1x saja
jika terjadi sinyal.
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
if (Stochastic_Main>Stochastic_Signal &&
Stochastic_Main<20 && Stochastic_Signal<20 &&
OpenOrders==0)
{OrderSend (Symbol(), OP_BUY, Lots, Ask, 10, Ask-StopLoss*Point,
Ask+TakeProfit*Point,"EA Stochastic", Magic, 0, Blue);}
19. Perintah diatas merupakan perintah logika BUY yakni bila nilai
Stochastic_Main lebih besar dari Stochastic_Signal dan
Stochastic_Main kurang dari 20 dan Stochastic_Signal kurang dari 20
dan OpenOrders sama dengan nol maka EA akan mengeksekusi
script untuk BUY. Sengaja dibuat kecil tulisan script untuk BUY
karena fokus kita kali ini adalah pada fungsi logika dengan IF. Script
untuk BUY akan dibahas tersendiri.
if (Stochastic_Main>Stochastic_Signal &&
Stochastic_Main<20 && Stochastic_Signal<20 &&
OpenOrders==0)
{OrderSend (Symbol(), OP_BUY, Lots, Ask, 10, Ask-StopLoss*Point,
Ask+TakeProfit*Point,"EA Stochastic", Magic, 0, Blue);}
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
22. Symbol() digunakan untuk mengorder open posisi baik buy maupun
sell di pair dimana kita attach EA.
23. OP_BUY digunakan supaya order yang kita kirimkan adalah BUY.
24. Lots, order yang kita kirimkan dengan jenis BUY tadi haruslah
memiliki besar volume dalam satuan lot. Lots ini merupakan variabel
yang dapat diganti oleh user dari panel EA dan digunakan untuk
menentukan besarnya volume order BUY yang akan kita kirimkan.
25. Ask, sebagai harga open posisi dari oder BUY, jika open order tipe
BUY maka harga open order yang digunakan adalah Ask, namun bila
order tipe SELL maka harga yang digunakan adalah harga Bid.
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
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
33. Selanjutnya kita akan membahas script untuk open sell. Pada
prinsipnya sama dengan open buy hanya saja logikanya kita balik.
if (Stochastic_Main<Stochastic_Signal &&
Stochastic_Main>80 && Stochastic_Signal>80 &&
OpenOrders==0)
{OrderSend(Symbol(),OP_SELL,Lots,Bid,10,Bid+StopLoss*Point,Bid-TakeProfit*Point,"EA
Stochastic",Magic,0,Red); }
16 | 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
40. OP_SELL digunakan supaya order yang kita kirimkan adalah SELL.
41. Lots, order yang kita kirimkan dengan jenis SELL tadi haruslah
memiliki besar volume dalam satuan lot. Lots ini merupakan variabel
yang dapat diganti oleh user dari panel EA dan digunakan untuk
menentukan besarnya volume order SELL yang akan kita kirimkan.
42. Bid, sebagai harga open posisi dari oder SELL, jika open order tipe
BUY maka harga open order yang digunakan adalah Ask, namun bila
order tipe SELL maka harga yang digunakan adalah harga Bid.
17 | 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
46. “EA Stochastic” digunakan untuk memberikan comment pada EA. Ini
tidak wajib Anda berikan, jika ingin dikosongi cukup berikan 2 tanda
petik “”
50. Setelah script diatas komplit kita buat, langkah terakhir adalah
melakukan compiling yakni dengan klik tombol compile pada
Metaeditor. Sebuah file ex4 akan kita dapatkan dan siap untuk kita
gunakan.
18 | h t t p : / / e C a n d l e s t i c k . c o m Jasa Buat EA