當進行新刪改單等操作行爲,均會由系統創建並回傳Trade物件,可用來追蹤訂單實時狀態。
Trade物件由order、order_status、operations組成。
| 參數 | 資料型態 | 說明 |
|---|---|---|
| order | Order | 訂單基本資訊 |
| order_status | OrderStatus | 訂單當前狀態 |
| operations | list[Operation] | 操作紀錄(如新單、刪單、改單) |
| 參數 | 資料型態 | 說明 |
|---|---|---|
| order_id | str | 委託單號,委託成功後才會顯示 |
| action | kgi.Action | 委託方向 Action.Buy 為多方向 Action.Sell 為空方向 |
| symbol | str | 股票代碼 |
| quantity | int | 委託數量 |
| price | float | 委託價格,如果是非限價單則顯示 0.0 |
| order_cond | Kgi.OrderCond | 委託類型 OrderCond.CASH — 現股 OrderCond.MARGIN — 融資 OrderCond.SHORT_SELLING — 融券 OrderCond.Lend_SELLING — 借券賣出 OrderCond.MARGIN_DayTrade — 當沖融資 OrderCond.SHORT_DayTrade — 當沖融券 OrderCond.CASH_SELLING — 現股先賣 |
| time_in_force | kgi.TimeInForce | 委託條件 TimeInForce.ROD — 委託當日有效 TimeInForce.IOC — 立即成交,未成交部分將被取消 TimeInForce.FOK — 立即全部成交,否則全部撤銷 |
| price_type | kgi.PriceType | 價格類型 PriceType.LMT — 限價 PriceType.MKT — 市價 PriceType.LimitUp — 漲停價 PriceType.LimitDown — 跌停價 PriceType.Reference — 平盤價 補充:漲跌停後僅分別限價及市價。 |
| odd_lot | kgi.OddLot | 委託別 OddLot.Common — 整股 OddLot.Fixing — 定盤交易 OddLot.Odd — 盤中零股 OddLot.Odd_AfterMarket — 零股盤後 |
| 參數 | 資料型態 | 說明 |
|---|---|---|
| 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 | list[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='Y002M',
action=<Action.Buy: 'B'>,
symbol='1234',
quantity=5,
price=0.0,
order_cond=<OrderCond.CASH: 0>,
time_in_force=<TimeInForce.ROD: 0>,
price_type= <PriceType.MKT>,
odd_lot=<OddLot.Common: 0>),
order_status=
OrderStatus(nid= '00004123',
status= <Status.Submitted>,
modified_time= '100844',
modified_quantity=5,
modified_price='市價',
deals=[]),
operations=
[Operation(nid= '00004123',
task=<Task.NewOrder>,
status=<Status.Success>,
op_time='104608')]
)