Thuộc tính lệnh
Các yêu cầu thực hiện hoạt động giao dịch được chính thức hóa dưới dạng lệnh. Mỗi lệnh có nhiều thuộc tính để đọc. Thông tin về chúng có thể được lấy bằng các hàm OrderGet...()
và HistoryOrderGet...()
.
Đối với các hàm OrderGetInteger() và HistoryOrderGetInteger()
ENUM_ORDER_PROPERTY_INTEGER
Định danh | Mô tả | Kiểu dữ liệu |
---|---|---|
ORDER_TICKET | Số vé lệnh. Số duy nhất được gán cho mỗi lệnh | long |
ORDER_TIME_SETUP | Thời gian thiết lập lệnh | datetime |
ORDER_TYPE | Loại lệnh | ENUM_ORDER_TYPE |
ORDER_STATE | Trạng thái lệnh | ENUM_ORDER_STATE |
ORDER_TIME_EXPIRATION | Thời gian hết hạn của lệnh | datetime |
ORDER_TIME_DONE | Thời gian thực hiện hoặc hủy lệnh | datetime |
ORDER_TIME_SETUP_MSC | Thời gian đặt lệnh để thực hiện tính bằng mili giây kể từ 01.01.1970 | long |
ORDER_TIME_DONE_MSC | Thời gian thực hiện/hủy lệnh tính bằng mili giây kể từ 01.01.1970 | long |
ORDER_TYPE_FILLING | Loại điền lệnh | ENUM_ORDER_TYPE_FILLING |
ORDER_TYPE_TIME | Thời gian tồn tại của lệnh | ENUM_ORDER_TYPE_TIME |
ORDER_MAGIC | ID của Expert Advisor đã đặt lệnh (được thiết kế để đảm bảo mỗi Expert Advisor đặt số duy nhất riêng) | long |
ORDER_REASON | Lý do hoặc nguồn gốc đặt lệnh | ENUM_ORDER_REASON |
ORDER_POSITION_ID | Định danh vị thế được gán cho lệnh ngay khi nó được thực hiện. Mỗi lệnh được thực hiện dẫn đến một giao dịch mở hoặc sửa đổi một vị thế hiện có. Định danh của chính vị thế này được gán cho lệnh đã thực hiện tại thời điểm này. | long |
ORDER_POSITION_BY_ID | Định danh của vị thế đối lập được sử dụng để đóng bằng lệnh ORDER_TYPE_CLOSE_BY | long |
Đối với các hàm OrderGetDouble() và HistoryOrderGetDouble()
ENUM_ORDER_PROPERTY_DOUBLE
Định danh | Mô tả | Kiểu dữ liệu |
---|---|---|
ORDER_VOLUME_INITIAL | Khối lượng ban đầu của lệnh | double |
ORDER_VOLUME_CURRENT | Khối lượng hiện tại của lệnh | double |
ORDER_PRICE_OPEN | Giá được chỉ định trong lệnh | double |
ORDER_SL | Giá trị Stop Loss | double |
ORDER_TP | Giá trị Take Profit | double |
ORDER_PRICE_CURRENT | Giá hiện tại của biểu tượng lệnh | double |
ORDER_PRICE_STOPLIMIT | Giá lệnh Limit cho lệnh StopLimit | double |
Đối với các hàm OrderGetString() và HistoryOrderGetString()
ENUM_ORDER_PROPERTY_STRING
Định danh | Mô tả | Kiểu dữ liệu |
---|---|---|
ORDER_SYMBOL | Biểu tượng của lệnh | string |
ORDER_COMMENT | Bình luận của lệnh | string |
ORDER_EXTERNAL_ID | Định danh lệnh trong hệ thống giao dịch bên ngoài (trên Sàn giao dịch) | string |
Khi gửi yêu cầu giao dịch bằng hàm OrderSend(), một số hoạt động yêu cầu chỉ định loại lệnh. Loại lệnh được chỉ định trong trường type
của cấu trúc đặc biệt MqlTradeRequest, và có thể nhận các giá trị của bảng liệt kê ENUM_ORDER_TYPE
.
ENUM_ORDER_TYPE
Định danh | Mô tả |
---|---|
ORDER_TYPE_BUY | Lệnh mua thị trường |
ORDER_TYPE_SELL | Lệnh bán thị trường |
ORDER_TYPE_BUY_LIMIT | Lệnh chờ Buy Limit |
ORDER_TYPE_SELL_LIMIT | Lệnh chờ Sell Limit |
ORDER_TYPE_BUY_STOP | Lệnh chờ Buy Stop |
ORDER_TYPE_SELL_STOP | Lệnh chờ Sell Stop |
ORDER_TYPE_BUY_STOP_LIMIT | Khi giá lệnh đạt đến, một lệnh Buy Limit đang chờ sẽ được đặt ở giá StopLimit |
ORDER_TYPE_SELL_STOP_LIMIT | Khi giá lệnh đạt đến, một lệnh Sell Limit đang chờ sẽ được đặt ở giá StopLimit |
ORDER_TYPE_CLOSE_BY | Lệnh đóng một vị thế bằng một vị thế đối lập |
Mỗi lệnh có một trạng thái mô tả trạng thái của nó. Để lấy thông tin, sử dụng OrderGetInteger() hoặc HistoryOrderGetInteger() với bộ điều chỉnh ORDER_STATE
. Các giá trị được phép được lưu trữ trong bảng liệt kê ENUM_ORDER_STATE
.
ENUM_ORDER_STATE
Định danh | Mô tả |
---|---|
ORDER_STATE_STARTED | Lệnh đã được kiểm tra, nhưng chưa được nhà môi giới chấp nhận |
ORDER_STATE_PLACED | Lệnh đã được chấp nhận |
ORDER_STATE_CANCELED | Lệnh bị hủy bởi khách hàng |
ORDER_STATE_PARTIAL | Lệnh được thực hiện một phần |
ORDER_STATE_FILLED | Lệnh được thực hiện hoàn toàn |
ORDER_STATE_REJECTED | Lệnh bị từ chối |
ORDER_STATE_EXPIRED | Lệnh đã hết hạn |
ORDER_STATE_REQUEST_ADD | Lệnh đang được đăng ký (đặt vào hệ thống giao dịch) |
ORDER_STATE_REQUEST_MODIFY | Lệnh đang được sửa đổi (thay đổi tham số của nó) |
ORDER_STATE_REQUEST_CANCEL | Lệnh đang bị xóa (xóa khỏi hệ thống giao dịch) |
Khi gửi yêu cầu giao dịch để thực hiện vào thời điểm hiện tại (thời gian hiệu lực), giá và khối lượng mua/bán cần thiết phải được chỉ định. Cũng cần lưu ý rằng thị trường tài chính không đảm bảo toàn bộ khối lượng yêu cầu có sẵn cho một công cụ tài chính nhất định tại giá mong muốn. Do đó, các hoạt động giao dịch trong thời gian thực được điều chỉnh bằng các chế độ thực hiện giá và khối lượng. Các chế độ, hoặc chính sách thực hiện, xác định các quy tắc cho các trường hợp khi giá thay đổi hoặc khối lượng yêu cầu không thể được đáp ứng hoàn toàn vào thời điểm đó.
Chế độ thực hiện giá có thể được lấy từ thuộc tính biểu tượng SYMBOL_TRADE_EXEMODE chứa sự kết hợp của các cờ từ bảng liệt kê ENUM_SYMBOL_TRADE_EXECUTION.
Chế độ thực hiện | Mô tả | Giá trị trong ENUM_SYMBOL_TRADE_EXECUTION |
---|---|---|
Chế độ thực hiện (Request Execution) | Thực hiện lệnh thị trường tại giá đã nhận trước đó từ nhà môi giới. Giá cho một lệnh thị trường nhất định được yêu cầu từ nhà môi giới trước khi lệnh được gửi. Sau khi nhận được giá, việc thực hiện lệnh tại giá đã cho có thể được xác nhận hoặc từ chối. | SYMBOL_TRADE_EXECUTION_REQUEST |
Thực hiện tức thì (Instant Execution) | Thực hiện lệnh thị trường tại giá được chỉ định ngay lập tức. Khi gửi yêu cầu giao dịch để thực hiện, nền tảng tự động thêm giá hiện tại vào lệnh.
| SYMBOL_TRADE_EXECUTION_INSTANT |
Thực hiện thị trường (Market Execution) | Nhà môi giới quyết định về giá thực hiện lệnh mà không cần thảo luận thêm với nhà giao dịch. Việc gửi lệnh trong chế độ này có nghĩa là đồng ý trước với việc thực hiện tại giá này. | SYMBOL_TRADE_EXECUTION_MARKET |
Thực hiện sàn giao dịch (Exchange Execution) | Các hoạt động giao dịch được thực hiện tại giá của các ưu đãi thị trường hiện tại. | SYMBOL_TRADE_EXECUTION_EXCHANGE |
Chính sách điền khối lượng được chỉ định trong thuộc tính lệnh ORDER_TYPE_FILLING và chỉ có thể chứa các giá trị từ bảng liệt kê ENUM_ORDER_TYPE_FILLING
.
Chính sách điền | Mô tả | Giá trị trong ENUM_ORDER_TYPE_FILLING |
---|---|---|
Fill or Kill | Lệnh chỉ có thể được thực hiện với khối lượng được chỉ định. Nếu số lượng cần thiết của một công cụ tài chính hiện không có sẵn trên thị trường, lệnh sẽ không được thực hiện. Khối lượng mong muốn có thể được tạo thành từ nhiều ưu đãi có sẵn. Khả năng sử dụng lệnh FOK được xác định tại máy chủ giao dịch. | ORDER_FILLING_FOK |
Immediate or Cancel | Nhà giao dịch đồng ý thực hiện một giao dịch với khối lượng tối đa có sẵn trên thị trường trong phạm vi được chỉ định trong lệnh. Nếu yêu cầu không thể được điền hoàn toàn, một lệnh với khối lượng có sẵn sẽ được thực hiện, và khối lượng còn lại sẽ bị hủy. Khả năng sử dụng lệnh IOC được xác định tại máy chủ giao dịch. | ORDER_FILLING_IOC |
Passive (Book or Cancel) | Lệnh BoC假定 rằng lệnh chỉ có thể được đặt trong Độ sâu của Thị trường và không thể được thực hiện ngay lập tức. Nếu lệnh có thể được thực hiện ngay khi đặt, thì nó sẽ bị hủy. Trên thực tế, chính sách BOC đảm bảo rằng giá của lệnh được đặt sẽ tệ hơn thị trường hiện tại. Lệnh BoC được sử dụng để thực hiện giao dịch thụ động, để lệnh không được thực hiện ngay khi đặt và không ảnh hưởng đến thanh khoản hiện tại. Chỉ hỗ trợ lệnh giới hạn và lệnh dừng giới hạn (ORDER_TYPE_BUY_LIMIT , ORDER_TYPE_SELL_LIMIT , ORDER_TYPE_BUY_STOP_LIMIT , ORDER_TYPE_SELL_STOP_LIMIT ). | ORDER_FILLING_BOC |
Return | Trong trường hợp điền một phần, lệnh với khối lượng còn lại không bị hủy mà được xử lý tiếp. Lệnh Return không được phép trong chế độ Thực hiện Thị trường (thực hiện thị trường — SYMBOL_TRADE_EXECUTION_MARKET ). | ORDER_FILLING_RETURN |
Khi gửi yêu cầu giao dịch bằng hàm OrderSend(), chính sách thực hiện khối lượng cần thiết có thể được đặt trong trường type_filling
, cụ thể là trong cấu trúc đặc biệt MqlTradeRequest. Các giá trị từ bảng liệt kê ENUM_ORDER_TYPE_FILLING
có sẵn. Để lấy giá trị thuộc tính trong một lệnh đang hoạt động/đã hoàn thành cụ thể, sử dụng hàm OrderGetInteger() hoặc HistoryOrderGetInteger() với bộ điều chỉnh ORDER_TYPE_FILLING
.
Trước khi gửi lệnh với thời gian thực hiện hiện tại, để cài đặt chính xác giá trị ORDER_TYPE_FILLING (loại thực hiện khối lượng), bạn có thể sử dụng hàm SymbolInfoInteger() với mỗi từng công cụ tài chính để lấy giá trị thuộc tính SYMBOL_FILLING_MODE, cho thấy các loại thực hiện khối lượng được phép cho biểu tượng dưới dạng kết hợp của các cờ. Loại điền ORDER_FILLING_RETURN
luôn được bật trừ khi ở chế độ "Thực hiện thị trường" (SYMBOL_TRADE_EXECUTION_MARKET
).
Việc sử dụng các loại điền tùy thuộc vào chế độ thực hiện có thể được thể hiện như bảng sau:
Loại Thực hiện\Chính sách Điền | Fill or Kill (FOK ORDER_FILLING_FOK ) | Immediate or Cancel (IOC ORDER_FILLING_IOC ) | Return (Return ORDER_FILLING_RETURN ) |
---|---|---|---|
Thực hiện Tức thì (SYMBOL_TRADE_EXECUTION_INSTANT) | + (bất kể cài đặt biểu tượng) | + (bất kể cài đặt biểu tượng) | + (luôn luôn) |
Yêu cầu Thực hiện (SYMBOL_TRADE_EXECUTION_REQUEST) | + (bất kể cài đặt biểu tượng) | + (bất kể cài đặt biểu tượng) | + (luôn luôn) |
Thực hiện Thị trường (SYMBOL_TRADE_EXECUTION_MARKET) | + (được đặt trong cài đặt biểu tượng) | + (được đặt trong cài đặt biểu tượng) | - (tắt bất kể cài đặt biểu tượng) |
Thực hiện Sàn giao dịch (SYMBOL_TRADE_EXECUTION_EXCHANGE) | + (được đặt trong cài đặt biểu tượng) | + (được đặt trong cài đặt biểu tượng) | + (luôn luôn) |
Trong trường hợp lệnh chờ, loại điền ORDER_FILLING_RETURN
nên được sử dụng bất kể loại thực hiện (SYMBOL_TRADE_EXEMODE), vì các lệnh như vậy không nhằm mục đích thực hiện tại thời điểm gửi. Khi sử dụng lệnh chờ, nhà giao dịch đồng ý trước rằng, khi các điều kiện cho một giao dịch trên lệnh này được đáp ứng, nhà môi giới sẽ sử dụng loại điền được hỗ trợ bởi sàn giao dịch.
Thời gian hiệu lực của lệnh có thể được đặt trong trường type_time
của cấu trúc đặc biệt MqlTradeRequest khi gửi yêu cầu giao dịch bằng hàm OrderSend(). Các giá trị của bảng liệt kê ENUM_ORDER_TYPE_TIME
được phép. Để lấy giá trị của thuộc tính này, sử dụng hàm OrderGetInteger() hoặc HistoryOrderGetInteger() với bộ điều chỉnh ORDER_TYPE_TIME
.
ENUM_ORDER_TYPE_TIME
Định danh | Mô tả |
---|---|
ORDER_TIME_GTC | Lệnh có hiệu lực cho đến khi hủy |
ORDER_TIME_DAY | Lệnh có hiệu lực cho đến ngày giao dịch hiện tại |
ORDER_TIME_SPECIFIED | Lệnh có hiệu lực cho đến khi hết hạn |
ORDER_TIME_SPECIFIED_DAY | Lệnh sẽ có hiệu lực đến 23:59:59 của ngày được chỉ định. Nếu thời gian này nằm ngoài phiên giao dịch, lệnh sẽ hết hạn vào thời gian giao dịch gần nhất. |
Lý do đặt lệnh được chứa trong thuộc tính ORDER_REASON
. Một lệnh có thể được đặt bởi chương trình MQL5, từ ứng dụng di động, do sự kiện StopOut, v.v. Các giá trị có thể của ORDER_REASON
được mô tả trong bảng liệt kê ENUM_ORDER_REASON
.
ENUM_ORDER_REASON
Định danh | Mô tả |
---|---|
ORDER_REASON_CLIENT | Lệnh được đặt từ thiết bị đầu cuối máy tính để bàn |
ORDER_REASON_MOBILE | Lệnh được đặt từ ứng dụng di động |
ORDER_REASON_WEB | Lệnh được đặt từ nền tảng web |
ORDER_REASON_EXPERT | Lệnh được đặt từ chương trình MQL5, tức là bởi Expert Advisor hoặc script |
ORDER_REASON_SL | Lệnh được đặt do kích hoạt Stop Loss |
ORDER_REASON_TP | Lệnh được đặt do kích hoạt Take Profit |
ORDER_REASON_SO | Lệnh được đặt do sự kiện Stop Out |