🚀 AI 一键生成 joinquant 策略代码
立即体验
👉 AI 生成代码 👈

在JoinQuant量化平台中获取标准周线数据的正确方法

joinquant | 发布时间: 2026/6/4
以下内容由 EasyQuant 生成。

问题描述

关于周线数据

老师,在股票软件中,周线一般都是以周五日为一个K线的,量化中如何获得周线呢?如get_pritce中只支持天、分钟、月,如果按7d取出的数肯定不对呀

解决方案

在 JoinQuant(聚宽)量化平台中,如果您想获取标准的周线数据(即以自然周为单位,通常以周五收盘为结束的 K 线),使用 get_price 函数传入 7d 确实是不准确的,因为 7d 代表的是滚动的 7 个交易日,而不是自然周。

为了获取标准的周线数据,强烈推荐使用 get_bars 函数

使用 get_bars 获取周线数据

get_bars 函数专门用于获取各种时间周期的 bar 数据,其 bar 的分割方式与主流股票软件完全相同。它原生支持 '1w'(一周)作为时间单位。

函数说明

get_bars(security, count, unit='1d', fields=['date', 'open','high','low','close'], include_now=False, end_dt=None, fq_ref_date=None, df=False)
  • unit 参数:将其设置为 '1w' 即可获取标准的周线数据。
  • security:标的代码,如 '000001.XSHE'
  • count:获取的周线数量。
  • fields:需要获取的字段,如 ['date', 'open', 'high', 'low', 'close', 'volume']
  • df:设置为 True 可以直接返回 pandas.DataFrame 格式,方便数据处理。

代码示例

以下是一个在策略或研究环境中获取平安银行(000001.XSHE)最近 5 周周线数据的示例:

from jqdata import *
import datetime

# 获取平安银行最近5周的周线数据(不复权)
# 注意:unit='1w' 代表一周
weekly_bars = get_bars('000001.XSHE', count=5, unit='1w', 
                       fields=['date', 'open', 'high', 'low', 'close', 'volume'],
                       include_now=False, 
                       end_dt=datetime.datetime.now(), 
                       fq_ref_date=None, 
                       df=True)

print(weekly_bars)

为什么不用 get_price

虽然 get_price 是一个非常常用的数据获取函数,但它的 frequency 参数主要支持 'Xd'(X天)和 'Xm'(X分钟)。如果您传入 '7d',它会将过去的 7 个交易日合并为一根 K 线,这与我们通常理解的“周一到周五”的自然周线在时间对齐上是完全不同的。

总结

  • 错误做法get_price(..., frequency='7d') -> 得到的是滚动 7 个交易日的合成 K 线。
  • 正确做法get_bars(..., unit='1w') -> 得到的是与主流炒股软件一致的标准自然周线。