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

ptrade 中如何获取指定范围的交易日期?get_trade_days 与 get_all_trades_days 详解

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

问题描述

需要获取指定范围的交易日期但使用了get_all_trades_days函数,导致返回所有历史数据,这两个函数有什么区别?

/

解决方案

在 ptrade 量化交易平台中,get_all_trades_daysget_trade_days 都是用于获取交易日期的函数,但它们的应用场景和参数设计有显著的区别。如果您只需要获取特定时间段的交易日,误用 get_all_trades_days 确实会导致返回大量不必要的历史数据。

以下是这两个函数的详细区别与用法:

1. get_all_trades_days:获取指定日期之前的所有交易日

功能:用于获取某个日期(默认当前日期)之前的所有交易日日期。返回的数据量通常很大,包含从交易所成立以来的历史交易日。

参数

  • date (可选):指定的截止日期,如 '2016-02-13''20160213'。如果不传,回测中默认为当前回测日期,研究/交易中默认为当天日期。

返回值:一个包含所有交易日的 numpy.ndarray

示例

# 获取当前日期之前的所有交易日
all_days = get_all_trades_days()
# 获取2015年3月12日之前的所有交易日
all_days_before_2015 = get_all_trades_days('20150312')

2. get_trade_days:获取指定范围的交易日期

功能:用于获取指定时间段指定数量的交易日期。这是获取区间交易日最常用的函数。

参数

  • start_date (可选):开始日期,如 '2016-02-13'。与 count 二选一。
  • end_date (可选):结束日期,如 '2016-02-13'。如果不传,默认取当前回测日期或当天日期。
  • count (可选):数量,必须大于0。表示获取 end_date 往前的 count 个交易日(包含 end_date 当天)。与 start_date 二选一。

返回值:一个包含指定范围交易日的 numpy.ndarray

示例

# 获取指定日期范围内的交易日
trade_days_range = get_trade_days('2016-01-01', '2016-02-01')

# 获取当前日期往前10天的交易日
trading_days_count = get_trade_days(count=10)

总结对比

特性 get_all_trades_days get_trade_days
核心功能 获取某日之前的所有历史交易日 获取指定区间指定数量的交易日
参数设计 仅支持传入截止日期 date 支持 start_date + end_datecount + end_date
数据量 极大(通常几千条) 可控(由开发者指定的范围决定)
适用场景 需要遍历整个历史交易日历时 计算均线、获取过去N天数据、获取特定月份交易日时

解决方案
如果您只需要获取指定范围的交易日期,请将代码中的 get_all_trades_days() 替换为 get_trade_days(start_date='...', end_date='...')get_trade_days(count=N),这样可以显著提高策略的运行效率并减少内存占用。