history
函数用于获取股票的历史行情数据,通常在量化策略中使用。以下是对该函数的详细讲解:
1. 函数作用
history
函数用于获取股票的多属性历史行情数据。它可以在策略中调用,用于获取指定股票在指定时间范围内的历史数据。
2. 调用方法
history(
symbol_list,
fields,
bar_count,
fre_step,
skip_paused = False,
fq = 'pre',
)
3. 参数说明
-
symbol_list:
- 类型:
str
或list
- 说明:标的代码。如果只需要获取单个股票的数据,可以传入字符串;如果需要获取多个股票的数据,需要传入列表。
- 示例:
'000001.SZ'
或['000001.SZ', '000002.SZ']
- 类型:
-
fields:
- 类型:
list
- 说明:需要获取的数据字段。支持的字段可以参考A股日行情数据或A股分钟行情数据。
- 示例:
['close', 'high']
表示获取收盘价和最高价。
- 类型:
-
bar_count:
- 类型:
int
- 说明:历史数据的长度。例如,
bar_count = 5
表示获取过去5个时间步长的历史数据。
- 类型:
-
fre_step:
- 类型:
str
- 说明:时间步长。格式为
'Xd'
或'Xm'
,其中X
必须为正整数。例如,fre_step = '1d'
表示时间步长为1天。 - 注意:当
X
不等于1时,fields
仅支持'open'
,'high'
,'low'
,'close'
,'volume'
,'turnover'
这几个字段。
- 类型:
-
skip_paused:
- 类型:
bool
- 说明:是否跳过停牌数据。
skip_paused = True
:跳过停牌数据。skip_paused = False
:不跳过停牌数据。
- 默认值:
False
- 类型:
-
fq:
- 类型:
str
- 说明:复权选项。可选不复权、前复权、后复权。
fq = None
:不复权。fq = 'pre'
:前复权,动态复权模式,以当前bar的最新价作为基准向前复权。fq = 'post'
:后复权。
- 默认值:
'pre'
- 类型:
4. 注意事项
- 由于策略框架的运行机制,取日频历史行情时,不包含当前bar的数据;取分钟频历史行情时,包含当前bar数据。
5. 示例
def init(context):
pass
def handle_bar(context, bar_dict):
# 获取万科A与平安银行过去10日的收盘价与最高价,并且输出数据
price = history(['000001.SZ', '000002.SZ'], ['close', 'high'], 10, '1d', False, 'pre')
log.info('收盘价:' + str(price['close']))
log.info('最高价:' + str(price['high']))
6. 返回数据
- 返回一个
dict
对象,其key
是symbol
(证券代码),值是pandas.DataFrame
。 DataFrame
的行索引是datetime.datetime
对象,列索引是字段名称。
7. 示例返回结果
2017-01-03 09:30:00 - INFO
收盘价: 000001.SZ 000002.SZ
2016-12-19 9.20 21.10
在这个示例中,history
函数返回了万科A(000001.SZ
)和平安银行(000002.SZ
)在过去10个交易日内的收盘价和最高价。返回的数据是一个字典,字典的键是股票代码,值是一个 DataFrame
,其中包含了每个交易日的数据。
8. 总结
history
函数是量化策略中常用的工具,用于获取股票的历史行情数据。通过合理设置参数,可以获取到所需的历史数据,并用于策略的分析和决策。