Lấy đặc tính của mảng giá
Trước khi đọc các mảng chuỗi thời gian, chúng ta nên đảm bảo rằng chúng có sẵn và sở hữu các đặc tính cần thiết. Hàm SeriesInfoInteger
truy xuất các thuộc tính cơ bản, chẳng hạn như độ sâu của lịch sử có sẵn trong terminal và trên máy chủ, số lượng thanh được xây dựng cho một cặp ký hiệu/chu kỳ cụ thể, và sự không có sai lệch trong báo giá giữa terminal và máy chủ.
Hàm có hai dạng: dạng đầu tiên trả về trực tiếp giá trị được yêu cầu (kiểu long
) và dạng thứ hai sử dụng tham số thứ tư result
được truyền bằng tham chiếu. Trong trường hợp này, dạng thứ hai trả về dấu hiệu thành công (true
) hoặc lỗi (false
). Dù trong trường hợp nào, mã lỗi có thể được tìm thấy bằng hàm GetLastError
.
long SeriesInfoInteger(const string symbol, ENUM_TIMEFRAMES timeframe, ENUM_SERIES_INFO_INTEGER property)
bool SeriesInfoInteger(const string symbol, ENUM_TIMEFRAMES timeframe, ENUM_SERIES_INFO_INTEGER property, long &result)
Hàm cho phép tìm hiểu một trong những thuộc tính của chuỗi thời gian cho ký hiệu và khung thời gian được chỉ định hoặc cho toàn bộ lịch sử ký hiệu. Thuộc tính được yêu cầu được xác định bởi đối số thứ ba kiểu ENUM_SERIES_INFO_INTEGER. Liệt kê này bao gồm tất cả các thuộc tính có sẵn:
Định danh | Mô tả | Kiểu thuộc tính |
---|---|---|
SERIES_BARS_COUNT | Số lượng thanh theo ký hiệu/chu kỳ, xem Bars | long |
SERIES_FIRSTDATE | Ngày đầu tiên theo ký hiệu/chu kỳ | datetime |
SERIES_LASTBAR_DATE | Thời gian mở của thanh cuối cùng theo ký hiệu/chu kỳ | datetime |
SERIES_SYNCHRONIZED | Dấu hiệu đồng bộ hóa dữ liệu theo ký hiệu/chu kỳ giữa terminal và máy chủ | bool |
SERIES_SERVER_FIRSTDATE | Ngày đầu tiên trong lịch sử theo ký hiệu trên máy chủ bất kể chu kỳ | datetime |
SERIES_TERMINAL_FIRSTDATE | Ngày đầu tiên trong lịch sử theo ký hiệu trong terminal khách hàng bất kể chu kỳ | datetime |
Tùy thuộc vào bản chất của thuộc tính, giá trị kết quả nên được chuyển đổi sang giá trị của một kiểu cụ thể (xem cột Property type
).
Tất cả các thuộc tính được trả về tính đến thời điểm hiện tại.
Script SeriesInfo.mq5
cung cấp một ví dụ về việc truy vấn tất cả các thuộc tính.
void OnStart()
{
PRTF(SeriesInfoInteger(NULL, 0, SERIES_BARS_COUNT));
PRTF((datetime)SeriesInfoInteger(NULL, 0, SERIES_FIRSTDATE));
PRTF((datetime)SeriesInfoInteger(NULL, 0, SERIES_LASTBAR_DATE));
PRTF((bool)SeriesInfoInteger(NULL, 0, SERIES_SYNCHRONIZED));
PRTF((datetime)SeriesInfoInteger(NULL, 0, SERIES_SERVER_FIRSTDATE));
PRTF((datetime)SeriesInfoInteger(NULL, 0, SERIES_TERMINAL_FIRSTDATE));
PRTF(SeriesInfoInteger("ABRACADABRA", 0, SERIES_BARS_COUNT));
}
2
3
4
5
6
7
8
9
10
Dưới đây là ví dụ về kết quả thu được trên EURUSD, H1, trên máy chủ MQ Demo:
SeriesInfoInteger(NULL,0,SERIES_BARS_COUNT)=10001 / ok
(datetime)SeriesInfoInteger(NULL,0,SERIES_FIRSTDATE)=2020.03.02 10:00:00 / ok
(datetime)SeriesInfoInteger(NULL,0,SERIES_LASTBAR_DATE)=2021.10.08 14:00:00 / ok
(bool)SeriesInfoInteger(NULL,0,SERIES_SYNCHRONIZED)=false / ok
(datetime)SeriesInfoInteger(NULL,0,SERIES_SERVER_FIRSTDATE)=1971.01.04 00:00:00 / ok
(datetime)SeriesInfoInteger(NULL,0,SERIES_TERMINAL_FIRSTDATE)=2016.06.01 00:00:00 / ok
SeriesInfoInteger(ABRACADABRA,0,SERIES_BARS_COUNT)=0 / MARKET_UNKNOWN_SYMBOL(4301)
2
3
4
5
6
7