Thuộc tính của lệnh (đang hoạt động và lịch sử)
Trong các phần liên quan đến hoạt động giao dịch, đặc biệt là mua/bán, đóng vị thế, và đặt lệnh chờ, chúng ta đã thấy rằng các yêu cầu được gửi đến máy chủ dựa trên việc điền vào các trường cụ thể của cấu trúc MqlTradeRequest
, phần lớn trong số đó xác định trực tiếp các thuộc tính của các lệnh kết quả. API MQL5 cho phép bạn tìm hiểu các thuộc tính này và một số thuộc tính khác do hệ thống giao dịch tự đặt, chẳng hạn như vé, thời gian đăng ký và trạng thái.
Điều quan trọng cần lưu ý là danh sách các thuộc tính của lệnh là chung cho cả lệnh đang hoạt động và lệnh lịch sử, mặc dù, tất nhiên, giá trị của nhiều thuộc tính sẽ khác nhau giữa chúng.
Các thuộc tính của lệnh trong MQL5 được nhóm lại theo nguyên tắc quen thuộc với chúng ta dựa trên loại giá trị: số nguyên (tương thích với long/ulong
), số thực (double
), và chuỗi. Mỗi nhóm thuộc tính có liệt kê riêng của nó.
Các thuộc tính số nguyên được tổng hợp trong ENUM_ORDER_PROPERTY_INTEGER
và được trình bày trong bảng sau.
Định danh | Mô tả | Kiểu dữ liệu |
---|---|---|
ORDER_TYPE | Loại lệnh | ENUM_ORDER_TYPE |
ORDER_TYPE_FILLING | Loại thực thi theo khối lượng | ENUM_ORDER_TYPE_FILLING |
ORDER_TYPE_TIME | Thời gian tồn tại của lệnh (lệnh chờ) | ENUM_ORDER_TYPE_TIME |
ORDER_TIME_EXPIRATION | Thời gian hết hạn của lệnh (lệnh chờ) | datetime |
ORDER_MAGIC | Định danh tùy ý được đặt bởi Expert Advisor đặt lệnh | ulong |
ORDER_TICKET | Vé lệnh; số duy nhất được máy chủ gán cho mỗi lệnh | ulong |
ORDER_STATE | Trạng thái lệnh | ENUM_ORDER_STATE (xem bên dưới) |
ORDER_REASON | Lý do hoặc nguồn gốc của lệnh | ENUM_ORDER_REASON (xem bên dưới) |
ORDER_TIME_SETUP | Thời gian đặt lệnh | datetime |
ORDER_TIME_DONE | Thời gian thực thi hoặc rút lệnh | datetime |
ORDER_TIME_SETUP_MSC | Thời gian đặt lệnh để thực thi tính bằng mili giây | ulong |
ORDER_TIME_DONE_MSC | Thời gian thực thi/rút lệnh tính bằng mili giây | ulong |
ORDER_POSITION_ID | ID của vị thế mà lệnh tạo ra hoặc sửa đổi khi thực thi | ulong |
ORDER_POSITION_BY_ID | Định danh vị thế đối lập cho lệnh loại ORDER_TYPE_CLOSE_BY | ulong |
Mỗi lệnh được thực thi tạo ra một giao dịch mở một vị thế mới hoặc thay đổi một vị thế hiện có. ID của vị thế này được gán cho lệnh đã thực thi trong thuộc tính ORDER_POSITION_ID
.
Liệt kê ENUM_ORDER_STATE
chứa các phần tử mô tả trạng thái của lệnh. Xem sơ đồ đơn giản hóa (sơ đồ trạng thái) của lệnh dưới đây.
Định danh | Mô tả |
---|---|
ORDER_STATE_STARTED | Lệnh đã được kiểm tra tính đúng đắn nhưng chưa được máy chủ chấp nhận |
ORDER_STATE_PLACED | Lệnh đã được máy chủ chấp nhận |
ORDER_STATE_CANCELED | Lệnh đã bị hủy bởi khách hàng (người dùng hoặc chương trình MQL) |
ORDER_STATE_PARTIAL | Lệnh đã được thực thi một phần |
ORDER_STATE_FILLED | Lệnh đã được thực thi đầy đủ |
ORDER_STATE_REJECTED | Lệnh đã bị máy chủ từ chối |
ORDER_STATE_EXPIRED | Lệnh đã bị hủy khi hết hạn |
ORDER_STATE_REQUEST_ADD | Lệnh đang được đăng ký (đang được đặt trong hệ thống giao dịch) |
ORDER_STATE_REQUEST_MODIFY | Lệnh đang được sửa đổi (các tham số của nó đang được thay đổi) |
ORDER_STATE_REQUEST_CANCEL | Lệnh đang bị xóa (đang được rút khỏi hệ thống giao dịch) |
Sơ đồ trạng thái lệnh
Việc thay đổi trạng thái chỉ có thể xảy ra đối với các lệnh đang hoạt động. Đối với các lệnh lịch sử (đã thực thi hoặc bị hủy), trạng thái được cố định.
Bạn có thể hủy một lệnh đã được thực thi một phần, và sau đó trạng thái của nó trong lịch sử sẽ là ORDER_STATE_CANCELED
.
ORDER_STATE_PARTIAL
chỉ xảy ra đối với các lệnh đang hoạt động. Các lệnh đã thực thi (lịch sử) luôn có trạng thái ORDER_STATE_FILLED
.
Liệt kê ENUM_ORDER_REASON
chỉ định các tùy chọn nguồn gốc có thể có của lệnh.
Định danh | Mô tả |
---|---|
ORDER_REASON_CLIENT | Lệnh được đặt thủ công từ terminal desktop |
ORDER_REASON_EXPERT | Lệnh được đặt từ terminal desktop bởi Expert Advisor hoặc script |
ORDER_REASON_MOBILE | Lệnh được đặt từ ứng dụng di động |
ORDER_REASON_WEB | Lệnh được đặt từ terminal web (trình duyệt) |
ORDER_REASON_SL | Lệnh được máy chủ đặt do kích hoạt Stop Loss |
ORDER_REASON_TP | Lệnh được máy chủ đặt do kích hoạt Take Profit |
ORDER_REASON_SO | Lệnh được máy chủ đặt do sự kiện Stop Out |
Các thuộc tính số thực được thu thập trong liệt kê ENUM_ORDER_PROPERTY_DOUBLE
.
Định danh | Mô tả |
---|---|
ORDER_VOLUME_INITIAL | Khối lượng ban đầu khi đặt lệnh |
ORDER_VOLUME_CURRENT | Khối lượng hiện tại (ban đầu hoặc còn lại sau khi thực thi một phần) |
ORDER_PRICE_OPEN | Giá được chỉ định trong lệnh |
ORDER_PRICE_CURRENT | Giá hiện tại của ký hiệu đối với lệnh chưa được thực thi hoặc giá thực thi |
ORDER_SL | Mức Stop Loss |
ORDER_TP | Mức Take Profit |
ORDER_PRICE_STOPLIMIT | Giá để đặt lệnh Limit khi lệnh StopLimit được kích hoạt |
Thuộc tính ORDER_PRICE_CURRENT
chứa giá Ask
hiện tại cho các lệnh chờ mua đang hoạt động hoặc giá Bid
hiện tại cho các lệnh chờ bán đang hoạt động. "Hiện tại"指的是 giá được biết trong môi trường giao dịch tại thời điểm lệnh được chọn bằng OrderSelect
hoặc OrderGetTicket
. Đối với các lệnh đã thực thi trong lịch sử, thuộc tính này chứa giá thực thi, có thể khác với giá được chỉ định trong lệnh do trượt giá.
Các thuộc tính ORDER_VOLUME_INITIAL
và ORDER_VOLUME_CURRENT
chỉ không bằng nhau nếu trạng thái lệnh là ORDER_STATE_PARTIAL
.
Nếu lệnh được thực thi theo từng phần, thì thuộc tính ORDER_VOLUME_INITIAL
của nó trong lịch sử sẽ bằng kích thước của phần được thực thi cuối cùng, và tất cả các "lần thực thi" khác liên quan đến khối lượng đầy đủ ban đầu sẽ được thực hiện dưới dạng các lệnh riêng biệt (và giao dịch).
Các thuộc tính chuỗi được mô tả trong liệt kê ENUM_ORDER_PROPERTY_STRING
.
Định danh | Mô tả |
---|---|
ORDER_SYMBOL | Ký hiệu mà lệnh được đặt |
ORDER_COMMENT | Bình luận |
ORDER_EXTERNAL_ID | ID lệnh trong hệ thống giao dịch bên ngoài (trên sàn giao dịch) |
Để đọc tất cả các thuộc tính trên, có hai bộ hàm khác nhau: cho các lệnh đang hoạt động và cho các lệnh lịch sử. Trước tiên, chúng ta sẽ xem xét các hàm cho các lệnh đang hoạt động, và chúng ta sẽ quay lại các hàm lịch sử sau khi làm quen với các nguyên tắc chọn khoảng thời gian cần thiết trong lịch sử.