3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在JoinQuant(聚宽)平台的量化交易中,技术指标函数(如KD、MACD等)底层通常依赖于历史行情数据获取API(如get_bars或get_price)。理解check_date(查询时间)和unit(K线周期)的关系,核心在于理解时间截断和K线聚合的逻辑。
以下是针对您提出的两种情况的详细解答:
check_date 为 datetime.date 类型时当传入的是日期类型(如 2023-10-10),系统在底层处理时,会自动将其转换为该日期的零点,即 2023-10-10 00:00:00。
00:00:00,此时当天的交易尚未开始。因此,系统获取的最后一个分钟bar是前一个交易日的最后一根K线(例如 15:00:00 的K线)。KD指标将基于前一个交易日及之前的分钟K线数据进行计算。include_now,但在技术指标库中通常指代已完成的日线或包含当天的最新数据)。check_date 为 datetime.datetime 类型时当传入的是包含具体时间的类型(如 2023-10-10 14:30:00),系统会严格按照该时间戳进行截断。
unit='5m' 且 check_date='2023-10-10 14:30:00',那么获取的最后一根5分钟K线就是 14:25:00-14:30:00 这一根。KD指标将基于这根K线及其之前的N根5分钟K线来计算。14:30:00)在划分bar时失去了精确对齐的意义。系统通常会将其等效为该日期当天的日线。获取的最后一根bar是该时间点所在当天的日线/周线/月线(如果是盘中时间,通常是利用当天的开盘价、最高价、最低价和截至该时间的最新价合成的“未完成”的日线bar)。KD指标将基于这根包含当天最新行情的日线及其之前的日线进行计算。datetime.datetime 类型,并精确到分钟,这样可以确保KD指标计算的是你期望的那个分钟截面的状态。datetime.date 或 datetime.datetime 均可,但要注意如果在盘前(如 09:00)调用,获取的日线数据实际上是截至昨天的;如果在盘后调用,则是包含今天的。check_date 和 unit 想象成直接传递给 get_bars(end_dt=check_date, unit=unit)。理解了 get_bars 的切片方式,就能完全掌握指标函数中 bar 的确认范围。