3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 ptrade 量化交易平台中,get_all_trades_days 和 get_trade_days 都是用于获取交易日期的函数,但它们的应用场景和参数设计有显著的区别。如果您只需要获取特定时间段的交易日,误用 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')
功能:用于获取指定时间段或指定数量的交易日期。这是获取区间交易日最常用的函数。
参数:
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_date 或 count + end_date |
| 数据量 | 极大(通常几千条) | 可控(由开发者指定的范围决定) |
| 适用场景 | 需要遍历整个历史交易日历时 | 计算均线、获取过去N天数据、获取特定月份交易日时 |
解决方案:
如果您只需要获取指定范围的交易日期,请将代码中的 get_all_trades_days() 替换为 get_trade_days(start_date='...', end_date='...') 或 get_trade_days(count=N),这样可以显著提高策略的运行效率并减少内存占用。