Kiểm tra sự tồn tại của một ký hiệu
Thay vì xem qua toàn bộ danh sách ký hiệu, một chương trình MQL có thể kiểm tra sự hiện diện của một ký hiệu cụ thể bằng tên của nó. Để làm điều này, có hàm SymbolExist
.
bool SymbolExist(const string name, bool &isCustom)
Trong tham số name
, bạn nên truyền tên của ký hiệu mong muốn. Tham số isCustom
được truyền bằng tham chiếu sẽ được hàm thiết lập tùy thuộc vào việc ký hiệu được chỉ định là tiêu chuẩn (false
) hay tùy chỉnh (true
).
Hàm trả về false
nếu ký hiệu không được tìm thấy trong cả ký hiệu tiêu chuẩn và tùy chỉnh.
Một tương tự một phần của hàm này là truy vấn thuộc tính SYMBOL_EXIST.
Hãy phân tích script đơn giản SymbolExists.mq5
để kiểm tra tính năng này. Trong tham số của nó, người dùng có thể chỉ định tên, sau đó được truyền vào SymbolExist
, và kết quả được ghi vào nhật ký. Nếu nhập một chuỗi rỗng, ký hiệu đang hoạt động của biểu đồ hiện tại sẽ được kiểm tra. Theo mặc định, tham số được đặt là "XYZ", giả định rằng nó không khớp với bất kỳ ký hiệu nào có sẵn.
#property script_show_inputs
input string SymbolToCheck = "XYZ";
void OnStart()
{
const string _SymbolToCheck = SymbolToCheck == "" ? _Symbol : SymbolToCheck;
bool custom = false;
PrintFormat("Symbol '%s' is %s", _SymbolToCheck,
(SymbolExist(_SymbolToCheck, custom) ? (custom ? "custom" : "standard") : "missing"));
}
2
3
4
5
6
7
8
9
10
11
Khi script được chạy hai lần, lần đầu với giá trị mặc định và sau đó với một dòng trống trên biểu đồ EURUSD, chúng ta sẽ nhận được các mục sau trong nhật ký.
Symbol 'XYZ' is missing
Symbol 'EURUSD' is standard
2
Nếu bạn đã có các ký hiệu tùy chỉnh hoặc tạo một ký hiệu mới với công thức tính toán đơn giản, bạn có thể đảm bảo biến custom được điền. Ví dụ, nếu bạn mở cửa sổ Symbols
trong terminal và nhấn nút Create symbol
, bạn có thể nhập "SP500/FTSE100" (tên chỉ số có thể khác nhau tùy thuộc vào nhà môi giới của bạn) vào trường Synthetic tool formula
và "GBPUSD.INDEX" vào trường có tên Symbol
. Một cú nhấp vào OK
sẽ tạo ra một công cụ tùy chỉnh mà bạn có thể mở biểu đồ, và script của chúng ta sẽ hiển thị như sau trên đó:
Symbol 'GBPUSD.INDEX' is custom
Khi thiết lập ký hiệu của riêng bạn, đừng quên đặt không chỉ công thức mà còn các giá trị đủ "nhỏ" cho kích thước điểm và bước thay đổi giá (tick). Nếu không, chuỗi báo giá tổng hợp có thể trở thành "có bậc" hoặc thậm chí thoái hóa thành một đường thẳng.