Belajar Membuat EA (Bagian 1) – Pengenalan Bahasa MQL

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 :

Screen shot 2014-01-22 at 4.15.30 PM

Maka bila di properties dari EA kita akan muncul seperti di bawah ini :

Screen shot 2014-01-22 at 4.15.45 PM

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

8 thoughts on “Belajar Membuat EA (Bagian 1) – Pengenalan Bahasa MQL”

    1. 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

Leave a Reply

Your email address will not be published. Required fields are marked *