问题描述
解决方案
在 JoinQuant(聚宽)量化平台中,get_price 函数本身并不直接支持标准的日历周线('1w')或月线('1M')数据。
根据官方 API 文档说明,get_price 的 frequency 参数支持 'Xd'(X天)和 'Xm'(X分钟),例如 '5d' 代表 5 天的滑动窗口合成数据,但这与我们通常理解的按自然周或自然月划分的 K 线不同。
官方文档明确指出:“获取频率非一天或者非一分钟的数据,请使用 get_bars。”
如何正确获取周线和月线数据?
要获取标准的周线和月线数据,您应该使用 get_bars 函数。get_bars 的 unit 参数完美支持标准周线('1w')和月线('1M')。
1. 获取周线数据示例
使用 unit='1w' 可以获取标准的周 K 线数据:
from jqdata import *
import datetime
# 取得距离 2018-01-05 最近五周(不包括这一周)的不复权周线数据
weekly_data = get_bars('600507.XSHG',
count=5,
unit='1w',
fields=('date', 'open', 'high', 'low', 'close'),
include_now=False,
end_dt='2018-01-05',
fq_ref_date=None)
print(weekly_data)
2. 获取月线数据示例
使用 unit='1M' 可以获取标准的月 K 线数据:
from jqdata import *
import datetime
# 取得最近五个月(不包括这一月)的前复权月线数据
now = datetime.datetime.now().date()
monthly_data = get_bars('600507.XSHG',
count=5,
unit='1M',
fields=('date', 'open', 'high', 'low', 'close'),
include_now=False,
end_dt='2018-01-05',
fq_ref_date=now)
print(monthly_data)
总结与建议
get_price:适用于获取日线('1d'/'daily')和分钟线('1m'/'minute')数据,或者简单的滑动窗口天数(如'5d')。get_bars:是获取多周期 K 线(特别是标准周线'1w'、月线'1M'以及非标准分钟线如'5m'、'15m')的最佳选择,且其 K 线分割方式与主流股票软件一致。