當進行新刪改單等操作行爲,均會由系統創建並回傳Trade物件,可用來追蹤訂單實時狀態。
Trade物件由order、order_status、operations組成。
| 參數 | 資料型態 | 說明 |
|---|---|---|
| order | Order | 訂單基本資訊 |
| order_status | OrderStatus | 訂單當前狀態 |
| operations | list[Operation] | 操作紀錄(如新單、刪單、改單) |
| 參數 | 資料型態 | 說明 |
|---|---|---|
| order_id | str | 委託單號,委託成功後才會顯示 |
| action | kgi.Action |
委託方向 Action.Buy 為多方向 Action.Sell 為空方向 |
| category | Category |
商品分類 Category.FUTURE Category.OPTION |
| symbol | str | 交易標的代碼 |
| quantity | int | 委託數量 |
| price | float | 委託價格 |
| time_in_force | kgi.TimeInForce |
委託條件 TimeInForce.ROD TimeInForce.FOK TimeInForce.IOC |
| price_type | kgi.PriceType |
價格類型 PriceType.MKT — 市價 PriceType.LMT — 限價 PriceType.StopLossMarket — 停損市價 |
| trade_hour | TradeHour |
盤別 TradeHour.REGULAR — 日盤 TradeHour.POSTMARKET — 夜盤 |
| 參數 | 資料型態 | 說明 |
|---|---|---|
| nid | str | 最新的有效下單序號 |
| status | kgi.Status |
委託狀態 Status.Submitted — 已送出,等待成交 Status.Filled — 完全成交 Status.PartFilled — 部分成交,其餘部分等待成交 Status.Cancelled — 已取消 Status.PartFilled_Cancelled — 已取消且部分成交 |
| modified_quantity | int | 最新數量 |
| modified_price | float | kgi.PriceType | 最新價格,如為市價則顯示為「市價」 |
| modified_time | str | 最新變動時間 |
| deals | [Deal] |
Deal 包含成交資訊 = price:成交價格 = quantity:成交數量 = ts:成交時間 = reportseq:成交單號 |
| 參數 | 資料型態 | 說明 |
|---|---|---|
| nid | str | 該筆委託的下單序號 |
| task | kgi.Task |
委託的操作類型 Task.NewOrder — 新單 Task.CancelOrder — 刪單 Task.UpdatePrice — 改價 Task.UpdateQty — 改量 |
| status | kgi.Status |
委託狀態 Status.Pending — 處理中,系統已接收請求,但尚未完成 Status.Success — 操作成功執行 Status.Failed — 操作未成功,可能因條件不符或交易所拒絕 |
| op_time | str | 操作時間 |
| msg | str | 補充資訊,改單及 Status.Failed 會記錄資訊 |
若已送出一筆新委託後,可藉由trade物件來追蹤委託單實時狀態
#一筆部分成交範例
Trade(
order=
Order(
order_id='wAaar',
action=<Action.Buy: 'B'>,
category=<Category.FUTURE: 0>,
symbol='TXFI5',
quantity=3,
price=23000.0,
time_in_force=<TimeInForce.ROD: 0>,
price_type=<PriceType.LMT: 0>,
trade_hour=<TradeHour.REGULAR: 'R'>),
order_status=
OrderStatus(
nid='00009821',
status=<Status.PartFilled>,
modified_time='100342',
modified_quantity=2,
modified_price=23000.0,
deals=[Deal(
quantity=1,
price=23000.0,
ts='100353650',
reportseq='00009821')]),
operations=[
Operation(
nid='00009821',
task=<Task.NewOrder>,
status=<Status.Success>,
op_time='100342')]
)