CopyTicks
Lấy các tick từ cấu trúc MqlTick vào một ma trận hoặc vector. Các phần tử được đếm từ quá khứ đến hiện tại, nghĩa là tick với chỉ số 0 là tick lâu đời nhất. Để phân tích một tick, kiểm tra trường flags để biết chính xác điều gì đã thay đổi trong tick.
bool matrix::CopyTicks(
string symbol, // tên biểu tượng
ulong flags, // cờ chỉ định loại tick được nhận
ulong from_msc, // thời gian từ đó tick được yêu cầu
ulong count // số lượng tick cần nhận
);
2
3
4
5
6
Phương thức Vector
bool vector::CopyTicks(
string symbol, // tên biểu tượng
ulong flags, // cờ chỉ định loại tick được nhận
ulong from_msc, // thời gian từ đó tick được yêu cầu
ulong count // số lượng tick cần nhận
);
2
3
4
5
6
Tham số
symbol
[in] Biểu tượng.
flags
[in] Tổ hợp các cờ từ liệt kê ENUM_COPY_TICKS chỉ định nội dung của dữ liệu được yêu cầu. Khi sao chép vào vector, chỉ có thể chỉ định một giá trị từ liệt kê ENUM_COPY_TICKS, nếu không sẽ xảy ra lỗi.
from_msc
[in] Thời gian bắt đầu từ đó các tick được yêu cầu. Thời gian được chỉ định bằng mili giây kể từ 01/01/1970. Nếu from_msc
=0, số lượng tick cuối cùng bằng count
sẽ được trả về.
count
[in] Số lượng tick được yêu cầu. Nếu các tham số from_msc
và count
không được chỉ định, tất cả các tick có sẵn, nhưng không quá 2000, sẽ được ghi lại.
Giá trị trả về
Trả về true
nếu thành công hoặc false
nếu xảy ra lỗi.
Ghi chú
Lần gọi đầu tiên của CopyTicks()
khởi tạo đồng bộ hóa cơ sở dữ liệu tick của biểu tượng liên quan được lưu trữ trên ổ cứng. Nếu cơ sở dữ liệu cục bộ không cung cấp tất cả các tick được yêu cầu, thì các tick bị thiếu sẽ tự động được tải xuống từ máy chủ giao dịch. Các tick từ from_msc
được chỉ định trong CopyTicks()
đến thời điểm hiện tại sẽ được đồng bộ hóa. Sau đó, tất cả các tick đến cho biểu tượng này sẽ được thêm vào cơ sở dữ liệu tick, giữ nó ở trạng thái đồng bộ hóa.
Nếu các tham số from_msc
và count
không được chỉ định, tất cả các tick có sẵn, nhưng không quá 2000, sẽ được ghi vào ma trận/vector.
Trong các chỉ báo, phương thức CopyTicks()
trả về kết quả ngay lập tức: Khi được gọi từ một chỉ báo, CopyTicks()
ngay lập tức trả về tất cả các tick có sẵn của một biểu tượng và khởi chạy đồng bộ hóa cơ sở dữ liệu tick nếu dữ liệu có sẵn không đủ. Tất cả các chỉ báo trên cùng một biểu tượng hoạt động trong một luồng chung, vì vậy chỉ báo không thể chờ hoàn tất đồng bộ hóa. Sau khi đồng bộ hóa, CopyTicks()
sẽ trả về tất cả các tick được yêu cầu trong lần gọi tiếp theo. Trong các chỉ báo, hàm OnCalculate() được gọi sau khi mỗi tick đến.
Trong Expert Advisors và script, CopyTicks()
có thể đợi kết quả trong 45 giây: Khác với các chỉ báo, mỗi Expert Advisor hoặc script hoạt động trong một luồng riêng, và do đó có thể đợi tối đa 45 giây để hoàn tất đồng bộ hóa. Nếu số lượng tick cần thiết không được đồng bộ hóa trong thời gian này, CopyTicks()
sẽ trả về các tick có sẵn theo thời gian chờ và tiếp tục đồng bộ hóa. OnTick() trong Expert Advisors không phải là trình xử lý cho mỗi tick, mà chỉ thông báo cho Expert Advisor về các thay đổi trên thị trường. Đây có thể là một loạt thay đổi: terminal có thể nhận đồng thời nhiều tick, trong khi OnTick()
chỉ được gọi một lần để thông báo cho Expert Advisor về trạng thái thị trường mới nhất.
Tốc độ trả về dữ liệu: Terminal lưu trữ 4096 tick cuối cùng cho mỗi công cụ trong bộ nhớ cache truy cập nhanh (65536 tick cho các biểu tượng có Chiều sâu Thị trường đang chạy). Các yêu cầu liên quan đến dữ liệu này được thực hiện nhanh nhất. Nếu các tick được yêu cầu cho phiên giao dịch hiện tại vượt quá bộ nhớ cache, CopyTicks()
gọi các tick được lưu trữ trong bộ nhớ của terminal. Các yêu cầu này cần nhiều thời gian hơn để hoàn thành. Các yêu cầu chậm nhất là những yêu cầu tick cho các ngày khác, vì dữ liệu được đọc từ ổ đĩa trong trường hợp này.
ENUM_COPY_TICKS
Liệt kê ENUM_COPY_TICKS chứa các cờ để chỉ định loại dữ liệu được truyền vào ma trận hoặc mảng. Tổ hợp cờ cho phép lấy nhiều chuỗi từ lịch sử trong một yêu cầu. Thứ tự các hàng trong ma trận sẽ tương ứng với thứ tự các giá trị trong liệt kê ENUM_COPY_TICKS. Nói cách khác, hàng chứa dữ liệu High luôn cao hơn hàng chứa dữ liệu Low trong ma trận.
ID | Giá trị | Mô tả |
---|---|---|
COPY_TICKS_INFO | 1 | Tất cả các tick |
COPY_TICKS_TRADE | 2 | Các tick chứa thay đổi giá Bid và/hoặc Ask |
COPY_TICKS_ALL | 3 | Các tick chứa thay đổi giá Last và/hoặc Volume |
COPY_TICKS_TIME_MS | 1<<8 | Thời gian tick 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 (giá giao dịch cuối cùng) |
COPY_TICKS_VOLUME | 1<<12 | Khối lượng giá Last |
COPY_TICKS_FLAGS | 1<<13 | Cờ tick |
Sắp xếp dữ liệu | ||
COPY_TICKS_VERTICAL | 1<<15 | Các tick được sao chép vào ma trận theo trục dọc. Các tick nhận được sẽ được sắp xếp dọc trong ma trận, tức là các tick lâu đời nhất sẽ ở hàng đầu tiên, trong khi các tick gần đây nhất sẽ ở hàng cuối cùng của ma trận. Với sao chép mặc định, các tick được thêm vào ma trận theo trục ngang. Cờ này chỉ áp dụng khi sao chép vào ma trận. |
Phân tích các cờ tick để tìm hiểu 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
Xem thêm