Expert Advisor EA atau banyak dikenal orang sebagai robot adalah program yang
berjalan seiring dengan gerakan harga pada market. EA sendiri punya banyak fungsi. Ada
yang berfungsi memberikan sinyal saja sampai dengan melakukan eksekusi seperti
memasang posisi baru ataupun menutup posisi secara otomatis.EA tersimpan di folder
\experts dalam folder MetaTrader anda.
Custom Indicator Selain indicator bawaan dari MetaTrader, kita juga bisa membuat
indicator sendiri (custom indicator). Sedikit berbeda dengan EA yang bisa memasang
posisi dan menutup posisi, indicator hanya berfungsi sebagai alat analisa saja. Indicator
tidak dapat memasang posisi ataupun menutup posisi secara otomatis.Custom Indicators
tersimpan di folder \experts\indicators dalam folder Meta Trader anda.
Script Script adalah program yang dijalankan sekali saja saat diaktifkan. Tidak seperti
EA, Script tidak akan bisa berjalan mengikuti harga yang sedang berjalan. Script
biasanya diaktifkan dengan cara mengclick script tersebut.Scripts tersimpan di
folder \experts\scripts dalam folder Meta Trader anda.
Library Library adalah sekumpulan fungsi program yang biasanya sering digunakan.
Library ini biasanya merupakan salah satu bagian dari Script / EA / Indicator.Libraries
tersimpan di folder \experts\libraries dalam folder Meta Trader anda.
Included file Included file adalah file yang berisi bagian teks-teks yang sering
digunakan pada pembuatan sebuah program. Secara fungsi, included file mirip seperti
library. Included file ini nantinya dapat dimasukkan pada EA, scripts, custom indicator
ataupun library pada saat compile. Penggunaan included file lebih disukai programmer
karena penggunaan library biasanya memberikan beban ekstra pada saat EA / indicator /
script dijalankan.Included files tersimpan di folder \experts\include dalam folder Meta
Trader anda
Bagi yang pernah belajar bahasa pemrograman C++ mungkin akan sedikit terbantu saat belajar
mengenai bahasa pemrograman MQL, karena banyak syntax dari bahasa MQL mirip dengan
syntax dari bahasa C++. Satu-satunya kelemahan dari MQL mungkin adalah tidak adanya
debugging untuk melacak step by step program yang dibuat. Okay Sebagai pengenalan, kita
akan langsung masuk ke dasar-dasar dari pemrograman MQL.
tipe data untuk warna pilihan warna yang bisa digunakan bisa dicek di sini.
datetime
tipe data integer (bilangan bulat) dari -2 milyar sampe +2 milyar / tipe data karakter 1 digit
string
Penggunaan extern di depan deklarasi variabel biasanya digunakan agar variabel dapat juga
berfungsi sebagai input dan bisa diakses dari window property EA di Meta Trader.
Contoh bila kita membuat variabel seperti di bawah ini :
Maka bila di properties dari EA kita akan muncul seperti di bawah ini :
Seperti halnya di semua bahasa pemrograman, anda juga bisa memberikan catatan atau komentar
pada bahasa MQL. Comment di sini tidak akan dibaca oleh program dan hanya berfungsi sebagai
petunjuk atau catatan bagi programmer untuk lebih mengerti mengenai program yang dibuat.
Cara penulisan komentar pada program MQL ada 2 yaitu :
1. Tambahkan // di awal komentar
2. Gunakan /* */
Contoh :
int jumlah_lot=1; // Total Lot untuk pasang posisi
atau
/* Total Lot untuk pasang posisi */
int jumlah_lot=1;
//A
//A
//A
//A
//A
=
=
=
=
=
B ditambah C
B dikurangi C
B dikali C
B dibagi C
Sisa pembagian setelah B dibagi C. Misalnya 10 % 3 = 1;
Selain semua operator aritmetika di atas, kita juga perlu mengetahui beberapa operator
pembanding, yaitu :
== : sama
!= : tidak sama
< : lebih kecil dari > : lebih besar dari
<= : lebih kecil dari atau sama dengan
>= : lebih besar dari atau sama dengan
&& : dan
|| : atau
! : not
Operator pembanding ini biasanya sering digunakan pada penyeleksian kondisi, contohnya :
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 :
Fungsi Umum Fungsi umum untuk menampilkan tulisan pada layar, menampilkan message
box, dll
Fungsi Trading Fungsi yang berhubungan dengan pasang / tutup posisi, mengecek order yang
ada, dll
Fungsi Harga Fungsi untuk mendapatkan nilai close, high, low, open dari harga.
Sebagai sedikit pengenalan bagi yang baru belajar, berikut adalah beberapa fungsi yang sering
sekali saya pakai saat membuat EA.
Fungsi untuk menampilkan tulisan pada layar
Comment("Teks yang ingin ditampilkan di layar");
Di dalam program, selain statemen dari fungsi-fungsi yang dijalankan berurutan, juga ada
statemen yang memungkinkan program untuk melakukan tindakan tertentu berdasarkan kondisi
ataupun melakukan proses perulangan berdasarkan kondisi tertentu. Decision dan looping adalah
inti dari sebuah program komputer.
Statemen yang umum biasanya digunakan adalah untuk proses penyeleksian kondisi (IF) dan
proses perulangan (Do While). Di dalam MQL, hal ini juga bisa dilakukan. berikut adalah
contoh-contoh statemen tersebut :
if(p!=x && p>y) Comment("TRUE");
if(!a) Comment("not 'a'");
for(i=0,j=99; i<100; i++,j--) Comment(array[i][j]);
if(Month() == 12)
if(Day() == 31) Comment("Happy New Year!");
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 :
Comment ("Teks yang muncul di layar")
Setelah selesai, kita bisa save dan langsung meng-compilenya. Click Compile yang ada di bagian
atas dari MQL Editor.
Bila coding kita benar, maka tidak ada pesan error seperti tampak pada gambar berikut ini.
Sekarang coba untuk melihat hasil coding kita di MetaTrader. Click saja View > Strategy
Tester. Pilih EA yang kita buat tadi selanjutnya click Start.
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.
Catatan : Bila broker yang anda gunakan 5 digit, maka tambahkan angka 0 di belakang masingmasing Take Profit, Stop Loss dan Slippage
Langkah 6 Mengecek apakah ada harga ada di atas / bawah dari garis MA
Nah Selanjutnya kita tinggal membuat statemen pengecekan yang mengecek posisi harga
apakah berada di bawah atau di atas garis Moving Average (MA). Baris untuk mengecek adalah
sebagai berikut :
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
}
Fungsi untuk mendapatkan nilai harga penutupan (close) menurut referensi adalah :
double iClose(string symbol, int timeframe, int shift)
Keterangan :
symbol Symbol the data of which should be used to calculate indicator. NULL means the
current symbol.
timeframe Timeframe. It can be any of Timeframe enumeration values. 0 means the current
chart timeframe.
shift Index of the value taken from the indicator buffer (shift relative to the current bar the
given amount of periods ago).
Di sini arti dari iClose(Symbol(),0,1) adalah :
shift : 1 Ini artinya nilai close (harga penutupan) yang diambil adalah dari 1 candle
sebelum price yang sedang aktif
Sedangkan fungsi Moving Average sendiri menurut referensi adalah sebagai berikut :
double iMA(string symbol, int timeframe, int period, int ma_shift, int ma_meth
od, int applied_price, int shift)
Parameters:
symbol Symbol the data of which should be used to calculate indicator. NULL means the
current symbol.
timeframe Timeframe. It can be any of Timeframe enumeration values. 0 means the current
chart timeframe.
period Averaging period for calculation.
ma_shift MA shift. Indicators line offset relate to the chart by timeframe.
ma_method MA method. It can be any of the Moving Average method enumeration value.
applied_price Applied price. It can be any of Applied price enumeration values.
shift Index of the value taken from the indicator buffer (shift relative to the current bar the
given amount of periods ago).
Berarti arti dari iMA(Symbol(),0,periodeMA,0,MODE_SMA, PRICE_CLOSE,1) adalah :
period : periodeMA periode dari MA yang digunakan diambil dari variabel periodeMA
shift : 1 Nilai MA yang dihitung adalah berdasarkan harga penutupan (close) dari 1
candle sebelum price yang sedang aktif
Berdasarkan referensi, format dari fungsi BUY dan SELL adalah sebagai berikut :
int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss,
double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_colo
r=CLR_NONE)
Berarti arti dari OrderSend(Symbol(),OP_BUY, 1.0, Ask, Slippage, BidStopLoss*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.
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)
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 :
//+------------------------------------------------------------------+