3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在PTrade量化交易平台中,获取交易日历相关数据主要依赖于 get_trading_day 和 get_trade_days 这两个API接口。
以下是具体的实现方法和代码示例。
使用 get_trading_day(day) 函数。
day (int)。
0 表示当前交易日。-1 表示前一个交易日。1 表示后一个交易日。datetime.date 对象。使用 get_trade_days(start_date, end_date) 函数。
start_date (str): 该月份的起始日期(如 '2023-10-01')。end_date (str): 该月份的结束日期(如 '2023-10-31')。numpy.ndarray 数组。以下代码展示了如何在 initialize 或 handle_data 中实现这两个需求。
def initialize(context):
# 初始化
g.security = '600570.SS'
set_universe(g.security)
# --- 示例1:获取上一个交易日 ---
# 注意:在回测模式下,get_trading_day(0) 返回的是回测当天的日期
# get_trading_day(-1) 返回的是回测当天的前一个交易日
prev_trading_day = get_trading_day(-1)
log.info("上一个交易日是: %s" % prev_trading_day)
# --- 示例2:获取某个月份(例如2023年10月)的所有交易日 ---
target_month_start = '2023-10-01'
target_month_end = '2023-10-31'
# 获取指定范围内的交易日列表
month_trade_days = get_trade_days(start_date=target_month_start, end_date=target_month_end)
log.info("2023年10月的所有交易日如下:")
for day in month_trade_days:
# month_trade_days 中的元素通常是 numpy.datetime64 或 str 类型,具体取决于版本
# 这里直接打印即可
log.info(str(day))
def handle_data(context, data):
# 在盘中运行时,也可以动态获取
# 获取当前回测日期的上一个交易日
last_day = get_trading_day(-1)
# log.info("当前回测日期的上一交易日: %s" % last_day)
pass
get_trade_days 的入参建议使用 'YYYY-MM-DD' 或 'YYYYMMDD' 格式的字符串。get_trading_day(0),系统通常会返回下一交易日的日期。get_trading_day 返回的是 datetime.date 对象,而 get_trade_days 返回的是 numpy 数组,如果需要进行日期计算,可能需要进行类型转换。Q: get_trading_day(-1) 在周一调用时,返回的是周日还是上周五?
A: 返回的是上周五(假设上周五是正常交易日)。该函数只返回交易所开市的日期,会自动跳过周末和法定节假日。
Q: 如果我想获取未来5天的交易日怎么办?
A: 可以使用 get_trade_days(start_date=今天, count=5)。get_trade_days 支持 count 参数,表示从 start_date 开始往后获取指定数量的交易日。
Q: get_trade_days 返回的数据可以直接用于 get_price 吗?
A: 可以。get_trade_days 返回的日期格式通常可以直接作为 get_price 或 get_history 等函数的日期参数使用,但建议先将其转换为字符串格式以确保兼容性。