Các Hằng Số Khác
Hằng số CLR_NONE
được sử dụng để biểu thị sự không có màu sắc, nghĩa là đối tượng đồ họa hoặc chuỗi đồ họa của một chỉ báo sẽ không được vẽ. Hằng số này không được đưa vào danh sách các hằng số Web-color, nhưng nó có thể được áp dụng ở mọi nơi yêu cầu đối số màu.
Hằng số INVALID_HANDLE
có thể được sử dụng để kiểm tra các handle tệp (xem FileOpen() và FileFindFirst()).
Hằng số | Mô tả | Giá trị |
---|---|---|
CHARTS_MAX | Số lượng tối đa các biểu đồ có thể mở đồng thời trong terminal | 100 |
clrNONE | Không có màu sắc | -1 |
EMPTY_VALUE | Giá trị rỗng trong bộ đệm chỉ báo | DBL_MAX |
INVALID_HANDLE | Handle không hợp lệ | -1 |
IS_DEBUG_MODE | Cờ cho biết chương trình mq5 đang hoạt động ở chế độ gỡ lỗi | Khác 0 ở chế độ gỡ lỗi, nếu không là 0 |
IS_PROFILE_MODE | Cờ cho biết chương trình mq5 đang hoạt động ở chế độ lập hồ sơ | Khác 0 ở chế độ lập hồ sơ, nếu không là 0 |
NULL | Số 0 cho bất kỳ kiểu nào | 0 |
WHOLE_ARRAY | Nghĩa là số lượng phần tử còn lại cho đến cuối mảng, tức là toàn bộ mảng sẽ được xử lý | -1 |
WRONG_VALUE | Hằng số này có thể được tự động ép kiểu sang bất kỳ kiểu liệt kê nào | -1 |
Hằng số EMPTY_VALUE
thường tương ứng với các giá trị của chỉ báo không được hiển thị trên biểu đồ. Ví dụ, đối với chỉ báo tích hợp Standard Deviation với chu kỳ 20, đường cho 19 thanh đầu tiên trong lịch sử không được hiển thị trên biểu đồ. Nếu bạn tạo một handle của chỉ báo này bằng hàm iStdDev() và sao chép nó vào một mảng giá trị chỉ báo cho các thanh này thông qua CopyBuffer(), thì các giá trị này sẽ bằng EMPTY_VALUE
.
Bạn có thể chọn chỉ định cho chỉ báo tùy chỉnh giá trị rỗng của riêng bạn cho chỉ báo, khi chỉ báo không nên được vẽ trên biểu đồ. Sử dụng hàm PlotIndexSetDouble() với bộ sửa đổi PLOT_EMPTY_VALUE.
Hằng số NULL có thể được gán cho một biến thuộc bất kỳ kiểu đơn giản nào hoặc cho một con trỏ cấu trúc hoặc lớp đối tượng. Việc gán NULL
cho một biến chuỗi có nghĩa là việc hủy khởi tạo hoàn toàn biến này.
Hằng số WRONG_VALUE
được dùng cho các trường hợp cần trả về giá trị của một liệt kê, và giá trị này phải là sai. Ví dụ, khi chúng ta cần thông báo rằng giá trị trả về là một giá trị từ liệt kê này. Hãy xem xét ví dụ hàm CheckLineStyle()
, trả về kiểu đường cho một đối tượng được chỉ định bởi tên của nó. Nếu việc kiểm tra kiểu bằng ObjectGetInteger()
trả về true, một giá trị từ ENUM_LINE_STYLE sẽ được trả về; nếu không, WRONG_VALUE
được trả về.
void OnStart()
{
if(CheckLineStyle("MyChartObject") == WRONG_VALUE)
printf("Lỗi khi lấy kiểu đường.");
}
//+------------------------------------------------------------------+
//| Trả về kiểu đường cho một đối tượng được chỉ định bởi tên của nó |
//+------------------------------------------------------------------+
ENUM_LINE_STYLE CheckLineStyle(string name)
{
long style;
//---
if(ObjectGetInteger(0, name, OBJPROP_STYLE, 0, style))
return((ENUM_LINE_STYLE)style);
else
return(WRONG_VALUE);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Hằng số WHOLE_ARRAY
được dùng cho các hàm yêu cầu chỉ định số lượng phần tử trong mảng được xử lý:
Nếu bạn muốn chỉ định rằng tất cả giá trị mảng từ vị trí được chỉ định đến cuối phải được xử lý, bạn chỉ cần chỉ định giá trị WHOLE_ARRAY
.
Hằng số IS_PROFILE_MODE
cho phép thay đổi hoạt động của chương trình để thu thập dữ liệu chính xác trong chế độ lập hồ sơ. Lập hồ sơ cho phép đo thời gian thực hiện của các đoạn chương trình riêng lẻ (thường bao gồm các hàm), cũng như tính toán số lần gọi như vậy. Các lệnh gọi hàm Sleep()
có thể bị vô hiệu hóa để xác định thời gian thực hiện trong chế độ lập hồ sơ, như trong ví dụ này:
//--- Sleep có thể ảnh hưởng lớn (thay đổi) kết quả lập hồ sơ
if(!IS_PROFILE_MODE) Sleep(100); // vô hiệu hóa lệnh gọi Sleep() trong chế độ lập hồ sơ
2
Giá trị hằng số IS_PROFILE_MODE
được trình biên dịch đặt trong quá trình biên dịch, trong khi nó được đặt về 0 ở chế độ thông thường. Khi chạy chương trình ở chế độ lập hồ sơ, một quá trình biên dịch đặc biệt được thực hiện và IS_PROFILE_MODE
được thay thế bằng một giá trị khác 0.
Hằng số IS_DEBUG_MODE
có thể hữu ích khi bạn cần thay đổi nhẹ hoạt động của một chương trình mql5 trong chế độ gỡ lỗi. Ví dụ, trong chế độ gỡ lỗi, bạn có thể cần hiển thị thêm thông tin gỡ lỗi trong nhật ký terminal hoặc tạo thêm các đối tượng đồ họa trên biểu đồ.
Ví dụ sau tạo một đối tượng Label và đặt mô tả cũng như màu sắc của nó tùy thuộc vào chế độ chạy của script. Để chạy script ở chế độ gỡ lỗi từ MetaEditor, nhấn F5. Nếu bạn chạy script từ cửa sổ trình duyệt trong terminal, thì màu sắc và văn bản của đối tượng Label sẽ khác.
Ví dụ:
//+------------------------------------------------------------------+
//| Check_DEBUG_MODE.mq5 |
//| Copyright © 2009, MetaQuotes Software Corp. |
//| https://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link "https://www.metaquotes.net"
//+------------------------------------------------------------------+
//| Hàm bắt đầu chương trình Script |
//+------------------------------------------------------------------+
void OnStart()
{
//---
string label_name = "invisible_label";
if(ObjectFind(0, label_name) < 0)
{
Print("Object", label_name, "not found. Error code = ", GetLastError());
//--- tạo Label
ObjectCreate(0, label_name, OBJ_LABEL, 0, 0, 0);
//--- đặt tọa độ X
ObjectSetInteger(0, label_name, OBJPROP_XDISTANCE, 200);
//--- đặt tọa độ Y
ObjectSetInteger(0, label_name, OBJPROP_YDISTANCE, 300);
ResetLastError();
if(IS_DEBUG_MODE) // chế độ gỡ lỗi
{
//--- hiển thị thông báo về chế độ thực thi script
ObjectSetString(0, label_name, OBJPROP_TEXT, "DEBUG MODE");
//--- đặt màu văn bản thành đỏ
if(!ObjectSetInteger(0, label_name, OBJPROP_COLOR, clrRed))
Print("Không thể đặt màu. Lỗi", GetLastError());
}
else // chế độ hoạt động
{
ObjectSetString(0, label_name, OBJPROP_TEXT, "RELEASE MODE");
//--- đặt màu văn bản thành vô hình
if(!ObjectSetInteger(0, label_name, OBJPROP_COLOR, CLR_NONE))
Print("Không thể đặt màu. Lỗi ", GetLastError());
}
ChartRedraw();
DebugBreak(); // tại đây sẽ xảy ra kết thúc, nếu chúng ta đang ở chế độ gỡ lỗi
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Các Phương Thức Mã Hóa
Liệt kê ENUM_CRYPT_METHOD
được sử dụng để chỉ định phương thức chuyển đổi dữ liệu, được dùng trong các hàm CryptEncode() và CryptDecode().
ENUM_CRYPT_METHOD
Hằng số | Mô tả |
---|---|
CRYPT_BASE64 | BASE64 |
CRYPT_AES128 | Mã hóa AES với khóa 128 bit (16 byte) |
CRYPT_AES256 | Mã hóa AES với khóa 256 bit (32 byte) |
CRYPT_DES | Mã hóa DES với khóa 56 bit (7 byte) |
CRYPT_HASH_SHA1 | Tính toán HASH SHA1 |
CRYPT_HASH_SHA256 | Tính toán HASH SHA256 |
CRYPT_HASH_MD5 | Tính toán HASH MD5 |
CRYPT_ARCH_ZIP | Lưu trữ ZIP |
Xem thêm
DebugBreak, Thuộc tính chương trình MQL5 đang thực thi, CryptEncode(), CryptDecode()