MQL5 adalah bahasa pemrograman tingkat tinggi yang digunakan untuk mengembangkan indikator kustom, expert advisor (EA), dan strategi trading otomatis lainnya untuk platform trading MetaTrader 5. Berikut beberapa fitur utama bahasa MQL5:
- Pemrograman Berorientasi Objek: MQL5 adalah bahasa berorientasi objek, yang berarti bahasa ini berbasis pada konsep objek yang berisi data sekaligus metode. Hal ini membuat pemrograman lebih mudah dan efisien, serta memungkinkan pengorganisasian dan penggunaan ulang kode yang lebih baik.
- Lingkungan Pengembangan Terintegrasi: MQL5 dilengkapi dengan lingkungan pengembangan terintegrasi (IDE) yang mencakup editor kode, compiler, dan debugger. Dengan demikian, Anda dapat menulis dan menguji kode langsung di dalam platform MetaTrader 5.
- Pustaka yang Lengkap: MQL5 memiliki pustaka fungsi dan indikator bawaan yang lengkap yang dapat digunakan untuk mengembangkan strategi trading. Selain itu, tersedia banyak pustaka pihak ketiga yang dapat diintegrasikan ke dalam program MQL5.
- Pemrograman Berbasis Peristiwa: MQL5 menggunakan model pemrograman berbasis peristiwa (event-driven), yang berarti program dijalankan sebagai respons terhadap peristiwa tertentu, seperti perubahan harga, eksekusi order, atau peristiwa timer.
- Multi-Threading: MQL5 mendukung pemrograman multi-thread, yang berarti beberapa thread dapat dibuat untuk menjalankan bagian-bagian program yang berbeda secara bersamaan. Hal ini berguna untuk mengoptimalkan kinerja dan mengelola strategi trading yang kompleks.
- Dukungan untuk Berbagai Tipe Data: MQL5 mendukung beragam tipe data, termasuk bilangan bulat, bilangan floating-point, string, dan array. Selain itu, MQL5 memiliki dukungan bawaan untuk mengolah data keuangan, seperti data harga dan volume.
Berikut contoh sederhana program MQL5 yang menghitung moving average dari sebuah pasangan mata uang dan mencetak hasilnya ke jendela terminal:
// --- input parameters
input int Period = 20; // Period of the moving average
input ENUM_APPLIED_PRICE PriceType = PRICE_CLOSE; // Applied price type
// --- global variables
double MovingAverage; // Moving average value
// --- initialization function
int OnInit()
{
// Initialize the MovingAverage variable
MovingAverage = 0.0;
return(INIT_SUCCEEDED);
}
// --- main function
void OnTick()
{
// Calculate the moving average
MovingAverage = iMA(_Symbol, 0, Period, 0, PriceType, MODE_SMA, 0);
// Print the result to the terminal window
Print("Moving Average: ", MovingAverage);
}