Biến đầu vào
Khi khởi chạy, tất cả các chương trình trong MQL5 đều có thể yêu cầu tham số từ người dùng. Ngoại lệ duy nhất là các thư viện không được thực thi độc lập mà là các phần của chương trình khác (xem phần có liên quan để biết thêm về Thư viện).
Tham số đầu vào của chương trình MQL là các biến toàn cục được mô tả trong mã có trình sửa đổi đặc biệt là input
hoặc sinput
. Chúng có sẵn trong hộp thoại thuộc tính chương trình để người dùng nhập giá trị. Chúng ta đã thấy mô tả về biến đầu vào GreetingHour
trong các tập lệnh của Phần 1.
TIP
Một tính năng đặc biệt của biến đầu vào là giá trị của chúng không thể thay đổi trong mã chương trình, nghĩa là nó hoạt động như một hằng số.
Biến đầu vào chỉ có thể là các kiểu tích hợp đơn giản hoặc liệt kê. Đối với liệt kê, bạn nhập giá trị thông qua danh sách thả xuống; trong khi bạn sử dụng các trường đầu vào trong mọi trường hợp khác. Không được phép mô tả là đầu vào: Arrays, structures or unions, and classes.
TIP
Nhà phát triển có thể đặt tên tham số đầu vào khác với định danh biến. Tên này sẽ được hiển thị cho người dùng trong hộp thoại thuộc tính chương trình. Một mô tả chi tiết nên được thêm vào dưới dạng chú thích chuỗi đơn khi định nghĩa tham số đầu vào.
input int HourStart = 0; // Start of trading (hour, including):
input int HourStop = 0; // End of trading (hour, excluding):
2
Điều này cho phép làm cho giao diện thân thiện với người dùng hơn, chi tiết hơn và không có các ràng buộc cú pháp do MQL5 áp đặt lên các định danh. Hơn nữa, tên (cũng như bình luận) có thể bằng ngôn ngữ mẹ đẻ của bạn.
Ví dụ, MetaTrader 5 đi kèm với mã nguồn của chỉ báo MQL5/Indicators/Examples/Custom Moving Average.mq5
với các biến đầu vào:
input int InpMAPeriod = 13; // Period
input int InpMAShift = 0; // Shift
input ENUM_MA_METHOD InpMAMethod = MODE_SMMA; // Method
2
3
Mô tả này tạo ra hộp thoại thuộc tính bên dưới.
Độ dài tối đa của biểu diễn văn bản của một biến đầu vào dưới dạng cặp định danh=giá trị
, bao gồm ký tự =
, không được vượt quá 255 ký tự (Ràng buộc này được áp dụng bởi các giao thức trao đổi dữ liệu nội bộ của thiết bị đầu cuối và các tác nhân thử nghiệm). Giới hạn này đặc biệt quan trọng đối với các biến chuỗi vì các giá trị của các kiểu khác không bao giờ vượt quá giới hạn này.
Như chúng ta đã biết, độ dài của một định danh bị giới hạn ở 63 ký tự; do đó, tùy thuộc vào độ dài của định danh, 191-253 ký tự còn lại cho giá trị của biến chuỗi đầu vào. Toàn bộ văn bản vượt quá ngưỡng kết hợp là 255 ký tự có thể bị cắt khi được chuyển đến trình thử nghiệm. Nếu phải nhập một chuỗi dài hơn vào chương trình MQL của bạn, hãy sử dụng nhiều trường nhập (sẽ tiếp tục) hoặc cho phép người dùng chỉ định tên tệp mà văn bản sẽ được đọc từ đó.
Để thuận tiện khi vận hành các chương trình MQL, các đầu vào có thể được kết hợp trong các khối được đặt tên bằng cách sử dụng từ khóa group (không cần dấu chấm phẩy ở cuối chuỗi nhóm).
input group "group_name"
input type identifier = value;
...
2
3
INFO
Tất cả các biến sửa đổi input
theo sau mô tả nhóm (cho đến mô tả của nhóm khác hoặc đến cuối tệp) được hiển thị trực quan dưới dạng danh sách lồng nhau bên dưới tiêu đề nhóm trong hộp thoại thuộc tính của chương trình MQL. Hơn nữa, các nhóm tham số có thể được triển khai hoặc thu gọn bằng một cú nhấp chuột trong trình kiểm tra chiến lược áp dụng cho cả chỉ báo và EA.
Từ khóa sinput
là viết tắt của static input
, cả hai dạng đều tương đương nhau.
Các biến được mô tả bằng các trình sửa đổi sinput
và static input
không thể tham gia vào quá trình tối ưu hóa. Chỉ có ý nghĩa khi sử dụng chúng trong Expert Advisors vì đây là loại chương trình MQL duy nhất hỗ trợ tối ưu hóa. Để biết thêm chi tiết, hãy xem phần liên quan đến Kiểm tra và tối ưu hóa Expert Advisors .