3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 JoinQuant(聚宽)量化交易平台中,get_price 是最常用的获取历史行情数据的 API 之一。其中,fq(復权/Adjustment)参数用于控制价格与成交量的复权处理方式。
get_price(security, start_date=None, end_date=None, frequency='daily', fields=None, skip_paused=False, fq='pre', count=None)
fq 参数支持以下三种选项:
| fq 参数值 | 复权类型 | 含义与计算逻辑 | 适用场景 |
|---|---|---|---|
'pre' |
前复权(默认值) | 以**当前(或获取数据截止日/当前逻辑时间)**的价格为基准,保持最新价格不变,向历史修正除权除息导致的价格缺口。 | 计算技术指标(MA、MACD、RSI等)、策略选股信号生成。 |
'post' |
后复权 | 以股票上市首日的价格为基准,保持历史初始价格不变,向未来修正除权除息后的价格。 | 长期收益率计算、连续价格序列分析。 |
None |
不复权 | 返回交易所公布的真实历史成交价格与真实成交量,不做任何复权因子修正。 | 实际下单交易算手数、计算真实持仓成本与市值。 |
'pre' 或 'post' 时,open、close、high、low、avg 等价格字段均会被复权因子修正,保持价格序列的连续性,消除分红送股导致的价格断层。价格 * 成交量 逻辑接近真实成交金额,volume 也会根据复权因子进行相应的复权缩放。set_option('use_real_price', True)在 JoinQuant 中,强烈建议在 initialize 中开启动态复权(真实价格)模式:
def initialize(context):
# 开启动态复权模式(真实价格)
set_option('use_real_price', True)
get_price(..., fq='pre') 或 history 时,返回的是**基于当前逻辑时间(context.current_dt)**的前复权价格。这能有效避免跨越未来除权日而引入未来函数。get_price 返回的行情 DataFrame。每天应重新调用 API 获取。# 1. 获取前复权数据(用于计算 5 日均线)
df_pre = get_price('000001.XSHE', count=5, frequency='daily', fields=['close'], fq='pre')
ma5 = df_pre['close'].mean()
# 2. 获取不复权数据(用于获取昨日真实收盘价)
df_real = get_price('000001.XSHE', count=1, frequency='daily', fields=['close'], fq=None)
real_close = df_real['close'][-1]
fq='pre',确保均线和指标不因除权产生虚假信号。fq=None 获取真实价格,或开启 set_option('use_real_price', True) 后由引擎自动处理。