🚀 AI 一键生成 ptrade 策略代码
立即体验
👉 AI 生成代码 👈

ptrade 平台 get_all_trades_days() 函数传参与缺省的区别是什么?

ptrade | 发布时间: 2026/6/3
以下内容由 EasyQuant 生成。

问题描述

不传参数调用get_all_trades_days()和传入特定日期的结果有什么不同?缺省时默认获取到什么时候?

/

解决方案

在 ptrade 量化平台中,get_all_trades_days(date=None) 函数用于获取某个日期之前的所有交易日日期。根据是否传入参数,其获取结果和基准日期会有所不同。

1. 传参与不传参的结果区别

  • 传入特定日期 (例如 date='20160213'):函数会返回指定日期(如 2016年2月13日)之前的所有交易日日期列表。
  • 不传参数 (缺省 date=None):函数会根据当前运行的模块环境(回测、研究或交易),自动获取一个默认的当前日期,并返回该默认日期之前的所有交易日日期列表。

2. 缺省时默认获取到什么时候?

当不传入 date 参数时,默认获取的截止日期取决于你当前运行策略的模块:

  1. 回测模块:默认日期为策略中调用该接口的当前回测日日期(即 context.blotter.current_dt)。随着回测的推进,这个默认日期会动态变化。
  2. 研究模块:默认日期为调用该函数的当天真实日期
  3. 交易模块:默认日期为调用该函数的当天真实日期

代码示例

def initialize(context):
    # 1. 不传参数:获取当前回测日期(或真实当天)之前的所有交易日
    all_trades_days_default = get_all_trades_days()
    log.info("默认获取的交易日列表:\n%s" % all_trades_days_default)
    
    # 2. 传入特定日期:获取 2015年3月12日 之前的所有交易日
    all_trades_days_specific = get_all_trades_days('20150312')
    log.info("指定日期获取的交易日列表:\n%s" % all_trades_days_specific)
    
    g.security = ['600570.SS', '000001.SZ']
    set_universe(g.security)

def handle_data(context, data):
    pass

总结:为了避免在回测中引入未来函数,通常在回测环境中不传参数,让其自动跟随回测时间;而在需要获取特定历史阶段的交易日历时,则明确传入 date 参数。