MQL5 là gì? Đây là bộ não đứng sau các chiến lược giao dịch tự động, giúp trader biến ý tưởng thành các robot và chỉ báo thông minh vận hành trên thị trường. So với MQL4, MQL5 nổi bật với hiệu suất mạnh mẽ, khả năng phân tích sâu và mở rộng linh hoạt, giúp tối ưu hóa chiến lược một cách chuyên nghiệp. Trong bài viết này, VinaHost sẽ hướng dẫn bạn khám phá chi tiết MQL5 và so sánh với MQL4, để bạn dễ dàng chọn phiên bản phù hợp nhất với nhu cầu của mình.
MQL5 là ngôn ngữ lập trình chuyên dụng trên nền tảng MetaTrader 5, cho phép trader xây dựng robot giao dịch (Expert Advisor – EA), chỉ báo kỹ thuật tùy chỉnh và các công cụ hỗ trợ giao dịch hoàn toàn tự động. Được phát triển dựa trên C++, MQL5 sở hữu khả năng xử lý mạnh mẽ, giúp trader tối ưu chiến lược, giảm ảnh hưởng cảm xúc và nâng cao hiệu suất giao dịch trong dài hạn.
💡 MQL5 giúp trader làm được gì?
🤖 Tự động hóa giao dịch với EA hoạt động 24/7, không phụ thuộc vào cảm xúc
📊 Phân tích kỹ thuật chuyên sâu thông qua hệ thống chỉ báo và công cụ tùy chỉnh
🧪 Kiểm thử và tối ưu chiến lược dựa trên dữ liệu lịch sử một cách chính xác
🛡️ Quản lý lệnh và rủi ro theo quy tắc rõ ràng, có hệ thống
🔍 Quy trình viết và kiểm thử EA trên MQL5
🧩 Mở MetaEditor và tạo Expert Advisor (EA) đúng chuẩn MQL5
⚙️ Thiết lập các tham số đầu vào như Stop Loss, Take Profit và chỉ báo kỹ thuật
🧠 Xây dựng logic giao dịch và nguyên tắc quản lý rủi ro cho EA
🔄 Biên dịch và kiểm thử EA bằng Strategy Tester trên dữ liệu lịch sử
▶️ Cài đặt và chạy EA trực tiếp trên biểu đồ MT5 một cách an toàn
👉 Phần hướng dẫn chi tiết bên dưới sẽ giúp bạn nắm rõ từng bước để viết và kiểm thử EA bằng MQL5, từ khởi tạo đến vận hành chiến lược tự động hiệu quả 🚀
1. MQL5 là gì?
MQL5 (MetaQuotes Language 5) là ngôn ngữ lập trình cấp cao dành cho nền tảng MetaTrader 5 (MT5). Hoạt động theo thời gian thực, phù hợp xây dựng hệ thống giao dịch chuyên nghiệp.
Dùng để phát triển:
Expert Advisor (EA) – giao dịch tự động
Chỉ báo kỹ thuật tùy chỉnh
Công cụ phân tích và hỗ trợ ra quyết định
Đặc điểm kỹ thuật:
Dựa trên nền tảng C++ với cú pháp quen thuộc
Hỗ trợ class, struct, enum, xử lý sự kiện
Tương tác với ứng dụng bên ngoài qua DLL
Hiệu suất và tính linh hoạt cao hơn MQL4

2. Các chức năng chính của MQL5
Để hiểu rõ hơn về MQL5, hãy cùng khám phá những chức năng nổi bật của nó ngay dưới đây
2.1. Robot giao dịch (EA)
Robot Forex (Expert Advisor – EA) là chức năng nổi bật nhất của MQL5, cho phép trader tự động hóa chiến lược giao dịch. Những điểm chính của EA bao gồm:
- Tự động thực hiện lệnh: Mua/bán theo các thuật toán lập trình sẵn, giảm thiểu thao tác thủ công.
- Quản lý rủi ro: EA có thể thiết lập mức dừng lỗ, chốt lời và quản lý vốn thông minh.
- Tối ưu hóa lợi nhuận: Thực hiện giao dịch dựa trên chiến lược đã kiểm chứng, giúp khai thác cơ hội hiệu quả.
- Hoạt động 24/7: Giám sát thị trường liên tục, không bỏ lỡ cơ hội dù trader không trực tiếp theo dõi.

2.2. Phân tích kỹ thuật
MQL5 cung cấp các công cụ mạnh mẽ để phân tích thị trường tài chính, giúp trader đưa ra quyết định chính xác hơn. Các chức năng chính gồm:
- Chỉ báo kỹ thuật tùy chỉnh: Cho phép tạo và sử dụng các chỉ báo riêng phù hợp với chiến lược giao dịch cá nhân.
- Công cụ đồ họa trực quan: Vẽ trendline, kênh giá, Fibonacci… giúp phân tích biểu đồ dễ dàng và trực quan hơn.
- Tích hợp dữ liệu thời gian thực: Theo dõi biến động giá, khối lượng và các chỉ số thị trường ngay lập tức.
- Hỗ trợ nhiều khung thời gian: Giúp phân tích từ ngắn hạn đến dài hạn để lập chiến lược hiệu quả.

2.3. Tự động hóa tác vụ đơn lẻ (Scripts)
Trong MQL5, Scripts là các chương trình nhỏ giúp tự động hóa những tác vụ đơn lẻ mà trader thường thực hiện thủ công. Một số điểm nổi bật gồm:
- Thực hiện nhanh các lệnh đơn giản: Như đóng tất cả lệnh mở, đặt lệnh theo mẫu sẵn, hoặc tính toán các thông số giao dịch.
- Tiết kiệm thời gian: Thay vì thao tác thủ công nhiều bước, script có thể hoàn thành chỉ với một cú nhấp chuột.
- Hỗ trợ kiểm thử và phân tích: Giúp đánh giá các chiến lược hoặc dữ liệu lịch sử mà không cần can thiệp thủ công.
- Dễ tùy chỉnh: Trader có thể viết script riêng phù hợp với nhu cầu cá nhân hoặc chiến lược riêng.
2.4. Quản lý và phân tích thị trường
MQL5 cung cấp các công cụ mạnh mẽ để quản lý và theo dõi thị trường toàn diện, giúp trader nắm bắt cơ hội và tối ưu hóa chiến lược giao dịch. Những điểm nổi bật gồm:
- Giám sát nhiều thị trường cùng lúc: Theo dõi biến động giá, khối lượng và các chỉ số trên nhiều cặp tiền tệ hoặc sản phẩm tài chính.
- Cảnh báo và thông báo tự động: Nhận tín hiệu khi thị trường đạt các điều kiện nhất định, giúp phản ứng nhanh chóng.
- Phân tích dữ liệu lịch sử: So sánh và đánh giá hiệu quả chiến lược dựa trên dữ liệu quá khứ.
- Tích hợp trực tiếp với EA và Scripts: Cho phép kết hợp quản lý thị trường với giao dịch tự động và tác vụ riêng lẻ, nâng cao hiệu quả tổng thể.

Từ những nội dung trên, có thể thấy MQL5 là nền tảng toàn diện, giúp trader tự động hóa giao dịch, phân tích kỹ thuật và quản lý thị trường. Robot giao dịch (EA) hoạt động liên tục, Scripts hỗ trợ các tác vụ đơn lẻ, còn các công cụ phân tích và quản lý thị trường giúp ra quyết định nhanh chóng và tối ưu chiến lược hiệu quả.
Tuy nhiên, để các EA và chiến lược giao dịch bằng MQL5 hoạt động ổn định, liên tục và không bị gián đoạn bởi việc tắt máy hay mất kết nối internet, trader thường cần đến giải pháp VPS Forex. Trong đó, VPS Forex tại VinaHost là dịch vụ máy chủ ảo chuyên dụng dành riêng cho trader, được tối ưu để chạy MetaTrader 4 (MT4), MetaTrader 5 (MT5) và các robot giao dịch (EA) 24/7 với độ ổn định cao. Đặc biệt, VinaHost hiện cung cấp chương trình dùng thử VPS Forex 7 ngày cùng chính sách hoàn tiền trong 5 ngày đầu, giúp trader có thể trải nghiệm dịch vụ một cách hoàn toàn không rủi ro trước khi quyết định sử dụng lâu dài. Đây là giải pháp phù hợp để đảm bảo EA viết bằng MQL5 vận hành mượt mà, không bỏ lỡ cơ hội giao dịch và tối ưu hiệu quả chiến lược.

3. Đặc điểm nổi bật của MQL5
Sau khi tìm hiểu các chức năng chính, hãy cùng điểm qua những đặc điểm nổi bật giúp MQL5 trở thành ngôn ngữ lập trình mạnh mẽ và linh hoạt cho trader.
3.1. Dựa trên C++
MQL5 được xây dựng dựa trên ngôn ngữ C++, mang đến nhiều lợi thế cho trader và lập trình viên:
- Cú pháp quen thuộc: Những ai đã biết C++ hoặc các ngôn ngữ lập trình hiện đại sẽ dễ dàng học và sử dụng MQL5.
- Hiệu suất cao: Hỗ trợ xử lý nhanh các thuật toán giao dịch và phân tích dữ liệu phức tạp.
- Khả năng mở rộng: Dễ dàng tích hợp với các thư viện, công cụ và ứng dụng bên ngoài thông qua DLL.
- Tương thích lập trình nâng cao: Cho phép xây dựng các hệ thống giao dịch phức tạp, chỉ báo tùy chỉnh và robot chuyên nghiệp.
3.2. Hướng đối tượng
MQL5 hỗ trợ lập trình hướng đối tượng (OOP), giúp xây dựng các hệ thống giao dịch và chỉ báo phức tạp một cách khoa học và hiệu quả:
- Tổ chức mã rõ ràng: Giúp tách riêng các chức năng, dễ quản lý và bảo trì chương trình.
- Tái sử dụng mã: Các lớp và đối tượng có thể dùng lại trong nhiều chương trình khác nhau, tiết kiệm thời gian phát triển.
- Tăng tính linh hoạt: Cho phép mở rộng và nâng cấp chiến lược giao dịch mà không ảnh hưởng đến các phần khác của chương trình.
- Hỗ trợ lập trình nâng cao: Dễ dàng xây dựng robot giao dịch, chỉ báo tùy chỉnh và các công cụ phức tạp theo yêu cầu riêng.
3.3. Tích hợp sâu
MQL5 được thiết kế để tích hợp sâu với nền tảng MetaTrader 5, mang lại trải nghiệm liền mạch và hiệu quả cho trader:
- Kết nối trực tiếp với MetaTrader 5: Cho phép EA, Scripts và chỉ báo hoạt động trơn tru mà không cần cài đặt thêm.
- Hỗ trợ dữ liệu thời gian thực: Theo dõi biến động giá, khối lượng và các chỉ số thị trường ngay lập tức.
- Tương tác với các ứng dụng bên ngoài: Dễ dàng tích hợp DLL và các công cụ hỗ trợ khác, mở rộng khả năng phân tích và giao dịch.
- Tích hợp với Market và Signal: Cho phép mua bán robot, chỉ báo và theo dõi tín hiệu giao dịch ngay trên nền tảng.
4. Ưu và nhược điểm của MQL5
Như bất kỳ ngôn ngữ lập trình nào, MQL5 cũng có những điểm mạnh và hạn chế riêng. Hiểu rõ ưu nhược điểm sẽ giúp trader sử dụng hiệu quả các công cụ và chiến lược giao dịch mà MQL5 cung cấp.
4.1. Ưu điểm
MQL5 sở hữu nhiều ưu điểm nổi bật giúp trader tối ưu hóa giao dịch và phân tích thị trường:
- Tự động hóa toàn diện: Hỗ trợ EA và Scripts để thực hiện chiến lược giao dịch 24/7 mà không cần thao tác thủ công.
- Hiệu suất cao: Xử lý các thuật toán phức tạp và dữ liệu lớn nhanh chóng, phù hợp cho phân tích kỹ thuật nâng cao.
- Hướng đối tượng và cú pháp C++: Giúp lập trình dễ dàng, tái sử dụng mã và phát triển các hệ thống giao dịch phức tạp.
- Tích hợp sâu với MetaTrader 5: Cho phép kết hợp trực tiếp với Market, Signal và các công cụ phân tích thời gian thực.
- Linh hoạt và mở rộng: Dễ dàng tích hợp DLL, tạo chỉ báo tùy chỉnh và robot theo nhu cầu cá nhân.
- Hỗ trợ nhiều khung thời gian và thị trường: Giúp phân tích từ ngắn hạn đến dài hạn, theo dõi nhiều sản phẩm cùng lúc.
4.2. Nhược điểm
Bên cạnh những ưu điểm nổi bật, MQL5 vẫn tồn tại một số hạn chế mà trader cần cân nhắc:
- Độ phức tạp cao hơn: So với MQL4, MQL5 có nhiều tính năng nâng cao, đòi hỏi người mới cần thời gian làm quen và học tập.
- Yêu cầu kiến thức lập trình: Để khai thác tối đa sức mạnh của MQL5, trader cần có nền tảng lập trình, đặc biệt là tư duy hướng đối tượng.
- Khó chuyển đổi từ MQL4: Các EA và chỉ báo viết bằng MQL4 không thể sử dụng trực tiếp trên MQL5, cần chỉnh sửa hoặc viết lại.
- Phụ thuộc nền tảng MT5: MQL5 chỉ hoạt động trên MetaTrader 5, hạn chế với những trader vẫn quen sử dụng MT4.
5. Bảng so sánh giữa MQL5 và MQL4
Dù cùng được phát triển bởi MetaQuotes, MQL5 và MQL4 lại khác nhau rõ rệt về kiến trúc lập trình, khả năng xử lý và mức độ hỗ trợ các chiến lược giao dịch hiện đại. Bảng so sánh dưới đây sẽ làm rõ những khác biệt cốt lõi này.
| Tiêu chí | MQL4 | MQL5 |
| Nền tảng hỗ trợ | MetaTrader 4 | MetaTrader 5 |
| Ngôn ngữ nền tảng | Gần với C, ít mở rộng | Dựa trên C++, hiện đại hơn |
| Lập trình hướng đối tượng (OOP) | Hạn chế, hỗ trợ cơ bản | Hỗ trợ đầy đủ (class, object, kế thừa…) |
| Hiệu suất xử lý | Phù hợp chiến lược đơn giản | Xử lý nhanh, tối ưu cho thuật toán phức tạp |
| Khả năng xử lý đa luồng | Không hỗ trợ | Hỗ trợ đa luồng, tận dụng tốt CPU |
| Hệ thống kiểm thử (Strategy Tester) | Kiểm thử đơn luồng, hạn chế | Kiểm thử đa luồng, đa cặp, mô phỏng thị trường chính xác hơn |
| Quản lý lệnh giao dịch | Dựa trên ticket, khó quản lý lệnh phức tạp | Dựa trên position và order, linh hoạt hơn |
| Phân tích dữ liệu thị trường | Dữ liệu và khung thời gian hạn chế | Hỗ trợ nhiều khung thời gian, nhiều loại dữ liệu |
| Khả năng mở rộng | Hạn chế khi xây dựng hệ thống lớn | Dễ mở rộng, phù hợp hệ thống giao dịch chuyên nghiệp |
| Tích hợp Market & Signals | Có nhưng giới hạn | Tích hợp sâu với MQL5 Market và Signals |
| Độ phù hợp với trader mới | Dễ tiếp cận, học nhanh | Khó hơn, cần kiến thức lập trình tốt |
| Khả năng phát triển dài hạn | Dần bị thu hẹp | Được MetaQuotes ưu tiên phát triển |
Tóm lại:
- MQL4 phù hợp với trader thích sự đơn giản, quen dùng MT4 và các chiến lược cơ bản.
- MQL5 hướng tới giao dịch chuyên nghiệp, chiến lược phức tạp, hiệu suất cao và khả năng mở rộng lâu dài.
6. Tổng hợp các hàm của MQL5
Để lập trình hiệu quả với MQL5, trader cần nắm rõ các nhóm hàm quan trọng phục vụ giao dịch, phân tích kỹ thuật, xử lý dữ liệu và sự kiện. Dưới đây là tổng hợp các hàm MQL5 thường được sử dụng nhất.
6.1. Hàm Quản lý Giao dịch (Trading Functions)
Nhóm hàm quản lý giao dịch trong MQL5 cho phép mở, đóng, quản lý lệnh và truy cập lịch sử giao dịch một cách linh hoạt và chính xác.
OrderSend(): Là hàm cốt lõi dùng để gửi yêu cầu giao dịch như mở lệnh, sửa lệnh hoặc đóng lệnh. Trong MQL5, hàm này hoạt động thông qua cấu trúcMqlTradeRequestvà trả kết quả bằngMqlTradeResult, giúp kiểm soát giao dịch chi tiết hơn.PositionOpen()/PositionClose(): Hai hàm này dùng để mở và đóng vị thế giao dịch đang hoạt động. Chúng giúp trader quản lý vị thế rõ ràng hơn theo mô hình Position của MQL5, thay vì xử lý từng lệnh riêng lẻ như MQL4.Trade.Buy()/Trade.Sell(): Là các hàm thuộc lớp CTrade, cho phép thực hiện giao dịch mua hoặc bán nhanh gọn với cú pháp đơn giản. Đây là lựa chọn phổ biến khi xây dựng EA vì dễ sử dụng và giảm độ phức tạp của mã nguồn.HistoryOrderSelect()/HistoryDealSelect(): Dùng để truy cập lịch sử lệnh và lịch sử giao dịch đã khớp, phục vụ việc thống kê, phân tích hiệu quả chiến lược hoặc kiểm tra kết quả giao dịch trong EA.
6.2. Hàm Phân tích Kỹ thuật (Technical Analysis Functions)
Nhóm hàm phân tích kỹ thuật trong MQL5 giúp trader xây dựng và sử dụng các chỉ báo phổ biến để đánh giá xu hướng, động lượng và tín hiệu giao dịch.
iMA()– Moving Average (MA): Hàm dùng để tạo đường trung bình động, giúp xác định xu hướng thị trường và các điểm vào/thoát lệnh tiềm năng. iMA thường được sử dụng trong các chiến lược theo xu hướng hoặc giao cắt đường MA.iRSI()– Relative Strength Index (RSI): Hàm tính chỉ số sức mạnh tương đối, dùng để xác định vùng quá mua và quá bán. RSI thường hỗ trợ trader nhận diện điểm đảo chiều hoặc xác nhận tín hiệu giao dịch.iMACD()– Moving Average Convergence Divergence (MACD): Hàm tạo chỉ báo MACD, giúp đánh giá động lượng và xu hướng giá thông qua sự hội tụ và phân kỳ của các đường trung bình. MACD thường được dùng để xác định tín hiệu mua/bán và thay đổi xu hướng.iBands()– Bollinger Bands: Hàm dùng để tạo dải Bollinger, phản ánh mức độ biến động của thị trường. Trader có thể dựa vào Bollinger Bands để xác định vùng giá cao/thấp và các điểm breakout tiềm năng.CopyBuffer(): Hàm dùng để lấy dữ liệu từ bộ đệm của chỉ báo (Indicator Buffer). Đây là bước quan trọng để EA hoặc Indicator có thể đọc giá trị chỉ báo và đưa ra quyết định giao dịch tự động.
6.3. Hàm Dữ liệu & Giá (Data & Price Functions)
Nhóm hàm dữ liệu và giá trong MQL5 cho phép trader truy xuất thông tin thị trường, dữ liệu giá và các thông số quan trọng phục vụ phân tích và giao dịch tự động.
CopyRates(): Hàm dùng để lấy dữ liệu lịch sử giá (OHLC) theo dạng nến trong một khoảng thời gian xác định. CopyRates thường được sử dụng để phân tích dữ liệu quá khứ, kiểm tra điều kiện chiến lược hoặc xây dựng hệ thống giao dịch dựa trên lịch sử giá.SymbolInfoDouble()/SymbolInfoString(): Hai hàm này dùng để lấy thông tin chi tiết về Symbol như spread, tick size, giá trị tick, tên sản phẩm, v.v. Chúng giúp EA tính toán chính xác khối lượng giao dịch, chi phí và quản lý rủi ro hiệu quả hơn.MarketBookGet(): Hàm cho phép truy cập Sổ lệnh (Depth of Market – DOM), hiển thị các mức giá mua/bán và khối lượng tương ứng. Đây là công cụ hữu ích để phân tích thanh khoản và hành vi thị trường theo chiều sâu.
6.4. Hàm Biểu đồ & Đối tượng (Chart & Object Functions)
Nhóm hàm biểu đồ và đối tượng trong MQL5 giúp trader tùy chỉnh giao diện, hiển thị thông tin và trực quan hóa chiến lược giao dịch ngay trên biểu đồ.
ChartID(): Hàm dùng để lấy ID của biểu đồ hiện tại, giúp xác định chính xác biểu đồ mà EA hoặc Indicator đang thao tác. Đây là cơ sở để thực hiện các thao tác quản lý và tùy chỉnh biểu đồ.ObjectCreate(): Hàm cho phép tạo các đối tượng đồ họa trên biểu đồ như đường thẳng, mũi tên, hình chữ nhật hoặc văn bản. Trader thường sử dụng hàm này để đánh dấu điểm vào lệnh, thoát lệnh hoặc vùng giá quan trọng.ObjectsRedraw(): Hàm dùng để vẽ lại và cập nhật các đối tượng trên biểu đồ sau khi có thay đổi. Điều này giúp đảm bảo thông tin hiển thị luôn chính xác và đồng bộ với dữ liệu thị trường.ChartSetInteger(): Hàm cho phép thiết lập các thuộc tính của biểu đồ, như chế độ hiển thị, tỷ lệ, màu sắc hoặc các tùy chọn giao diện khác, giúp biểu đồ phù hợp hơn với nhu cầu phân tích.
6.5. Hàm Sự kiện (Event Handling Functions – Dành cho Expert Advisors & Indicators)
Nhóm hàm sự kiện trong MQL5 cho phép EA và Indicator phản hồi theo từng hành động hoặc thay đổi của thị trường, giúp chương trình hoạt động linh hoạt và theo thời gian thực.
OnInit(): Hàm được gọi khi EA hoặc Indicator được khởi tạo. Thường dùng để thiết lập biến, tải dữ liệu, khởi tạo chỉ báo hoặc kiểm tra điều kiện trước khi chương trình bắt đầu hoạt động.OnDeinit(): Hàm được gọi khi EA hoặc Indicator bị gỡ khỏi biểu đồ hoặc khi MT5 đóng. Hàm này thường dùng để giải phóng tài nguyên, xóa đối tượng đồ họa và lưu trạng thái cần thiết.OnTick(): Hàm được kích hoạt mỗi khi có tick giá mới, chủ yếu dùng trong Expert Advisor. Đây là nơi xử lý logic giao dịch như kiểm tra điều kiện vào lệnh, quản lý vị thế và cập nhật chiến lược.OnCalculate(): Hàm dành cho Indicator, thực hiện các phép tính chỉ báo khi có dữ liệu mới. Có thể xem đây là tương đương với OnTick() nhưng được tối ưu riêng cho chỉ báo kỹ thuật.OnChartEvent(): Hàm dùng để xử lý các sự kiện trên biểu đồ như click chuột, nhấn phím hoặc tương tác với đối tượng đồ họa. Hàm này giúp tạo các công cụ giao dịch mang tính tương tác cao.
6.6. Hàm MQL5 và MQL4 (Sự khác biệt chính)
MQL5 và MQL4 có sự khác biệt rõ rệt trong cách xử lý giao dịch và mô hình lập trình, đặc biệt là với các hàm giao dịch và cơ chế xử lý sự kiện.
MQL5– Hàm giao dịch tổng hợp: Trong MQL5, mọi thao tác giao dịch như gửi lệnh, sửa lệnh hoặc hủy lệnh đều được xử lý thông qua hàmOrderSend()kết hợp với cấu trúcMqlTradeRequest. Kết quả giao dịch được trả về thông quaMqlTradeResult, giúp kiểm soát và xử lý lỗi chi tiết hơn.MQL4– Hàm giao dịch riêng biệt: MQL4 sử dụng các hàm riêng lẻ nhưOrderSend(),OrderModify()vàOrderDelete()cho từng thao tác. Cách tiếp cận này đơn giản nhưng hạn chế khi xây dựng các hệ thống giao dịch phức tạp.- Khả năng xử lý sự kiện: MQL5 hỗ trợ lập trình hướng sự kiện mạnh mẽ hơn, giúp EA và Indicator phản hồi linh hoạt với thay đổi thị trường, dữ liệu và tương tác trên biểu đồ.
6.7. Các Hàm Khác
Bên cạnh các nhóm hàm giao dịch và phân tích chuyên sâu, MQL5 còn cung cấp nhiều hàm tiện ích hỗ trợ quá trình ghi log, hiển thị thông tin và xử lý thời gian trong EA, Indicator và Scripts.
Print(): Dùng để in thông tin ra cửa sổ Experts, thường được sử dụng để debug, theo dõi trạng thái hoạt động của EA hoặc kiểm tra giá trị biến trong quá trình chạy.Comment(): Hiển thị thông tin trực tiếp lên biểu đồ giao dịch, giúp trader theo dõi nhanh trạng thái EA, tín hiệu hoặc dữ liệu quan trọng theo thời gian thực.TimeCurrent(): Trả về thời gian hiện tại của server giao dịch, thường dùng trong các chiến lược phụ thuộc vào phiên giao dịch hoặc khung giờ cụ thể.TimeLocal(): Lấy thời gian theo máy tính người dùng, hữu ích khi cần so sánh hoặc đồng bộ dữ liệu với thời gian thực tế.
Bảng dưới đây tổng hợp các nhóm hàm MQL5 phổ biến cùng chức năng và mục đích sử dụng của chúng.
| Nhóm hàm | Hàm tiêu biểu | Chức năng chính | Mục đích sử dụng |
| Quản lý giao dịch (Trading Functions) | OrderSend() | Gửi yêu cầu giao dịch (mở, sửa, đóng lệnh) | Thực hiện giao dịch tự động trong EA |
PositionOpen() / PositionClose() | Mở hoặc đóng vị thế giao dịch | Quản lý vị thế theo mô hình Position của MQL5 | |
Trade.Buy() / Trade.Sell() | Thực hiện lệnh mua hoặc bán nhanh | Dùng phổ biến khi viết EA với cú pháp đơn giản | |
HistoryOrderSelect() / HistoryDealSelect() | Truy cập lịch sử lệnh và giao dịch | Phân tích hiệu suất chiến lược | |
| Phân tích kỹ thuật (Technical Analysis) | iMA() | Tạo chỉ báo Moving Average | Xác định xu hướng và tín hiệu giao cắt |
iRSI() | Tính chỉ số RSI | Xác định vùng quá mua / quá bán | |
iMACD() | Tạo chỉ báo MACD | Phân tích động lượng và xu hướng | |
iBands() | Tạo Bollinger Bands | Đánh giá biến động và điểm breakout | |
CopyBuffer() | Lấy dữ liệu từ chỉ báo | EA đọc giá trị chỉ báo để đưa ra quyết định | |
| Dữ liệu & giá (Data & Price) | CopyRates() | Lấy dữ liệu lịch sử nến (OHLC) | Phân tích dữ liệu quá khứ |
SymbolInfoDouble() / SymbolInfoString() | Lấy thông tin chi tiết về symbol | Tính spread, tick value, quản lý rủi ro | |
MarketBookGet() | Truy cập sổ lệnh (DOM) | Phân tích thanh khoản thị trường | |
| Biểu đồ & đối tượng (Chart & Object) | ChartID() | Lấy ID biểu đồ hiện tại | Quản lý và thao tác với biểu đồ |
ObjectCreate() | Tạo đối tượng đồ họa | Vẽ trendline, mũi tên, vùng giá | |
ObjectsRedraw() | Cập nhật lại các đối tượng trên biểu đồ | Đồng bộ hiển thị với dữ liệu | |
ChartSetInteger() | Thiết lập thuộc tính biểu đồ | Tùy chỉnh giao diện hiển thị | |
| Xử lý sự kiện (Event Handling) | OnInit() | Khởi tạo EA hoặc Indicator | Thiết lập biến và dữ liệu ban đầu |
OnDeinit() | Xử lý khi chương trình dừng | Giải phóng tài nguyên | |
OnTick() | Kích hoạt khi có tick giá mới | Xử lý logic giao dịch của EA | |
OnCalculate() | Tính toán dữ liệu chỉ báo | Dùng cho Indicator | |
OnChartEvent() | Xử lý sự kiện trên biểu đồ | Tương tác chuột, bàn phím | |
| Hàm tiện ích (Utility Functions) | Print() | In thông tin ra cửa sổ Experts | Debug và theo dõi hoạt động EA |
Comment() | Hiển thị thông tin trên biểu đồ | Theo dõi trạng thái EA | |
TimeCurrent() | Lấy thời gian server | Dùng cho chiến lược theo phiên | |
TimeLocal() | Lấy thời gian máy người dùng | Đồng bộ dữ liệu thời gian |
7. Hướng dẫn viết và kiểm thử EA bằng ngôn ngữ MQL5
Sau khi đã nắm được các chức năng và hệ thống hàm của MQL5, bước tiếp theo là thực hành xây dựng và kiểm thử một Expert Advisor (EA) để áp dụng trực tiếp vào giao dịch thực tế.
7.1. Hướng dẫn viết Expert Advisor (EA) bằng MQL5
Bước 1: Mở MetaEditor
Để bắt đầu viết Expert Advisor bằng MQL5, trước tiên bạn cần mở MetaEditor – môi trường lập trình của MetaTrader 5. Bạn có thể thực hiện theo một trong các cách sau:
- Trong MT5, vào File → Open Data Folder, sau đó mở thư mục MQL5 → Experts.
- Hoặc nhấn tổ hợp phím Ctrl + Shift + D để truy cập nhanh thư mục dữ liệu.
- Cách nhanh nhất: nhấn trực tiếp vào biểu tượng MetaEditor (IDE) trên thanh công cụ của MT5.
Bước 2: Tạo Expert Advisor (EA) mới
Sau khi mở MetaEditor, bạn tiến hành tạo một EA mới theo các bước sau:
- Trong MetaEditor, nhấn Ctrl + N hoặc chọn New trên thanh menu.

- Tại cửa sổ MQL5 Wizard, chọn Expert Advisor (template) và nhấn Next.

- Nhập tên EA bạn muốn tạo (ví dụ: My_First_EA). Bạn có thể điền thêm tên tác giả và thông tin liên hệ nếu cần, sau đó tiếp tục nhấn Next.

- Ở bước tiếp theo, bạn có thể thiết lập các tham số đầu vào (Inputs) cho EA bằng cách nhấn Add.

Đây là nơi khai báo các giá trị có thể thay đổi như:
- Stop Loss
- Take Profit
- Chu kỳ chỉ báo (MA, RSI, ADX…)
- Sau khi hoàn tất, nhấn Finish, MetaEditor sẽ tự động tạo file EA với định dạng .mq5 cùng cấu trúc code cơ bản.

Bước 3: Thiết kế logic giao dịch
Thiết kế logic là bước trader chuyển ý tưởng giao dịch thành quy tắc hoạt động cho EA. Ở bước này, bạn chỉ cần xác định những yếu tố cốt lõi như:
- Chiến lược giao dịch dựa trên tín hiệu nào (RSI, MACD, đường trung bình động… hoặc sự kết hợp riêng).
- Cách EA xử lý dữ liệu thị trường thông qua các sự kiện như khi có tick giá mới (OnTick()) hoặc theo chu kỳ thời gian (OnTimer()).
- Quy tắc vào và thoát lệnh dựa trên các điều kiện đã định sẵn, được thực hiện thông qua các hàm giao dịch như OrderSend(), PositionOpen() hoặc PositionClose().
- Các nguyên tắc quản lý rủi ro như dừng lỗ (Stop Loss), chốt lời (Take Profit) hoặc trailing stop để bảo vệ tài khoản và tối ưu lợi nhuận.
Mỗi EA sẽ có logic khác nhau, nhưng việc xây dựng tư duy rõ ràng ngay từ đầu sẽ giúp EA hoạt động ổn định và dễ dàng tối ưu về sau.
Bước 4: Biên dịch (Compile) EA
Sau khi hoàn tất phần logic, bạn cần biên dịch (compile) EA để kiểm tra và chuyển mã nguồn sang dạng có thể chạy trên MT5.
- Nhấn F7 hoặc bấm nút Compile trên thanh công cụ của MetaEditor để tiến hành biên dịch.

- Nếu mã nguồn có lỗi, MetaEditor sẽ hiển thị chi tiết tại tab Errors, giúp bạn xác định vị trí và nguyên nhân lỗi.

- Khi quá trình biên dịch thành công, EA sẽ được tạo ở dạng file .ex5, sẵn sàng cho bước kiểm thử tiếp theo.
7.2. Hướng dẫn kiểm thử EA trong MT5
Bước 1: Mở Strategy Tester
Để bắt đầu kiểm thử Expert Advisor, bạn cần mở công cụ Strategy Tester:
- Nhấn tổ hợp phím Ctrl + R trực tiếp trên MT5.
- Hoặc vào menu View → Strategy Tester.

Bước 2: Cấu hình bài kiểm thử EA
Sau khi mở Strategy Tester, bạn cần thiết lập các thông số kiểm thử để mô phỏng hoạt động của EA trên dữ liệu lịch sử:
- Expert Advisor: Chọn EA bạn vừa tạo (file .mq5 hoặc .ex5).
- Symbol: Chọn cặp tiền hoặc sản phẩm tài chính muốn kiểm thử (ví dụ: EURUSD).
- Model (Chế độ mô phỏng giá):
- Every tick: Mô phỏng chi tiết theo từng biến động giá (độ chính xác cao).
- Control Points: Kiểm thử nhanh hơn, phù hợp để kiểm tra logic cơ bản.
- Period: Chọn khung thời gian giao dịch (M1, M5, H1, D1…).
- Date Range: Xác định khoảng thời gian kiểm thử (từ ngày/giờ đến ngày/giờ).
- Deposit / Leverage: Nhập số vốn ban đầu và đòn bẩy giả lập cho tài khoản.
- Optimization: Nên tắt (Disable) ở lần kiểm thử đầu tiên để đánh giá hoạt động cơ bản của EA.

Bước 3: Chạy và phân tích kết quả
- Nhấn Start để bắt đầu quá trình kiểm thử.
- Theo dõi kết quả tại:
- Tab Results: Lịch sử giao dịch, lợi nhuận, drawdown.

- Tab Journal: Nhật ký hoạt động và các lỗi phát sinh (nếu có).

7.3. Cài đặt & Chạy EA trên biểu đồ
Bước 1: Kích hoạt giao dịch tự động (Auto Trading)
Trước khi chạy EA trên biểu đồ, bạn cần kích hoạt chế độ giao dịch tự động trong MetaTrader 5:
- Trên thanh công cụ của MT5, nhấn vào nút Auto Trading (biểu tượng hình robot).

- Khi nút này chuyển sang màu xanh, điều đó có nghĩa là giao dịch tự động đã được bật và EA có thể thực hiện lệnh.
Nếu Auto Trading chưa được kích hoạt, EA vẫn gắn trên biểu đồ nhưng sẽ không thực hiện bất kỳ giao dịch nào.
Bước 2: Gắn EA vào biểu đồ giao dịch
Sau khi đã bật giao dịch tự động, bạn tiến hành gắn EA vào biểu đồ như sau:
- Mở cửa sổ Navigator (phím tắt Ctrl + N) trong MT5.

- Tại mục Expert Advisors, tìm EA bạn đã tạo.
- Kéo và thả EA từ cửa sổ Navigator vào biểu đồ của cặp tiền hoặc sản phẩm tài chính bạn muốn giao dịch.
Bước 3: Cài đặt thông số EA
Sau khi gắn EA vào biểu đồ, một cửa sổ cài đặt sẽ tự động xuất hiện. Tại đây, bạn cần kiểm tra và thiết lập các thông số quan trọng:
- Tab Inputs (Tham số nhập): Cho phép điều chỉnh các biến đầu vào của EA như khối lượng giao dịch, Stop Loss, Take Profit hoặc các tham số chỉ báo. Đây là nơi bạn tùy chỉnh EA theo chiến lược và mức độ rủi ro mong muốn.

- Tab Common (Cài đặt chung): Đảm bảo tùy chọn Allow Algo Trading (Cho phép giao dịch tự động) được bật để EA có thể thực hiện lệnh.
- Sau khi hoàn tất cài đặt, nhấn OK để xác nhận.
Bước 4: Xác nhận EA đang chạy
Sau khi hoàn tất cài đặt, hãy kiểm tra biểu đồ giao dịch:
- Biểu tượng khuôn mặt cười hoặc biểu tượng robot xuất hiện trên biểu đồ cho biết EA đã được kích hoạt và đang hoạt động bình thường.
- Nếu không thấy biểu tượng này hoặc biểu tượng hiển thị trạng thái không hoạt động, hãy kiểm tra lại nút Auto Trading và các cài đặt trong tab Common.
Một số câu hỏi liên quan đến MQL5
Làm thế nào để bắt đầu học MQL5?
Để bắt đầu học MQL5, bạn nên đi theo lộ trình sau:
- Làm quen với MetaTrader 5 và MetaEditor để hiểu môi trường giao dịch và lập trình.
- Nắm kiến thức lập trình cơ bản, đặc biệt nếu bạn đã biết C/C++ hoặc logic lập trình thì sẽ học nhanh hơn.
- Bắt đầu từ ví dụ đơn giản, như sửa EA mẫu, Indicator mẫu có sẵn trong MT5.
- Thực hành thường xuyên, viết EA đơn giản và kiểm thử bằng Strategy Tester.
- Tham khảo tài liệu chính thức và cộng đồng MQL5 để học hỏi kinh nghiệm thực tế.
Cách học hiệu quả nhất là vừa học vừa thực hành trực tiếp trên MT5 thay vì chỉ đọc lý thuyết.
Làm sao để lập trình lệnh mua/bán (Order Management) trong MQL5?
Trong MQL5, việc quản lý lệnh mua/bán được thực hiện thông qua các hàm giao dịch và lớp CTrade, thay vì cách xử lý lệnh rời rạc như MQL4. Cụ thể:
- Mở lệnh: Sử dụng các hàm như OrderSend(), PositionOpen() hoặc Trade.Buy() / Trade.Sell().
- Đóng lệnh: Dùng PositionClose() hoặc Trade.PositionClose().
- Thiết lập Stop Loss / Take Profit: Khai báo trực tiếp khi gửi lệnh hoặc chỉnh sửa trong quá trình giao dịch.
- Kiểm tra trạng thái lệnh: Truy cập thông tin vị thế và lịch sử giao dịch thông qua các hàm quản lý position và history.
MQL5 sử dụng mô hình Position-based, giúp quản lý lệnh rõ ràng và phù hợp hơn cho các chiến lược giao dịch tự động chuyên nghiệp.
MQL5 có thể làm gì ngoài tạo EA và chỉ báo?
Ngoài việc tạo Expert Advisor (EA) và chỉ báo kỹ thuật, MQL5 còn có thể dùng để:
- Viết Scripts nhằm tự động hóa các tác vụ đơn lẻ như đóng/mở hàng loạt lệnh, xử lý dữ liệu nhanh.
- Xây dựng công cụ quản lý giao dịch như theo dõi lệnh, cảnh báo giá, quản lý rủi ro.
- Phân tích và xử lý dữ liệu thị trường dựa trên dữ liệu lịch sử và thời gian thực.
- Tạo giao diện và đối tượng đồ họa trực tiếp trên biểu đồ để hỗ trợ ra quyết định.
- Kết nối và trao đổi dữ liệu với các hệ thống bên ngoài thông qua DLL (nâng cao).
Nhờ đó, MQL5 không chỉ là ngôn ngữ viết EA mà còn là nền tảng lập trình toàn diện cho giao dịch tự động trên MT5.
Có công cụ nào giúp chuyển đổi code từ MQL4 sang MQL5 không?
Không. Hiện nay không có công cụ tự động nào có thể chuyển đổi hoàn toàn code từ MQL4 sang MQL5 mà không cần chỉnh sửa. Nguyên nhân là do hai ngôn ngữ này khác nhau về cấu trúc, mô hình xử lý lệnh và cách quản lý giao dịch.
Tuy vậy, bạn vẫn có thể bắt đầu theo các cách sau:
- Dùng công cụ chuyển đổi có sẵn trong MetaEditor để chuyển đổi phần cú pháp cơ bản, giúp tiết kiệm thời gian viết lại từ đầu.
- Chỉnh sửa và viết lại một số phần quan trọng, đặc biệt là cách EA vào và quản lý lệnh, để phù hợp với MQL5.
- Tham khảo các EA mẫu của MQL5, rồi áp dụng lại chiến lược cũ theo cấu trúc mới.
9. Tổng kết
MQL5 mang đến cho trader một cách tiếp cận giao dịch hiện đại hơn, nơi chiến lược được xây dựng dựa trên logic rõ ràng, dữ liệu và khả năng tự động hóa thay vì cảm xúc. Khi hiểu được cách MQL5 hoạt động, các nhóm hàm quan trọng và quy trình viết – kiểm thử EA, trader có thể chủ động kiểm soát hệ thống giao dịch của mình một cách bài bản và hiệu quả hơn.
Mời bạn truy cập vào blog của VinaHost TẠI ĐÂY để theo dõi thêm nhiều bài viết mới. Hoặc nếu bạn muốn được tư vấn thêm thì có thể liên hệ với chúng tôi qua:
- Email: cskh@vinahost.vn
- Hotline: 1900 6046 phím 1
- Livechat: https://livechat.vinahost.vn/chat.php
Xem thêm các bài viết liên quan:
- Sàn Vantage Markets là gì? | Đánh giá sàn giao dịch Vantage Markets
- Sàn XM Group là gì? | Đánh giá sàn giao dịch XM Group
- Sàn Exness là gì? | Hướng dẫn cài đặt MT4/MT5 của sàn Exness trên VPS Forex
- Sàn IC Markets là gì? | Đánh giá sàn giao dịch IC Markets
- cTrader là gì? | So sánh cTrader với MT4, MT5



































































































