问题描述
解决方案
您可以通过 add_time 属性来查看订单创建的精确时间。
该属性属于 Order 对象,返回一个 datetime.datetime 类型的对象,包含了订单被添加到系统中的具体日期和时间。
代码示例
以下是在策略中获取并打印订单创建时间的示例代码:
def handle_data(context, data):
# 获取当前所有未完成的订单
orders = get_open_orders()
for order_id, order_obj in orders.items():
# 打印订单ID和创建时间
# order_obj.add_time 即为订单创建时间
print(f"订单ID: {order_id}, 创建时间: {order_obj.add_time}")
属性说明
- 对象来源:
Order对象(可以通过get_open_orders()、get_orders()或下单函数的返回值获取)。 - 属性名称:
add_time - 数据类型:
datetime.datetime - 用途:用于记录策略发出下单指令后,订单被系统正式接收并创建的时间点。
Q&A
Q: Order 对象的 add_time 和 Trade 对象的 time 有什么区别?
A: Order.add_time 是订单创建(委托)的时间;而 Trade.time 是订单成交的时间。一个订单如果分多次成交,会有多条对应的 Trade 记录,每条记录的 time 可能不同,但它们对应的 Order.add_time 是相同的。
Q: 如何获取订单的最后修改时间或成交时间?
A: Order 对象本身没有直接的“最后修改时间”属性。如果需要查看成交时间,需要通过 get_trades() 获取该订单对应的成交记录(Trade 对象),查看其 time 属性。
Q: 非交易时间创建的订单,add_time 是什么时候?
A: 如果在非交易时间(例如盘前 before_trading_start 或盘后)创建订单,add_time 会记录为您调用下单函数的逻辑时间。但在回测中,非交易时间的订单通常会在开盘后才变为 open 状态并开始撮合。