Giới thiệu về MQL5 và môi trường phát triển
Một trong những thay đổi quan trọng nhất của MQL5 trong lần tái sinh của nó trong MetaTrader 5 là nó hỗ trợ khái niệm lập trình hướng đối tượng (OOP). Vào thời điểm xuất hiện, MQL4 trước đó thường được so sánh với ngôn ngữ lập trình C, trong khi việc so sánh MQL5 với C++ thì hợp lý hơn. Công bằng mà nói, cần lưu ý rằng ngày nay tất cả các công cụ OOP ban đầu chỉ có trong MQL5 đã được chuyển sang MQL4. Tuy nhiên, những người dùng hầu như không biết gì về lập trình vẫn coi OOP là thứ gì đó quá phức tạp.
Theo một nghĩa nào đó, trang web nàyhướng đến việc đơn giản hóa những điều phức tạp. Nó không phải để thay thế mà là để thêm vào Tài liệu tham khảo ngôn ngữ MQL5 được cung cấp cùng với thiết bị đầu cuối và cũng có sẵn trên trang web mql5.com.
Trong cuốn sách này, chúng ta sẽ liên tục cho bạn biết về tất cả các thành phần và kỹ thuật lập trình trong MQL5, thực hiện từng bước nhỏ để mỗi lần lặp lại đều rõ ràng và công nghệ OOP dần dần mở khóa tiềm năng của nó, đặc biệt đáng chú ý, như với bất kỳ công cụ mạnh mẽ nào, khi nó được sử dụng đúng cách và hợp lý. Do đó, các nhà phát triển chương trình MQL sẽ có thể chọn một phong cách lập trình ưa thích phù hợp với một nhiệm vụ cụ thể, tức là không chỉ hướng đối tượng mà còn là phong cách thủ tục 'cũ', cũng như sử dụng nhiều sự kết hợp khác nhau của chúng.
Người dùng thiết bị đầu cuối giao dịch có thể được phân loại thuận tiện thành "lập trình viên" (những người đã có một số kinh nghiệm lập trình bằng ít nhất một ngôn ngữ) và "người không phải lập trình viên" (những nhà giao dịch "thuần túy" quan tâm đến khả năng tùy chỉnh của thiết bị đầu cuối bằng MQL5). Những người trước có thể tùy chọn bỏ qua phần đầu tiên và phần thứ hai của trang web nàymô tả các khái niệm cơ bản về ngôn ngữ và bắt đầu tìm hiểu ngay về các API (Giao diện lập trình ứng dụng) cụ thể được nhúng trong MetaTrader 5. Đối với những người sau, nên đọc theo trình tự.
Trong số các loại "lập trình viên", những người biết C++
có lợi thế tốt nhất, vì MQL5 và C++ tương tự nhau. Tuy nhiên, "huy chương" này có mặt trái của nó. Vấn đề là MQL5 không hoàn toàn phù hợp với C++ (đặc biệt là khi so sánh với các tiêu chuẩn gần đây). Do đó, các nỗ lực viết một cấu trúc này hay cấu trúc khác thông qua thói quen "như trên C++" sẽ thường xuyên bị gián đoạn bởi các lỗi không mong muốn của trình biên dịch. Xem xét các yếu tố cụ thể của ngôn ngữ, chúng ta sẽ cố gắng hết sức để chỉ ra những khác biệt này.
Phân tích kỹ thuật, thực hiện lệnh giao dịch hoặc tích hợp với các nguồn dữ liệu bên ngoài — tất cả các chức năng này đều có sẵn cho người dùng thiết bị đầu cuối thông qua giao diện người dùng và thông qua các công cụ phần mềm được nhúng trong MQL5.
Vì các chương trình MQL5 phải thực hiện các chức năng khác nhau, nên có một số loại chương trình chuyên biệt được hỗ trợ trong MetaTrader 5. Đây là một kỹ thuật tiêu chuẩn trong nhiều hệ thống phần mềm. Ví dụ, trong Windows, cùng với các chương trình cửa sổ thông thường, có các chương trình và dịch vụ điều khiển bằng dòng lệnh.
Các loại chương trình sau đây có sẵn trong MQL5:
- Indicators — chương trình nhằm mục đích hiển thị đồ họa các mảng dữ liệu được tính toán theo một công thức nhất định, thường dựa trên chuỗi dấu ngoặc kép;
- Experts — chương trình tự động hóa giao dịch hoàn toàn hoặc một phần;
- Scripts — các chương trình được thiết kế để thực hiện một hành động tại một thời điểm; và
- Services — chương trình thực hiện các hoạt động nền tảng lâu dài.
Điều quan trọng cần lưu ý là tất cả chúng đều được tạo trong MQL5 và có nhiều điểm chung. Do đó, chúng ta sẽ bắt đầu học với các tính năng chung và dần dần tìm hiểu về tính đặc thù của từng loại.
Tính năng kỹ thuật thiết yếu của MetaTrader bao gồm việc thực hiện toàn bộ quyền kiểm soát trong thiết bị đầu cuối của khách hàng, trong khi các lệnh được khởi tạo trong đó được gửi đến máy chủ. Nói cách khác, các ứng dụng dựa trên MQL chỉ có thể hoạt động trong thiết bị đầu cuối của khách hàng, hầu hết trong số chúng yêu cầu kết nối 'trực tiếp' với máy chủ để hoạt động bình thường. Không có ứng dụng nào được cài đặt trên máy chủ. Máy chủ chỉ xử lý các lệnh nhận được từ thiết bị đầu cuối (terminal) của khách hàng và trả về các thay đổi trong môi trường giao dịch. Những thay đổi này cũng khả dụng đối với các chương trình MQL5.
Hầu hết các loại chương trình MQL5 được thực thi trong ngữ cảnh biểu đồ, tức là, để khởi chạy một chương trình, bạn phải 'ném' nó vào biểu đồ mong muốn. Ngoại lệ chỉ là một loại đặc biệt, tức là, services
: Chúng được dùng cho hoạt động nền, mà không được gắn vào biểu đồ.
Chúng ta nhớ lại rằng tất cả các chương trình MQL5 đều nằm trong thư mục MetaTrader 5 đang hoạt động, trong thư mục lồng nhau có tên là /MQL5/<type>
, trong đó <type>
tương ứng là:
- Indicators
- Experts
- Scripts
- Services
Dựa trên kỹ thuật cài đặt MetaTrader 5, đường dẫn đến thư mục làm việc có thể khác nhau (đặc biệt là với quyền người dùng hạn chế trong Windows, ở chế độ bình thường hoặc di động). Ví dụ, có thể là:
C:/Program Files/MetaTrader 5/
hoặc
C:/Users/<username>/AppData/Roaming/MetaQuotes/Terminal/<instance_id>/
Người dùng có thể biết chính xác vị trí của thư mục này bằng cách thực hiện lệnh File -> Open data catalog
(lệnh này có sẵn trong cả terminal và editor). Hơn nữa, khi tạo một chương trình mới, bạn không cần phải nghĩ đến việc tìm kiếm thư mục chính xác do sử dụng MQL Wizard được nhúng trong editor. Lệnh File -> New
sẽ gọi lệnh này và cho phép chọn loại chương trình MQL5 cần thiết. Tệp văn bản có liên quan chứa mẫu mã nguồn sẽ được tự động tạo khi cần thiết sau khi hoàn thành Master và sau đó mở để chỉnh sửa.
Trong thư mục MQL5, ngoài các thư mục trên còn có các thư mục lồng nhau khác và chúng cũng liên quan trực tiếp đến lập trình MQL5, nhưng chúng ta sẽ đề cập đến chúng sau.
MQL5 Programming for Traders — Source Codes from the Book. Part 1
Các ví dụ từ cuốn sách cũng có sẵn trong dự án công cộng
\MQL5\Shared Projects\MQL5Book