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

ptrade如何获取前后N个交易日?get_trading_day与get_all_trades_days的区别

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

问题描述

想获取前后N个交易日的日期应该用哪个函数?get_all_trades_days和get_trading_day有什么区别?

/

解决方案

在 ptrade 量化交易平台中,处理时间序列和交易日历是策略开发的基础。针对您的问题,以下是详细的解答:

1. 获取前后N个交易日的日期

如果您想获取当前时间数天前或数天后的交易日期,应该使用 get_trading_day(day) 函数。

  • 参数 day:表示天数。
    • 正数(如 1):表示数天后的交易日。
    • 负数(如 -1):表示数天前的交易日。
    • 0:表示获取当前交易日(如果当前日期为非交易日,则返回下一交易日的日期)。
  • 返回值datetime.date 日期对象。

2. get_all_trades_days 和 get_trading_day 的区别

这两个函数虽然都与交易日历有关,但应用场景和返回的数据类型有显著区别:

功能定位对比

  • get_trading_day(day)相对位移查询。用于基于当前日期,向前或向后推算单个特定的交易日。非常适合用于“获取昨天的收盘价”、“判断明天是否交易”等场景。
  • get_all_trades_days(date=None)历史全量查询。用于获取指定日期(默认为当前日期)之前的所有交易日历。非常适合用于计算历史区间、统计交易日总数等场景。

返回值对比

  • get_trading_day 返回的是一个单一的 datetime.date 对象
  • get_all_trades_days 返回的是一个包含所有历史交易日的 numpy.ndarray 数组

3. 代码示例

以下是在 ptrade 策略中如何使用这两个函数的示例:

def initialize(context):
    g.security = ['600570.SS', '000001.SZ']
    set_universe(g.security)

def handle_data(context, data):
    # --- get_trading_day 示例 ---
    # 获取前一天的交易日期
    previous_trading_date = get_trading_day(-1)
    log.info(f"前一个交易日是: {previous_trading_date}")
    
    # 获取后一天的交易日期
    next_trading_date = get_trading_day(1)
    log.info(f"后一个交易日是: {next_trading_date}")

    # --- get_all_trades_days 示例 ---
    # 获取当前回测日期之前的所有交易日
    all_trades_days = get_all_trades_days()
    log.info(f"历史交易日总数: {len(all_trades_days)}")
    log.info(f"最近的5个交易日: {all_trades_days[-5:]}")
    
    # 获取指定日期之前的所有交易日
    all_trades_days_date = get_all_trades_days('20150312')
    log.info(f"2015年3月12日之前的交易日总数: {len(all_trades_days_date)}")

总结

  • 某一天(昨天、明天、N天前),用 get_trading_day
  • 一堆天(历史所有交易日列表),用 get_all_trades_days