get_orders接口和get_all_orders接口分别会获取哪些订单?有什么区别?
/
问题描述
解决方案
在 ptrade 量化交易平台中,get_orders 和 get_all_orders 都是用于查询订单信息的接口,但它们在查询范围、返回数据类型以及**后续操作(如撤单)**上存在显著区别。
1. get_orders 接口
- 功能说明:用于获取策略内所有订单,或按条件获取指定标的的订单。
- 获取范围:仅限于当前运行的策略代码所产生的订单,包括待报、未报等各种状态的订单。
- 返回类型:返回一个
list,列表中包含多个Order对象 (list[Order,...])。 - 撤单方式:获取到的
Order对象或其id可以直接传递给cancel_order(order_param)接口进行撤单。
2. get_all_orders 接口
- 功能说明:用于获取账户当日所有订单,或按条件获取指定代码的订单。
- 获取范围:包含账户当日在柜台的全部委托记录,不仅包括当前策略产生的订单,还包括**非本交易(如其他策略、手动下单等)**产生的订单记录。注意:不能查询策略中待报、未报状态的委托。
- 返回类型:返回一个
list,列表中包含多条订单记录的字典 (list[dict, ...])。字典包含如symbol、entrust_no、amount、status等字段。 - 撤单方式:该接口返回的可撤委托,仅可通过
cancel_order_ex(order_param)函数进行撤单。非本交易的委托进行撤单,也仅可通过本函数查询委托状态更新。
总结对比
| 特性 | get_orders |
get_all_orders |
|---|---|---|
| 查询范围 | 仅当前策略内产生的订单 | 账户当日所有订单(含其他策略及手动下单) |
| 能否查询待报/未报 | 能 | 不能 |
| 返回数据类型 | list[Order] (Order 对象列表) |
list[dict] (字典列表) |
| 对应撤单接口 | cancel_order() |
cancel_order_ex() |
使用建议:
- 如果您只需要管理当前策略自己下的单,使用
get_orders即可,配合cancel_order撤单非常方便。 - 如果您需要监控整个账户的委托情况,或者需要撤销非当前策略下的单,则必须使用
get_all_orders,并配合cancel_order_ex进行撤单操作。