對交易訂單進行價格或數量修改。須注意若是以市價送單,則無法修改價格。
trade=api.Order.update_order('Y001A',price=42)
trade
Trade(
order=
Order(order_id='Y001A',
action=<Action.Buy: 'B'>,
symbol='1102',
quantity=2,
price=41.0,
order_cond=<OrderCond.CASH: 0>,
time_in_force=<TimeInForce.ROD: 0>,
price_type=<PriceType.LMT: 0>,
odd_lot=<OddLot.Common: 0>),
order_status=
OrderStatus(nid='00007116',
status=<Status.Submitted>,
modified_time='110405',
modified_quantity=2,
modified_price=41.0,
deals=[]),
operations=[Operation(nid='00007116',
task=<Task.NewOrder>,
status=<Status.Success>,
op_time='110405'),
Operation(nid=15390405437599140003,
task=<Task.UpdatePrice>,
status=<Status.Pending>,
op_time='110418',
msg='NewPrice_42')]
)
#陸續收到系統主動回報:改價事件-系統處理中
Event(
task=<Task.UpdatePrice>,
status=<Status.Pending>,
order_id='Y001A',
seqno=’00006859’,
action=<Action.Buy: 'B'>,
symbol='1102',
quantity=2,
price=42,
order_cond=<OrderCond.CASH: 0>,
time_in_force=<TimeInForce.ROD: 0>,
odd_lot=<OddLot.Common: 0>,
ts='110418',
msg='NewPrice_42'
)
#陸續收到系統主動回報:改價事件-成功執行
Event(
task=<Task.UpdatePrice>
status=<Status.Success>,
order_id='Y001A',
seqno=’00006859’,
action=<Action.Buy: 'B'>,
symbol='1102',
quantity=2,
price=42.0,
order_cond=<OrderCond.CASH: 0>,
time_in_force=<TimeInForce.ROD: 0>,
odd_lot=<OddLot.Common: 0>,
ts='110417',
msg=’ 'NewPrice_42'
)
trade=api.Order.update_order('Y000Y',qty=4)
trade
Trade(
order=Order(order_id='Y000Y',
action=<Action.Buy: 'B'>,
symbol='1234',
quantity=5,
price=43.0,
order_cond=<OrderCond.CASH: 0>,
time_in_force=<TimeInForce.ROD: 0>,
price_type=<PriceType.LMT: 0>,
odd_lot=<OddLot.Common: 0>),
order_status=OrderStatus(nid='00006859',
status=<Status.Submitted>,
modified_time='172219',
modified_quantity=5,
modified_price=43.0,
deals=[]),
operations=[Operation(nid='00006859',
task=<Task.NewOrder>,
status=<Status.Success>,
op_time='172219'),
Operation(nid=15390341745114659005,
task=<Task.UpdateQty>,
status=<Status.Pending>,
op_time='172247',
msg='NewQty_1')]
)
#陸續收到系統主動回報:改量事件-系統處理中
Event(
task=<Task.UpdateQty>,
status=<Status.Pending>,
order_id='Y001A',
seqno=’00006859’,
action=<Action.Buy: 'B'>,
symbol='1234',
quantity=1,
price=43.0,
order_cond=<OrderCond.CASH: 0>,
time_in_force=<TimeInForce.ROD: 0>,
odd_lot=<OddLot.Common: 0>,
ts='172247',
msg='NewQty_1'
)
#陸續收到系統主動回報:改量事件-成功執行
Event(
task=<Task.UpdateQty>,
status=<Status.Success>,
order_id='Y001A',
seqno=’00006859’,
action=<Action.Buy: 'B'>,
symbol='1234',
quantity=1,
price=43.0,
order_cond=<OrderCond.CASH: 0>,
time_in_force=<TimeInForce.ROD: 0>,
odd_lot=<OddLot.Common: 0>,
ts='172247',
msg='NewQty_1'
)
| 參數 | 資料型態 | 說明 |
|---|---|---|
| order_id | str | 需要修改訂單的orderId。 |
| price | kgi.Price or float | 欲改變的價格,默認為None,可參照create_order用法。 |
| qty | int | 欲減少的數量,默認為None。 |
※注意,price和qty僅能輸入一個,qty僅能設定不超過當前剩餘待成交數量。
當用戶提交改單請求後,系統將返回該筆委託對應的 Trade 物件,以便用戶持續追蹤該委託的最新狀態。
隨後,當市場處理完成並回報結果時,系統會主動推送對應的 Event 物件,用於通知改單是否成功以及相關資訊。