MQL5 là ngôn ngữ lập trình bậc cao được dùng để phát triển chỉ báo tùy chỉnh, robot giao dịch (EA) và các chiến lược giao dịch tự động khác cho nền tảng giao dịch MetaTrader 5. Dưới đây là một số tính năng chính của ngôn ngữ MQL5:
- Lập trình hướng đối tượng: MQL5 là ngôn ngữ hướng đối tượng, nghĩa là dựa trên khái niệm đối tượng chứa cả dữ liệu lẫn phương thức. Điều này giúp lập trình dễ dàng và hiệu quả hơn, đồng thời tổ chức và tái sử dụng mã tốt hơn.
- Môi trường phát triển tích hợp: MQL5 đi kèm môi trường phát triển tích hợp (IDE) gồm trình soạn thảo mã, trình biên dịch và trình gỡ lỗi. Nhờ vậy, bạn có thể viết và kiểm thử mã ngay trong nền tảng MetaTrader 5.
- Thư viện phong phú: MQL5 có thư viện phong phú gồm các hàm và chỉ báo tích hợp sẵn để phát triển chiến lược giao dịch. Ngoài ra, còn có nhiều thư viện của bên thứ ba có thể tích hợp vào các chương trình MQL5.
- Lập trình hướng sự kiện: MQL5 sử dụng mô hình lập trình hướng sự kiện, nghĩa là chương trình được thực thi để phản hồi các sự kiện cụ thể, chẳng hạn như thay đổi giá, khớp lệnh hoặc sự kiện bộ hẹn giờ.
- Đa luồng: MQL5 cho phép lập trình đa luồng, nghĩa là có thể tạo nhiều luồng để thực thi đồng thời các phần khác nhau của một chương trình. Điều này hữu ích để tối ưu hiệu năng và quản lý các chiến lược giao dịch phức tạp.
- Hỗ trợ nhiều kiểu dữ liệu: MQL5 hỗ trợ nhiều kiểu dữ liệu, bao gồm số nguyên, số thực dấu phẩy động, chuỗi và mảng. Ngoài ra, ngôn ngữ này còn hỗ trợ sẵn việc xử lý dữ liệu tài chính, chẳng hạn như dữ liệu giá và khối lượng.
Dưới đây là một ví dụ đơn giản về chương trình MQL5 tính đường trung bình động của một cặp tiền tệ và in kết quả ra cửa sổ 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);
}