Số lượng thanh có sẵn (Bars/iBars)
Một cách ngắn gọn để tìm ra tổng số thanh trong chuỗi thời gian theo ký hiệu/chu kỳ được cung cấp bởi các hàm Bars
và iBars
(không có sự khác biệt giữa chúng vì iBars
có sẵn để tương thích với MQL4).
int Bars(const string symbol, ENUM_TIMEFRAMES timeframe)
int iBars(const string symbol, ENUM_TIMEFRAMES timeframe)
Các hàm trả về số lượng thanh có sẵn cho chương trình MQL đối với ký hiệu và chu kỳ đã cho. Giá trị này bị ảnh hưởng bởi tham số Max. bars in chart
trong Options
của terminal (xem ghi chú trong phần Các tính năng kỹ thuật của việc tổ chức và lưu trữ chuỗi thời gian). Ví dụ, nếu lịch sử được tải xuống terminal, trong đó cho một khung thời gian cụ thể là 20,000 thanh, nhưng giới hạn được đặt là 10,000 thanh trong cài đặt, thì giá trị thứ hai sẽ mang tính quyết định. Ngay sau khi khởi động terminal, các hàm sẽ trả về số lượng 10,000 thanh, nhưng khi các thanh mới được hình thành, con số này sẽ tăng lên (nếu bộ nhớ trống cho phép). Trong MQL5, giới hạn này có thể được tìm thấy bằng cách gọi TerminalInfoInteger
(TERMINAL_MAXBARS).
Ngoài ra, hàm Bars
có tùy chọn thứ hai cho phép tìm ra số lượng thanh trong khoảng giữa hai ngày.
int Bars(const string symbol, ENUM_TIMEFRAMES timeframe, datetime start, datetime stop)
Yêu cầu như vậy chỉ truy vấn những thanh có thời gian mở nằm trong khoảng từ start
đến stop
(bao gồm cả hai). Thứ tự của start
và stop
không quan trọng: hàm sẽ phân tích báo giá từ thời gian nhỏ hơn đến lớn hơn.
Nếu dữ liệu cho chuỗi thời gian với các tham số được chỉ định chưa được tạo hoặc đồng bộ hóa với máy chủ giao dịch tại thời điểm hàm Bars/iBars
được gọi, hàm sẽ trả về null. Trong trường hợp này, thuộc tính lỗi trong _LastError
cũng sẽ là 0 (không có lỗi vì dữ liệu chỉ đơn giản là chưa được tải xuống hoặc sẵn sàng). Sau khi nhận được 0, hãy kiểm tra sự đồng bộ hóa của một khung thời gian cụ thể bằng cách sử dụng SeriesInfoInteger
(..., SERIES_SYNCHRONIZED) hoặc sự đồng bộ hóa của ký hiệu bằng hàm đặc biệt SymbolIsSynchronized
.
Ví dụ về cách làm việc với các hàm sẽ được hiển thị trong script SeriesBars.mq5
trong phần tiếp theo, cùng với hàm liên quan iBarShift
.