Sao chép lịch sử tick vào ma trận hoặc vector
Như trong trường hợp với các thanh, bạn có thể sao chép các tick vào một vector hoặc ma trận. Điều này được thực hiện bởi các phương thức CopyTicks
và CopyTicksRange
. Chúng hoạt động dựa trên cơ sở tương tự như các hàm CopyTicks và CopyTicksRange, nhưng chúng nhận dữ liệu vào đối tượng gọi. Các hàm này sẽ được mô tả chi tiết trong Phần 5, trong phần về mảng các tick thực trong cấu trúc MqlTick
. Ở đây chúng ta chỉ hiển thị các nguyên mẫu và đề cập đến các điểm chính.
bool matrix<T>::CopyTicks(const string symbol, uint flags, ulong from_msc, uint count)
bool vector<T>::CopyTicks(const string symbol, uint flags, ulong from_msc, uint count)
bool matrix<T>::CopyTicksRange(const string symbol, uint flags, ulong from_msc, ulong to_msc)
bool matrix<T>::CopyTicksRange(const string symbol, uint flags, ulong from_msc, ulong to_msc)
Tham số symbol
đặt tên của công cụ tài chính mà các tick được yêu cầu. Phạm vi tick có thể được chỉ định theo nhiều cách khác nhau:
- Trong
CopyTicks
, nó có thể được chỉ định dưới dạng số lượng tick (tham sốcount
), bắt đầu từ một thời điểm nào đó (from_msc
), tính bằng mili giây - Trong
CopyTicksRange
, nó có thể là một phạm vi của hai điểm thời gian (từfrom_msc
đếnto_msc
).
Thành phần của dữ liệu được sao chép về mỗi tick được chỉ định trong tham số flags
dưới dạng mặt nạ bit của các giá trị từ bảng liệt kê ENUM_COPY_TICKS.
Định danh | Giá trị | Mô tả |
---|---|---|
COPY_TICKS_INFO | 1 | Tick được tạo bởi sự thay đổi của Bid và/hoặc Ask |
COPY_TICKS_TRADE | 2 | Tick được tạo bởi sự thay đổi của Last và Volume |
COPY_TICKS_ALL | 3 | Tất cả các tick |
COPY_TICKS_TIME_MS | 1 << 8 | Thời gian tính bằng mili giây |
COPY_TICKS_BID | 1 << 9 | Giá Bid |
COPY_TICKS_ASK | 1 << 10 | Giá Ask |
COPY_TICKS_LAST | 1 << 11 | Giá Last |
COPY_TICKS_VOLUME | 1 << 12 | Khối lượng |
COPY_TICKS_FLAGS | 1 << 13 | Cờ tick |
Ba bit đầu tiên (byte thấp) xác định tập hợp các tick được yêu cầu, và các bit còn lại (byte cao) xác định các thuộc tính của những tick này.
Các cờ byte cao chỉ có thể được kết hợp cho ma trận vì chỉ một hàng với các giá trị của một trường cụ thể từ tất cả các tick được đặt trong vector. Do đó, chỉ một bit của byte cao nhất nên được chọn để điền vào vector.
Khi chọn nhiều thuộc tính của tick trong quá trình điền ma trận, thứ tự các hàng trong đó sẽ tương ứng với thứ tự các phần tử trong bảng liệt kê. Ví dụ, giá Bid
sẽ luôn xuất hiện ở hàng cao hơn (với chỉ số thấp hơn) so với hàng chứa giá Ask
.
Một ví dụ về làm việc với cả tick và vector sẽ được trình bày trong phần về học máy.