3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在量化投资中,获取准确的交易日历是进行回测、因子计算和策略调度的基础。QMT(Quantitative Multi-Strategy Trading)平台提供了 ContextInfo.get_trading_dates() 接口,允许用户方便地获取指定个股、合约或指数在特定时间段内的交易日(K线时间戳)列表。
ContextInfo.get_trading_dates(stockcode, start_date, end_date, count, period)
stockcode (string): 证券代码,例如 '600000.SH'(浦发银行)。若传入空字符串 '',则默认使用当前主图的品种代码。start_date (string): 开始时间,格式为 'YYYYMMDD' 或 'YYYYMMDDHHMMSS'。可缺省,为空时不限制开始时间。end_date (string): 结束时间,格式同上。可缺省,默认为当前 bar 的时间。count (int): 获取的 K 线个数。必须大于 0。注意:当 start_date 不为空时,此参数失效;当 start_date 为空时,系统会获取 end_date 往前的 count 个交易日。period (string): K 线周期类型,常用取值包括:
'1d': 日线(返回格式如 ['20230101', '20230102', ...])'1m': 1分钟线(返回格式带具体时间,如 ['20230101093100', ...])'5m', '15m', '30m', '1h', '1w', '1mon' 等。以下是一个完整的 Python 策略示例,展示了如何在 handlebar 中提取 平安银行 (000001.SZ) 在 2023-01-01 至 2023-06-30 之间的所有日线交易日:
#coding:gbk
def init(ContextInfo):
# 初始化设置
print("策略初始化成功")
def handlebar(ContextInfo):
# 仅在最后一根K线执行一次,避免重复打印
if not ContextInfo.is_last_bar():
return
stock = '000001.SZ' # 平安银行
start = '20230101'
end = '20230630'
# 调用 get_trading_dates 接口获取日线交易日列表
trading_days = ContextInfo.get_trading_dates(stock, start, end, 1, '1d')
# 打印结果
print(f"{stock} 在 {start} 至 {end} 期间的交易日数量为: {len(trading_days)}")
print("前5个交易日:", trading_days[:5])
print("后5个交易日:", trading_days[-5:])
'000300.SH')的交易日历,以确保所有标的数据在时间轴上完全对齐。'000001.SZ')获取的交易日列表会自动剔除该股的停牌日。如果需要获取市场标准交易日,建议传入 '000300.SH'(沪深300指数)作为标的。