🚀 AI 一键生成 joinquant 策略代码

JoinQuant Order 对象中的 add_time 属性有什么作用?

joinquant | 发布时间: 2025/12/24
以下内容由 EasyQuant 生成。

问题描述

我可以通过什么属性查看订单创建的精确时间?

解决方案

您可以通过 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_timeTrade 对象的 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 状态并开始撮合。