Cấu trúc để Trả về Giá Hiện tại (MqlTick)
Đây là một cấu trúc để lưu trữ giá mới nhất của biểu tượng. Nó được thiết kế để truy xuất nhanh thông tin được yêu cầu nhiều nhất về giá hiện tại.
cpp
struct MqlTick
{
datetime time; // Thời gian cập nhật giá cuối cùng
double bid; // Giá Bid hiện tại
double ask; // Giá Ask hiện tại
double last; // Giá của giao dịch cuối cùng (Last)
ulong volume; // Khối lượng cho giá Last hiện tại
long time_msc; // Thời gian cập nhật giá cuối cùng tính bằng mili giây
uint flags; // Cờ tick
double volume_real; // Khối lượng cho giá Last hiện tại với độ chính xác cao hơn
};
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
Biến kiểu MqlTick
cho phép lấy các giá trị của Ask, Bid, Last và Volume trong một lần gọi duy nhất của hàm SymbolInfoTick().
Các tham số của mỗi tick được điền vào bất kể có sự thay đổi so với tick trước đó hay không. Do đó, có thể tìm ra giá chính xác cho bất kỳ thời điểm nào trong quá khứ mà không cần phải tìm kiếm các giá trị trước đó trong lịch sử tick. Ví dụ, ngay cả khi chỉ có giá Bid thay đổi trong quá trình một tick đến, cấu trúc vẫn chứa các tham số khác, bao gồm giá Ask trước đó, khối lượng, v.v.
Bạn có thể phân tích các cờ tick để tìm hiểu chính xác dữ liệu nào đã thay đổi:
TICK_FLAG_BID
– tick đã thay đổi giá BidTICK_FLAG_ASK
– tick đã thay đổi giá AskTICK_FLAG_LAST
– tick đã thay đổi giá giao dịch cuối cùngTICK_FLAG_VOLUME
– tick đã thay đổi khối lượngTICK_FLAG_BUY
– tick là kết quả của một giao dịch muaTICK_FLAG_SELL
– tick là kết quả của một giao dịch bán
Ví dụ:
cpp
void OnTick()
{
MqlTick last_tick;
//---
if(SymbolInfoTick(Symbol(), last_tick))
{
Print(last_tick.time, ": Bid = ", last_tick.bid,
" Ask = ", last_tick.ask, " Volume = ", last_tick.volume);
}
else Print("SymbolInfoTick() thất bại, lỗi = ", GetLastError());
//---
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
Xem thêm