3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在聚宽(JoinQuant)平台中,获取一段时间内的所有交易日列表主要使用 get_trade_days 函数。该函数属于 jqdata 库。
以下是详细的使用说明和代码示例。
get_trade_days用于获取指定日期范围内的所有交易日。
函数签名:
get_trade_days(start_date=None, end_date=None, count=None)
参数说明:
count 二选一,不可同时使用。datetime.date.today()(在回测中为当前回测日期)。end_date 往前的 count 个交易日。与 start_date 二选一。返回值:
datetime.date 对象的 numpy.ndarray 数组。get_all_trade_days用于获取交易所公布的所有交易日列表(通常包含历史上所有交易日及未来已公布的交易日)。
函数签名:
get_all_trade_days()
以下代码展示了如何在聚宽的研究环境或回测策略中使用这些函数。
这是最常用的方式,用于获取两个日期之间的所有交易日。
# -*- coding: utf-8 -*-
from jqdata import *
import datetime
# 获取 2023年1月1日 到 2023年2月1日 之间的所有交易日
# 注意:结果包含 start_date 和 end_date 当天(如果是交易日的话)
trade_days = get_trade_days(start_date='2023-01-01', end_date='2023-02-01')
print("交易日数量:", len(trade_days))
print("交易日列表:", trade_days)
# 遍历打印
for day in trade_days:
print(day)
用于获取截止到某一天之前的 N 个交易日。
# -*- coding: utf-8 -*-
from jqdata import *
# 获取 2023年6月30日(含)往前推的 5 个交易日
last_5_days = get_trade_days(end_date='2023-06-30', count=5)
print("最近5个交易日:", last_5_days)
# -*- coding: utf-8 -*-
from jqdata import *
# 获取系统记录的所有交易日
all_days = get_all_trade_days()
print("第一天:", all_days[0])
print("最后一天:", all_days[-1])
from jqdata import * 或 from jqdata import get_trade_days。start_date 和 count 不能同时存在。end_date,默认使用的是 context.current_dt(当前回测时间)。numpy 数组,里面的元素是 datetime.date 类型。如果需要字符串格式,需要自行转换(例如使用 strftime)。Q: get_trade_days 返回的数据类型是什么?
A: 返回的是一个 numpy.ndarray,其中的元素是 python 的标准 datetime.date 对象。
Q: 如果传入的 start_date 或 end_date 不是交易日怎么办?
A: 函数会自动处理。如果 start_date 不是交易日,它会从该日期之后的第一个交易日开始计算;如果 end_date 不是交易日,它会截止到该日期之前的最后一个交易日。
Q: 如何判断今天是交易日?
A: 可以使用 get_trade_days(start_date=today, end_date=today),如果返回的列表非空,则说明今天是交易日;或者直接检查今天是否在 get_all_trade_days() 返回的列表中。
Q: 这个函数能获取期货的交易日吗?
A: get_trade_days 获取的是A股市场的交易日历。虽然大部分情况下期货交易日与股票交易日重合,但如果涉及夜盘或特定节假日差异,建议参考期货特定的日历处理逻辑或通过行情数据判断。