Untuk dapat memahami bagaimana suatu program ditulis, maka struktur dari
program harus dimengerti terlebih dahulu. Setiap bahasa pemrograman punya
struktur yang berbeda. Program MQL ini mirip seperti kumpulan fungsi
seperti halnya C++. Fungsi yang harus ada di MQL adalah start(). Suatu
fungsi di program MQL dibuka dengan kurung kurawal ({)dan ditutup
dengan kurawal tutup (}). Di antara kurung kurawal dapat dituliskan
statement-statement program MQL. Berikut adalah struktur dari program
MQL.
#property copyright "Pembuat EA"
int init()
statemen-statemen;
return(0);
int deinit()
{
statemen-statemen;
return(0);
int start()
statemen-statemen;
return(0);
bool
– tipe data boolean yang berisi antara true dan false
color
– tipe data untuk warna – pilihan warna yang bisa digunakan bisa dicek
di sini.
datetime
– tipe data tanggal dan jam
double
– tipe data float (bilangan bulat dan koma)
int
– tipe data integer (bilangan bulat) dari -2 milyar sampe +2 milyar / tipe data
karakter 1 digit
string
– tipe data teks
Selain tipe data di atas, ada juga tipe data array untuk menampung beberapa
data sekaligus dalam 1 variabel. Untuk array, akan saya jelaskan lebih lanjut
di bagian advance nantinya.
int i = 1;
double d = 1.4211;
OrderSend(Symbol(),OP_BUY,1,Ask,3,0,0,"My order
#1",1,0,Green);
if(ma1tp)
{if(Ask<ma1)close(OP_BUY);if(Bid>ma1)close(OP_SELL)
;}
double
ma2=iMA(NULL,0,maperiod2,0,MODE_EMA,PRICE_CLOSE,sh
ift);
Contoh :
atau
int jumlah_lot=1;
Selain semua operator aritmetika di atas, kita juga perlu mengetahui beberapa
operator pembanding, yaitu :
== : sama
!= : tidak sama
|| : atau
! : not
Fungsi-Fungsi Dasar
Setelah tahu mengenai variabel, tahap berikutnya adalah mengenal fungsi-
fungsi dasar dari bahasa MQL. Fungsi-fungsi dasar ini biasanya adalah
seperti fungsi untuk menampilkan hasil di layar, fungsi untuk pasang posisi
(BUY / SELL) dan beberapa fungsi lainnya. Semua referensinya dapat dilihat
di link berikut ini :
OrdersTotal()
iClose(Symbol(),0,1)
AccountFreeMargin()
– Fungsi untuk memasang posisi baru (bisa BUY / SELL)
Bid-var_stoploss*Point, Ask+var_takeprofit*Point,
0);
Bid-var_stoploss*Point, Ask+var_takeprofit*Point,
0);
if(Month() == 12)
Buat yang ingin belajar mengenai bahasa pemrograman MQL lebih jauh
dapat mengunjungi website berikut ini :
MQL4 Online Resources – http://book.mql4.com/
MQL4 eBook – http://www.mql4.com/files/MQl4BookEnglish.chm
MQL5 Online Resources – http://www.mql5.com/en/docs
MQL5 eBook – https://www.mql5.com/files/pdf/mql5.pdf
RELATED
Belajar Membuat EA (Bagian 2) - Membuat EA SederhanaJanuary 29, 2014In "Expert
Advisor"
Canggihnya EA Chartist - Si Inem Cerdas Buatan Secundo LeeMarch 22, 2014In "Expert
Advisor"
Website-Website Terbaik Untuk Belajar ForexDecember 26, 2012In "Links"
Posted onDecember 16, 2013AuthorvendyCategoriesExpert Advisor, Pemrograman MQL
10 thoughts on “Belajar Membuat EA (Bagian 1) –
Pengenalan Bahasa MQL”
1. hidajatsays:
June 1, 2016 at 7:43 am
2. Indahsays:
June 6, 2016 at 6:40 am
Itu template untuk apa? Pas jadi EA kayaknya ga ada fungsinya ya?
REPLY
1. vendysays:
June 6, 2016 at 6:57 am
template itu dipakai untuk tampilan layar. jd misal chart yg biasa kita pakai
tampIlannya candle dengan layar backgroundnya hitam serta candle naik
berwarna biru dan candle turun berwarna merah seta trrpasang indicator
moving average, maka bila kita save dalam bentuk template. setiap kali kita
load template tsb layar akan otomatis berubah tanpa kita melakukan setting
satu per satu
REPLY
3. rahmansays:
September 20, 2016 at 1:52 pm
4. gagahsays:
September 27, 2016 at 2:38 am
5. Lim A Liesays:
June 6, 2017 at 8:54 pm
1. vendysays:
July 17, 2017 at 3:30 am
6. Dominicus Sufjatmikosays:
September 2, 2017 at 8:55 am
1. vendysays:
November 20, 2017 at 2:52 am
coba pelajari yang ada di blog ini step by step. terus pelajari baris2nya satu
persatu. cukup mudah dimengerti kok. asal ada basic pemrograman. Kalo
belum ada sama sekali ya harus belajar dikit2 coba aja beli di toko buku
bahasa pemrograman Pascal atau C
REPLY
Leave a Reply
Your email address will not be published. Required fields are marked *
COMMENT
NAME *
EMAIL *
WEBSITE
Post Comment
Selanjutnya akan muncul Window baru dan pilih File > New. Pilih Expert
Advisor.
Beri nama Expert Advisor yang ingin anda buat. Dalam hal ini saya
memberikan nama EA Buy Sell pada EA ini. Selanjutnya click Finish.
Setelah mengclick finish, maka kita akan masuk ke dalam layar editor dari
MQL.
Langkah 3 – Coding
Setelah kita masuk ke dalam layar editor, kita bisa mulai melakukan coding.
Semua bahasa pemrograman di MQL ini biasanya diletakkan di dalam int
start(). Mengapa ada di sini? Karena setiap kali ada gerakan chart dalam
MetaTrader, fungsi start() ini akan dijalankan. EA berjalan karena ada
gerakan tick dari market. Setiap ada gerakan 1 pips dari market, maka start()
akan dipanggil. Inilah dasar dari bahasa pemrograman EA.
Contoh paling sederhana dari sebuah program adalah menuliskan satu baris
teks pada layar chart yaitu dengan mengetikkan command berikut :
Bila coding kita benar, maka tidak ada pesan error seperti tampak pada
gambar berikut ini.
Karena chart visual yang dimunculkan pada saat Backtest ini adalah chart
kosong, kita bisa membuka template yang sudah kita buat sebelumnya. Di
bagian pojok kiri atas kita akan melihat teks yang kita masukkan akan
muncul pada layar.
//
+--------------------------------------------------
----------------+
//| http://www.forextradingforliving.com |
//
+--------------------------------------------------
----------------+
#property link
"http://www.forextradingforliving.com"
Catatan : Bila broker yang anda gunakan 5 digit, maka tambahkan angka 0
di belakang masing-masing Take Profit, Stop Loss dan Slippage
Langkah 5 – Mengecek apakah ada Posisi atau
Pending Order
Dalam pembuatan program EA, saya biasanya akan membuat sebuah baris
pengecekan yang akan mengecek apakah sudah ada posisi di market atau
tidak. Hampir semua EA yang ada akan melakukan pengecekan ini. Ini
adalah untuk menghindari pemasangan posisi yang terus menerus, karena
program akan selalu dijalankan setiap tick-nya. Baris pengecekannya adalah
sebagai berikut :
if (OrdersTotal()==0)
if (iClose(Symbol(),0,1) >
iMA(Symbol(),0,periodeMA,0,MODE_EMA,
PRICE_CLOSE,1) )
// Lakukan BUY
}
else
if (iClose(Symbol(),0,1) <
iMA(Symbol(),0,periodeMA,0,MODE_EMA,
PRICE_CLOSE,1) )
// Lakukan SELL
Berdasarkan referensi, format dari fungsi BUY dan SELL adalah sebagai
berikut :
int OrderSend(string symbol, int cmd, double volume, double price, int slippa
ge, double stoploss, double takeprofit, string comment=NULL, int magic=0,
datetime expiration=0, color arrow_color=CLR_NONE)
Berarti arti dari OrderSend(Symbol(),OP_BUY, 1.0, Ask, Slippage, Bid-
StopLoss*Point, Ask+TakeProfit*Point, “BELI”, 0, 0, Green);
adalah :Parameters :
symbol – Symbol for trading.
cmd – Operation type. It can be any of the Trade operation enumeration.
volume – Number of lots.
price – Preferred price of the trade.
slippage – Maximum price slippage for buy or sell orders.
stoploss – Stop loss level.
takeprofit – Take profit level.
comment – Order comment text. Last part of the comment may be changed
by server.
magic – Order magic number. May be used as user defined identifier.
expiration – Order expiration time (for pending orders only).
arrow_color – Color of the opening arrow on the chart. If parameter is
missing or has CLR_NONE value opening arrow is not drawn on the chart.
symbol : Symbol() – Mengambil pair mata uang tempat dijalankannya EA
cmd : OP_BUY – Memasang posisi BUY
volume : 1.0 – Jumlah lot yang dipasang adalah 1 lot
price : Ask – Posisi buy yang dipasang adalah pada nilai Ask dari market
slippage : Slippage – Nilai slippage yang ditoleransi pada saat masuk posisi
berdasarkan variabel Slippage
stoploss : Bid-StopLoss*Point – Nilai Stop Loss yang diatur adalah dari nilai
Bid dikurangi dengan variabel StopLoss
takeprofit : Ask+TakeProfit*Point – Nilai Take Profit yang diatur adalah
dari nilai Ask ditambahkan dengan variabel TakeProfit
comment : “BELI” – Komentar yang muncul saat kita melihat history adalah
“BELI”
magicnumber : 12345 – Hanya seperti identifier untuk mengenali trade kita
(Bisa diisi dengan angka sembarang)
expiration : 0 – Karena ini bukan pending order, maka diisi dengan 0.
arrow_color : Green – Tandah panah yang muncul pada saat backtrack
ataupun pada saat EA berjalan berwarna hijau saat ada posisi BUY yang
dipasang
Dengan begitu maka script lengkap dari program EA Buy Sell adalah sebagai
berikut :
//
+--------------------------------------------------
----------------+
//| http://www.forextradingforliving.com |
//
+--------------------------------------------------
----------------+
#property link
"http://www.forextradingforliving.com"
//
+--------------------------------------------------
----------------+
//| expert initialization function |
//
+--------------------------------------------------
----------------+
int init()
//----
//----
return(0);
//
+--------------------------------------------------
----------------+
//
+--------------------------------------------------
----------------+
int deinit()
//----
//----
return(0);
//
+--------------------------------------------------
----------------+
//
+--------------------------------------------------
----------------+
int start()
//----
if (OrdersTotal()==0)
if (iClose(Symbol(),0,1) >
iMA(Symbol(),0,periodeMA,0,MODE_EMA, PRICE_CLOSE,1)
)
}
else
if (iClose(Symbol(),0,1) <
iMA(Symbol(),0,periodeMA,0,MODE_EMA, PRICE_CLOSE,1)
)
//----
return(0);
//
+--------------------------------------------------
----------------+
EA ini menurut saya sangatlah canggih. Kalau biasanya EA yang lain hanya
menetapkan stop loss dan taking profit pada harga yang fix, Inem Cerdas ini
bisa membantu menjaga trading kita dengan nilai Stop Loss dan Taking
Profit berdasarkan garis yang kita tentukan. Untuk lebih jelasnya coba lihat
ilustrasi saya berikut ini.
Oke… Bagi yang sudah belajar mengenai price action, biasanya kita tentu
tahu dengan apa yang namanya garis support dan resistance. Di garis-garis
inilah, harga punya kecenderungan untuk menguji apakah akan terus
melanjutkan trend-nya atau berbalik arah.
Dengan Inem Cerdas, maka kita bisa menyuruh si Inem untuk pasang posisi
dekat dengan garis support / resistance. Contohnya seperti chart berikut ini.
Chart di atas adalah contoh bagaimana saya memasang posisi dengan EA
Chartist (Inem Cerdas). Garis Support #1 adalah titik di mana saya
memasang posisi Buy, sehingga bila harga menyentuh garis tersebut, maka
secara otomatis EA akan memasang posisi BUY. Untuk nilai Stop Loss saya
memasangnya tepat beberapa pips di bawah garis support tersebut.
Sedangkan untuk nilai Take Profit saya memasangnya dekat dengan nilai
High sebelumnya.
Pada saat trader meletakkan Expert Advisors ini pada chart-nya dengan
setting default, EA tidak akan melakukan apa-apa. Robot hanya akan
membuka posisi pada saat harga menyentuh garis-garis dengan nama
tertentu. Nama garis-garis tersebut adalah:
Chartist Buy: EA akan otomatis membuka posisi Buy pada saat pasar
menyentuh garis ini.
Chartist Sell: EA akan otomatis membuka posisi Sell pada saat pasar
menyentuh garis ini.
Chartist Buy TP: Apabila trader mempunyai posisi Buy maka EA akan
otomatis mentutup posisi tersebut apabila pasar sudah berada di atas garis ini.
Chartist Sell TP: Apabila trader mempunyai posisi Sell maka EA akan
otomatis menutup posisi tersebut apabila pasar sudah berada di bawah garis
ini.
Chartist Buy SL: Apabila trader mempunyai posisi Buy maka EA akan
otomatis menutup posisi tersebut apabila pasar sudah berada di bawah garis
ini.
Chartist Sell SL: Apabila trader mempunyai posisi Sell maka EA akan
otomatis menutup posisi tersebut apabila pasar sudah berada di atas garis ini.
Pada saat posisi trader dalam kondisi profit lebih besar dari nilai tertentu
(ProfitLockAfter) maka Chartist EA otomatis akan memindahkan Stop
Loss pada level tertentu (ProfitLockValue) di atas nilai breakeven.
Setelah pasar mengenai garis Chartist Buy, maka garis Chartist Buy akan di
letakan di belakang, sehingga tidak akan terjadi posisi yang gtrader. Garis
Chartist Sell juga akan diletakkan di belakang.
Fungsi Utama Chartist Expert Advisors