Các Loại Giao Dịch Thương Mại
Khi thực hiện một số hành động nhất định trên tài khoản giao dịch, trạng thái của nó thay đổi. Các hành động này bao gồm:
Gửi yêu cầu giao dịch từ bất kỳ ứng dụng MQL5 nào trong terminal khách hàng bằng các hàm
OrderSend
vàOrderSendAsync
và việc thực thi tiếp theo của nó;Gửi yêu cầu giao dịch qua giao diện đồ họa của terminal và việc thực thi tiếp theo của nó;
Kích hoạt lệnh chờ và lệnh dừng trên máy chủ;
Thực hiện các hoạt động ở phía máy chủ giao dịch.
Các giao dịch thương mại sau đây được thực hiện do kết quả của những hành động này:
- Xử lý một yêu cầu giao dịch;
- Thay đổi các lệnh đang mở;
- Thay đổi lịch sử lệnh;
- Thay đổi lịch sử giao dịch;
- Thay đổi vị thế.
Ví dụ, khi gửi một lệnh mua thị trường, nó được xử lý, một lệnh mua tương ứng được tạo cho tài khoản, lệnh đó sau đó được thực thi và bị xóa khỏi danh sách các lệnh đang mở, rồi được thêm vào lịch sử lệnh, một giao dịch tương ứng được thêm vào lịch sử và một vị thế mới được tạo ra. Tất cả những hành động này đều là các giao dịch thương mại.
Để cho phép lập trình viên theo dõi các hành động được thực hiện liên quan đến tài khoản giao dịch, hàm OnTradeTransaction
đã được cung cấp. Trình xử lý này cho phép nhận các giao dịch thương mại áp dụng cho một tài khoản trong ứng dụng MQL5. Mô tả giao dịch thương mại được gửi trong tham số đầu tiên của OnTradeTransaction
bằng cấu trúc MqlTradeTransaction
.
Loại giao dịch thương mại được gửi trong tham số type
của cấu trúc MqlTradeTransaction
. Các loại giao dịch thương mại có thể được mô tả bởi bảng liệt kê sau:
ENUM_TRADE_TRANSACTION_TYPE
Định danh | Mô tả |
---|---|
TRADE_TRANSACTION_ORDER_ADD | Thêm một lệnh đang mở mới. |
TRADE_TRANSACTION_ORDER_UPDATE | Cập nhật một lệnh đang mở. Các cập nhật bao gồm không chỉ những thay đổi rõ ràng từ phía terminal khách hàng hoặc máy chủ giao dịch mà còn cả sự thay đổi trạng thái của một lệnh khi thiết lập nó (ví dụ, chuyển từ ORDER_STATE_STARTED sang ORDER_STATE_PLACED hoặc từ ORDER_STATE_PLACED sang ORDER_STATE_PARTIAL , v.v.). |
TRADE_TRANSACTION_ORDER_DELETE | Xóa một lệnh khỏi danh sách các lệnh đang mở. Một lệnh có thể bị xóa khỏi danh sách đang mở do kết quả của việc thiết lập một yêu cầu tương ứng hoặc thực thi (điền) và chuyển sang lịch sử. |
TRADE_TRANSACTION_DEAL_ADD | Thêm một giao dịch vào lịch sử. Hành động này được thực hiện do kết quả của việc thực thi lệnh hoặc thực hiện các hoạt động với số dư tài khoản. |
TRADE_TRANSACTION_DEAL_UPDATE | Cập nhật một giao dịch trong lịch sử. Có thể có trường hợp một giao dịch đã thực thi trước đó bị thay đổi trên máy chủ. Ví dụ, một giao dịch đã bị thay đổi trong một hệ thống giao dịch bên ngoài (sàn giao dịch) nơi nó đã được chuyển bởi một nhà môi giới trước đó. |
TRADE_TRANSACTION_DEAL_DELETE | Xóa một giao dịch khỏi lịch sử. Có thể có trường hợp một giao dịch đã thực thi trước đó bị xóa khỏi máy chủ. Ví dụ, một giao dịch đã bị xóa trong một hệ thống giao dịch bên ngoài (sàn giao dịch) nơi nó đã được chuyển bởi một nhà môi giới trước đó. |
TRADE_TRANSACTION_HISTORY_ADD | Thêm một lệnh vào lịch sử do kết quả của việc thực thi hoặc hủy bỏ. |
TRADE_TRANSACTION_HISTORY_UPDATE | Thay đổi một lệnh nằm trong lịch sử lệnh. Loại này được cung cấp để tăng cường chức năng ở phía máy chủ giao dịch. |
TRADE_TRANSACTION_HISTORY_DELETE | Xóa một lệnh khỏi lịch sử lệnh. Loại này được cung cấp để tăng cường chức năng ở phía máy chủ giao dịch. |
TRADE_TRANSACTION_POSITION | Thay đổi một vị thế không liên quan đến việc thực thi giao dịch. Loại giao dịch này cho thấy một vị thế đã bị thay đổi ở phía máy chủ giao dịch. Khối lượng vị thế, giá mở, mức Stop Loss và Take Profit có thể thay đổi. Dữ liệu về các thay đổi được gửi trong cấu trúc MqlTradeTransaction qua trình xử lý OnTradeTransaction . Thay đổi vị thế (thêm, thay đổi hoặc đóng), do kết quả của việc thực thi giao dịch, không dẫn đến sự xuất hiện của giao dịch TRADE_TRANSACTION_POSITION . |
TRADE_TRANSACTION_REQUEST | Thông báo về việc một yêu cầu giao dịch đã được xử lý bởi máy chủ và kết quả xử lý đã được nhận. Chỉ trường type (loại giao dịch thương mại) cần được phân tích cho các giao dịch như vậy trong cấu trúc MqlTradeTransaction . Tham số thứ hai và thứ ba của OnTradeTransaction (yêu cầu và kết quả) phải được phân tích để lấy dữ liệu bổ sung. |
Tùy thuộc vào loại giao dịch thương mại, các tham số khác nhau được điền vào cấu trúc MqlTradeTransaction
mô tả nó. Mô tả chi tiết về dữ liệu được gửi được hiển thị trong "Cấu trúc của một Giao dịch Thương mại".
Xem thêm