Anda di halaman 1dari 18

E-book Tutorial Pemrograman EA | 2010

E-book Tutorial Pemrograman EA

EA Dengan Indikator Standard


Stochastic Oscillator

Felik Admaja
Programer EA

1|h ttp : //eCa n dles ti ck. 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

Anda akan mempelajari bagaimana membuat EA berdasarkan masing-


masing indikator diatas (tidak semua indikator), dengan contoh-contoh
2|h ttp : //eCa n dles ti ck. com Jasa Buat EA
E-book Tutorial Pemrograman EA | 2010

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 STOCHASTIC OSCILLATOR

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.

2. Rule diatas sudah jelas bukan? Sebagai programer kita tinggal


mengetahui saja harga sinyal dan main stochastic pada saat itu
apakah sudah diatas 80 atau sudah dibawah 20? Untuk memperjelas
rule diatas mari kita lihat screen shot di halaman selanjutnya yang
menunjukkan kriteria open sesuai logic diatas

3|h ttp : //eCa n dles ti ck. com Jasa Buat EA


E-book Tutorial Pemrograman EA | 2010

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.

4|h ttp : //eCa n dles ti ck. com Jasa Buat EA


E-book Tutorial Pemrograman EA | 2010

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|h ttp : //eCa n dles ti ck. com Jasa Buat EA


E-book Tutorial Pemrograman EA | 2010

3. Anda sudah memiliki file latihan atau EA dengan menggunakan


prinsip STOCHASTIC ini. Bisa Anda buka dalam MetaEditor dan mari
kita pelajari satu persatu dari script didalam file tersebut

4. Buka file latihan Stochastic EA.mq4

5. Kita Akan bahas satu persatu script yang ada di dalam file tersebut.

#property copyright "http://ecandlestick.com"


#property link "http://ecandlestick.com"

6. Hal pertama adalah menentukan copyright dan link untuk EA kita,


pada bagian copyright bisa kita isikan nama kita atau instansi atau
alamt web kita, kemudian pada bagian link bisa kita isikan dengan
alamat website, email atau nomor telepon. Hal ini penting supaya
pengguna EA kita bisa menghubungi kita.

extern int Magic = 123;


extern double Lots = 0.1;
extern int TakeProfit = 50;
extern int StopLoss = 50;

7. Pada script diatas dimaksudkan untuk membuat variabel yang bisa


diubah oleh user dari panel input. Dengan menambahakan perintah
“extern” maka variabel variabel diatas bisa diubah oleh user dari
panel EA. Kita buat variabel standard yakni berupa Lots, TakeProfit,
StopLoss dan magic. Lots digunakan supaya user bisa mengisikan
berapa lot yang akan digunakan untuk trading. TakeProfit digunakan
untuk menentukan berapa takeprofit yang ingin dicapai. StopLoss
digunakan untuk menentukan berapa point stoploss yang ingin di
derita. Magic ini sepele namun penting, biasa digunakan untuk
membedakan open posisi trade dari EA satu dengan EA lain. Magic
diisikan Angka sembarang dan unik.

6|h ttp : //eCa n dles ti ck. com Jasa Buat EA


E-book Tutorial Pemrograman EA | 2010

Gambar dibawah ini ketika EA jadi:

double Stochastic_Main, Stochastic_Signal;


int OpenOrders, cnt;

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.

Variabel dengan nama OpenOrders dan Cnt merupakan variabel int


yang berisikan angka bulat, digunakan untuk mengakomodasi berapa
open posisi yang telah terbuka (menghitung jumlah open posisi).
Script menghitung open posisi akan dibahas di halaman selanjutnya.

7|h ttp : //eCa n dles ti ck. com Jasa Buat EA


E-book Tutorial Pemrograman EA | 2010

9. Setelah menentukan variabel-variabel apa yang akan kita gunakan


kita masuk ke dalam coding inti, namun bisa juga seorang programer
membuat coding inti terlebih dahulu baru membuat/mendefinisikan
variabelnya, pada prinsipnya dipilih mana yang paling enak bagi
programer untuk membuat EA.

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);

 Symbol()  digunakan supaya EA hanya melakukan open


posisi hanya pada pair dimana EA tersebut di attach atau
dipasang.
 0  Supaya EA hanya buka posisi berdasarkan sinyal pada
timeframe dimana EA diattach. Bisa diganti dengan angka 1, 5,
15, 30, 60, 240, dan 1440. Jika diganti dengan angka 1 maka
EA akan open posisi berdasarkan sinyal di M1, jika 5 = M5, jika
15 = M15, jika 30 = M30, jika 60 = H1, jika 240 = H4, jika 1440
= D1
 5  digunakan untuk menentukan %K period dari Stochastic
 3  Digunakan untuk menentukan %D Period.
 3  menentukan nilai slowing dari stochastic
 MODE_SMA  Digunakan untuk menentukan mode MA dari
sinyal stochastic. MODE_SMA menandakan bahwa yang
digunakan adalah MA simple. MODE_EMA  Exponential MA,
8|h ttp : //eCa n dles ti ck. com Jasa Buat EA
E-book Tutorial Pemrograman EA | 2010

MODE_SMMA  smoothed MA, MODE_LWMA  Linear


Weighted MA.
 0  Digunakan untuk menentukan price field supaya
memiliki setting Low/High.Ganti dengan 1  setting
Close/Close
 MODE_MAIN dan MODE_SIGNAL  Mode_Main digunakan
untuk memilih supaya mode Stochastic yang keluar adalah
Mode Main. Sedangkan Mode_Signal digunakan untuk
memilih supaya yang keluar adalah sinyal Stochastic
 1  menentukan candle keberapa yang akan dijadikan
patokan untuk mengambil data indikator Stochastic. Karena EA
ini hanya buka ketika Stochastic sudah benar-benar menembus
titik overbought atau oversold, maka kita gunakan candle 1
sebagai acuan. Sebab Candle 1 menandakan bahwa cande
sudah close. Candle 0 merupakan candle yang sedang berjalan
dan belum close. Bisa diganti dengan 0 dan EA akan open
begitu Stochastic didaerah overbought atau oversold tanpa
menunggu candle close. Dibawah ini adalah panduan gambar
untuk menentukan lokasi candle:

Apa itu %K period, %D Period, Slowing, Price Field, MA Method? Dari


mana didapatnya?

9|h ttp : //eCa n dles ti ck. com Jasa Buat EA


E-book Tutorial Pemrograman EA | 2010

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++;}
}

12. OpenOrders=0; digunakan untuk membuat variabel OpenOrders


yang bersifat integer untuk menjadi 0. Hal ini dimaksudkan supaya
sebelum script menghitung open order dimulai, hitungan harus
dimulai dari nol.

13. Perintah for (cnt=0; cnt<ordertotal(); cnt++) merupakan perintah


untuk perulangan sesuai dengan jumlah kondisi variabel cnt yang
telah ditentukan. Dalam contoh ini cnt awal bernilai nol dan cnt
akhirnya bernilai sama dengan total open order yang telah terbuka
baik karena EA ini, karena EA lain maupun karena manual open.
Semisal total open order ada 3 buah maka jika perintah for diatas
dieksekusi maka akan terbentuk nilai cnt = 0, cnt =1, cnt =2. Tidak
pernah ada cnt=3 sebab dalam kondisi diatas sudah ditentukan
bahwa cnt<OrderTotal() (cnt lebih kecil dari jumlah open order yang
terjadi). Perulangan for ini akan menghasilkan 3 buah result yakni
cnt=0, cnt=1, dan cnt=2.

14. Perintah OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES)


digunakan untuk memilih open posisi berdasarkan urutan ID dari
open posisi tersebut. Misal kita tuliskan OrderSelect (1,
SELECT_BY_POS, MODE_TRADES) maka kita memilih open order
dengan ID nomor satu. Karena open order banyak maka kita
gunakan variabel cnt sebagai penanda ID. Variabel cnt ini akan
berubah nilainya mulai dari 0 sampai jumlah maximum open orders.
Tentunya variabel cnt ini berubah-ubah karena fungsi for yang telah
diterangkan diatas.

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

if (OrderSymbol()==Symbol() && OrderMagicNumber() == Magic)

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.

16. Perintah OpenOrders++; digunakan untuk menambahkan variabel


OpenOrders dengan angka 1 atau dengan kata lain OpenOrders+1
setiap ada open posisi yang dilakukan oleh EA ini.

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);}

20. OpenOrders merupakan jumlah open posisi yang telah terjadi


sebelumnya. Jika kita tambahkan fungsi OpenOrders==0 maka EA
hanya akan membuka posisi ketika belum ada open order
sebelumnya atau open order sebelumnya = 0. Jadi jika perintah ini
ditambahkan, EA hanya 1x open posisi ketika terjadi sinyal. Jika open
posisi sudah lebih dari nol, maka script untuk BUY tidak akan
dieksekusi lagi, karena logika OpenOrders==0 sudah tidak terpenuhi.
Bila tidak ditambakan fungsi ini maka akan terjadi ribuan OP dalam 1
titik. Dan menghasilkan risiko yang besar pada trading.

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, "EA Stochastic", Magic, 0, Blue);

21. Perintah Ordersend digunakan untuk mengirimkan order ke pihak


broker dengan beberapa keterangan dan ketentuan yang kita
inginkan.

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.

26. 10 merupakan nilai slippage yang kita gunakan. Dipilih 10 karena


merupakan nilai yang cukup untuk mengakomodasi requote. Makin
besar nilai slippage maka toleransi terhadap requote makin besar.

27. Ask-StopLoss*Point digunakan untuk menentukan titik stoploss


dalam satuan harga mata uang. Misalkan Ask saat itu adalah 1.4000
dan StopLoss=40 maka titik Stoplossnya adalah 1.4000 – 40*0.0001
= 1.3960 sebagai titik stoploss

28. Ask+TakeProfit*Point digunakan untuk menentukan titik TakeProfit


dari sebuah open order.

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

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


Ask+TakeProfit*Point, "EA Stochastic", Magic, 0, Blue);

29. “EA STOCHASTIC” digunakan untuk memberikan comment pada


EA. Ini tidak wajib Anda berikan, jika ingin dikosongi cukup berikan 2
tanda petik “” seperti contoh dibawah:

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


Ask+TakeProfit*Point, "", Magic, 0, Blue);

30. Magic digunakan untuk memberikan Identitas pada EA berupa angka


Magic yang bisa ditentukan oleh user dari panel EA. Angka yang
diinputkan bisa berupa angka apa saja yang terpenting haruslah unik
dan beda dengan angka magic dari EA lain.

31. 0 digunakan untuk tidak memberikan expired pada order kita.

32. Blue digunakan supaya ketika EA melakukan open posisi muncul


sebuah panah kecil berwarna biru yang bisa digunakan sebagai
penanda. Apabila tidak diinginkan munculnya panah bisa diisikan
dengan CLR_NONE. Contoh:

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


Ask+TakeProfit*Point, "", Magic, 0,CLR_NONE);

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); }

34. Jika Sotchastic_Main lebih kecil dari Stochastic_Signal dan


Stochastic_Main lebih dari 80 dan Stochastic_Signal lebih dari 80
dan OpenOrders sama dengan nol maka EA akan melakukan SELL.

35. OpenOrders==0 artinya sebelumnya belum ada posisi yang terbuka


oleh karena open dari EA ini. Ketika sudah ada open posisi karena
EA maka OpenOrders sudah tidak sama lagi dengan nol.

36. Untuk menuliskan maksud penggunaan DAN maka di dalam


pemrograman digunakan simbol &&

37. Selanjutnya kita bahas penggunaan script SELL pada EA tersebut:

OrderSend(Symbol(), OP_SELL, Lots, Bid, 10, Bid+StopLoss*Point, Bid-


TakeProfit*Point, "EA Stochastic", Magic, 0, Red);

38. Perintah Ordersend digunakan untuk mengirimkan order ke pihak


broker dengan beberapa keterangan dan ketentuan yang kita
inginkan.
39. Symbol() digunakan untuk mengorder open posisi baik buy maupun
sell di pair dimana kita attach EA.

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

OrderSend(Symbol(), OP_SELL, Lots, Bid, 10, Bid+StopLoss*Point, Bid-


TakeProfit*Point, "EA Stochastic", Magic, 0, Red);

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.

OrderSend(Symbol(), OP_SELL, Lots, Bid, 10, Bid+StopLoss*Point, Bid-


TakeProfit*Point, "EA Stochastic", Magic, 0, Red);

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.

43. 10 merupakan nilai slippage yang kita gunakan. Dipilih 10 karena


merupakan nilai yang cukup untuk mengakomodasi requote. Makin
besar nilai slippage maka toleransi terhadap requote makin besar.

44. Bid+StopLoss*Point digunakan untuk menentukan titik stoploss


dalam satuan harga mata uang/pair saat itu. Misalkan Bid saat itu
adalah 1.4000 dan StopLoss=40 maka titik Stoplossnya adalah
1.4000 + 40*0.0001 = 1.4040 sebagai titik stoploss

45. Bid-TakeProfit*Point digunakan untuk menentukan titik TakeProfit


dari sebuah open order. Cara menghitungnya sama dengan cara
penghitungan stoploss.

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 “”

47. Magic digunakan untuk memberikan Identitas pada EA berupa angka


Magic yang bisa ditentukan oleh user dari panel EA. Angka yang
diinputkan bisa berupa angka apa saja yang terpenting haruslah unik
dan beda dengan angka magic dari EA lain.

48. 0 digunakan untuk tidak memberikan expired pada order kita.

49. Red digunakan supaya ketika EA melakukan open posisi muncul


sebuah panah kecil berwarna merah yang bisa digunakan sebagai
penanda. Apabila tidak diinginkan munculnya panah bisa diisikan
dengan CLR_NONE.

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.

51. Selamat Berlatih.

18 | 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