Bahasa MQL? Apa sih itu? Bila anda belum pernah dengar apa itu bahasa (bahasa pemrograman) MQL, anda berarti sama seperti orang kebanyakan. Banyak trader forex hanya tahu tentang indicator dan Expert Advisor (EA), tapi saat ditanya bahasa MQL, mereka tidak tahu. Sebenarnya apa sih bahasa MQL itu? MQL (MetaQuotes Language) adalah bahasa pemrograman untuk memprogram EA, Indicator ataupun script yang nantinya bisa digunakan pada platform Meta Trader. Ada beberapa versi dari MQL dan yang paling banyak digunakan adalah 2 versi terakhir yaitu MetaQuotes Language 4 (MQL4) dan MetaQuotes Language 5 (MQL5). Bahasa pemrograman MQL ini sendiri biasanya digunakan untuk membuat :
- 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.
Struktur Program MQL
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"
#property link "Alamat Website"
int init()
{
statemen-statemen;
return(0);
}
int deinit()
{
statemen-statemen;
return(0);
}
int start()
{
statemen-statemen;
return(0);
}
Deklarasi Variabel & Tipe Data
Variabel adalah suatu pengenal yang digunakan untuk menyimpan suatu nilai dan nilai variabel dapat berubah-ubah selama proses dalam program. Variabel harus mempunyai nama supaya program dapat menggunakan nilai yang tersimpan di dalamnya. Variabel dalam MQL sendiri bisa dideklarasikan dalam beberapa tipe data. Ada beberapa jenis tipe data pada program MQL, yaitu :
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.
Berikut adalah contoh cara mendeklarasikan variabel dalam program MQL :
extern bool status = true;
static color warna = 0xFFFFFF;
datetime tgl = D'1980.07.19 12:30:27';
int i = 1;
int karakter = 'A';
double d = 1.4211;
string s = "Ticket # 12345";
double f[] = { 0.0, 0.236, 0.382, 0.5, 0.618, 1.0 };
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 :
Penggunaan static di depan deklarasi variabel biasanya digunakan untuk mendeklarasikan konstanta di mana nilainya tidak bisa berubah-ubah seiring dengan berjalannya proses program.
Catatan : Nama variabel di MQL bersifat case sensitive, sehingga variabel Periode_MA berbeda dengan periode_ma.
Adapun ada beberapa aturan dalam memberi nama variabel yaitu :
– Panjang nama variabel maksimal adalah 31 karakter
– Harus diawali huruf besar, huruf kecil atau _ (tidak bisa angka atau simbol lain selain _ )
– Tidak bisa menggunakan keyword (contoh keyword : bool, color, extern, static, case, else, if, true, false dan lain-lain)
Keyword sebagai Standard Constants
Untuk lebih mempermudah penulisan program, MQL telah mempunyai semacam konstanta yang sudah ada dalam program. Konstanta ini biasanya sering dipakai saat kita hendak menuliskan nilai-nilai tertentu mulai dari market price, timeframe, jenis pemasangan posisi, arrow, dan masih banyak lagi . Semuanya dapat anda akses hanya dengan menuliskan nama konstantanya. Semua konstanta di sini bertipe int. List lengkap standard constants dapat dilihat di sini.
Contoh penggunaan Standard Constants (yang berwarna biru) :
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,shift);
Catatan / Komentar pada Program
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;
Operator Aritmetika & Assignment Operator
Operator yang digunakan pada bahasa MQL ini sangat mirip dengan bahasa C++. Berikut adalah beberapa contoh penggunaan operator aritmetika :
A=B+C //A = B ditambah C
A=B-C //A = B dikurangi C
A=B*C //A = B dikali C
A=B/C //A = B dibagi C
A=B%C //A = Sisa pembagian setelah B dibagi C. Misalnya 10 % 3 = 1;
A++; //versi singkat dari operasi A=A+1
B--; //versi singkat dari operasi B=B-1
A=B*5; //isi dari A sama dengan B dikali 5
A+=5; //versi singkat dari A=A+5
A-=5; //versi singkat dari A=A-5
A%=5; //versi singkat dari A=A%5;
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 :
if (a==b) { } //kalau a sama dengan b
if (a>b) { } // kalau a lebih besar dari b
if (a!=b) { } // kalau a tidak sama dengan b
if (a==b && c<d) { } //jika a sama dengan b dan c lebih kecil dari d
if (!a==b || c>=d) { } //jika a tidak sama dengan b atau c lebih besar
atau sama dengan d
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");
– Fungsi untuk mengecek jumlah order yang sudah dipasang
OrdersTotal()
– Fungsi untuk mengecek nilai harga dari market
iClose(Symbol(),0,1)
– Fungsi untuk mengecek jumlah order yang sudah dipasang
AccountFreeMargin()
– Fungsi untuk memasang posisi baru (bisa BUY / SELL)
OrderSend(Symbol(), OP_BUY, var_jml_lot, Ask, var_slippage,
Bid-var_stoploss*Point, Ask+var_takeprofit*Point, 0);
OrderSend(Symbol(), OP_BUY, var_jml_lot, Ask, var_slippage,
Bid-var_stoploss*Point, Ask+var_takeprofit*Point, 0);
Decision (Penyeleksian Kondisi) & Looping (Perulangan)
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!");
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
SUMBER
Forex Trading For Living