获取股票实时交易数据 (获取a股历史交易数据)

history(推荐)

获取多只股票多属性的历史行情数据,不能在研究环境中使用。

调用方法:

history(symbol_list, fields, bar_count, fre_step, skip_paused = False, fq = 'pre', is_panel=0)

释义:

获取多只股票多属性的历史行情数据,不能在研究环境中使用。

参数:

参数

含义

详细内容

symbol_list

股票、指数或基金代码列表

例如:symbol_list = ['000001.SZ','600000.SH','510300.OF'],单个股票可以是字符串.

fields

数据字段

分钟和日级支持以下字段:> 'open': 开盘价(元)> 'high': 最高价(元)> 'low': 最低价(元)> 'close': 收盘价(元)> 'factor': 复权因子(复权因子 = 后复权价格 / 不复权价格)> 'volume': 成交量(股)> 'turnover': 成交额(元)> 'turnover_rate': 换手率(%)> 'is_paused': 是否停牌, 返回值为0或1, 0表示未停牌日级还支持以下字段:> 'high_limit': 涨停价(元)> 'low_limit': 跌停价(元)> 'avg_price': 均价(元)> 'prev_close': 前收盘价(元)> 'quote_rate': 涨跌幅(%)> 'amp_rate': 振幅(%)> 'is_st': 是否为ST, 返回值为0或1, 0表示非ST

bar_count

历史长度

例如bar_count = 5,表示获取过去5个时间步长的历史数据

fre_step

时间步长

其中’Xd’代表X天,’Xm’代表X分钟,’Xt’代表Xtick例如:fre_step = '1d'表示时间步长为1天当X>1时,fields只支持 ‘open’、’close’、’high’、’low’、’volume’、’turnover’这几个字段

skip_paused

是否跳过停牌数据

默认不跳过(主要是为了在获取多只股票数据时保持时间轴一致)skip_paused = True:表示跳过skip_paused = False:表示不跳过

fq

复权选项

默认为不复权fq = None:不复权fq = 'post':后复权fq = 'pre':前复权(动态复权模式,详情请参见拆分、合并与分红)

is_panel

返回数据格式

默认为dict,即is_panel = 0is_panel = 1则返回Pandas.Panel格式的数据,key为fieldsis_panel = 0则返回dict格式的数据,key为symbol

注意事项:

1.该函数可以直接用来获取数据,且支持多只股票多属性.
2.该函数的参数顺序与调用方法中一致,不然无法获取相关数据.
3.该函数没有起始日期,结束日期默认为上一个交易日(获取日级数据)或上一分钟(分钟数据)

返回格式:

1. is_panel = 0: 返回dict对象,其key是symbol即证券代码、值是pandas.Dataframe,行索引是datetime.datetime对象,列索引是字段名称。
2. is_panel = 1: 返回pandas.Panel对象,key为fileds字段(open/high/low/…)。pandas.Panel为pandas.DataFrame的三维结构,选定字段后输出的便是pandas.DataFrame对象。

示例:

【示例1】
def init(context):
    pass
def handle_bar(context,bar_dict):
    #获取万科A与平安银行过去10日的收盘价与最高价,并且输出数据
    price=history(['000001.SZ','000002.SZ'], ['close','high'], 10, '1d', False, 'pre', is_panel=1)
    log.info('收盘价:'+str(price['close']))
    log.info('最高价:'+str(price['high']))

【示例2】
def init(context):
    pass
def handle_bar(context,bar_dict):
    #获取万科A与平安银行过去10个60分钟级的开盘价,并且输出数据
    price=history(['600519.SH','300033.SZ'], ['open'] , 10, '60m', False, 'pre', is_panel=0)
    log.info('300033.SZ开盘价:'+str(price['300033.SZ']))
    log.info('600519.SH开盘价:'+str(price['600519.SH']))

示例返回结果:

【示例1】返回结果:
2026-03-14T14:05:18+00:00 - INFO
收盘价:        000001.SZ  000002.SZ
2016-12-19       9.20      21.10
2016-12-20       9.11      20.33
2016-12-21       9.16      20.48
2016-12-22       9.14      20.61
2016-12-23       9.08      20.30
2016-12-26       9.12      20.65
2016-12-27       9.08      21.42
2016-12-28       9.06      21.20
2016-12-29       9.08      20.84
2016-12-30       9.10      20.55
2026-03-14T14:05:18+00:00 - INFO
最高价:        000001.SZ  000002.SZ
2016-12-19       9.23      22.00
2016-12-20       9.20      21.00
2016-12-21       9.16      20.70
2016-12-22       9.16      20.77
2016-12-23       9.14      20.67
2016-12-26       9.13      20.69
2016-12-27       9.13      21.98
2016-12-28       9.11      21.48
2016-12-29       9.09      21.32
2016-12-30       9.10      20.96

【示例2】返回结果:
2026-03-14T14:05:18+00:00 - INFO
300033.SZ开盘价:    open
2026-03-14T14:05:18+00:00  69.00
2026-03-14T14:05:18+00:00  68.50
2026-03-14T14:05:18+00:00  68.12
2026-03-14T14:05:18+00:00  68.69
2026-03-14T14:05:18+00:00  68.49
2026-03-14T14:05:18+00:00  68.55
2026-03-14T14:05:18+00:00  68.90
2026-03-14T14:05:18+00:00  68.81
2026-03-14T14:05:18+00:00  70.20
2026-03-14T14:05:18+00:00  70.11
2026-03-14T14:05:18+00:00 - INFO
600519.SH开盘价:    open
2026-03-14T14:05:18+00:00  328.30
2026-03-14T14:05:18+00:00  326.55
2026-03-14T14:05:18+00:00  326.99
2026-03-14T14:05:18+00:00  326.00
2026-03-14T14:05:18+00:00  325.19
2026-03-14T14:05:18+00:00  325.40
2026-03-14T14:05:18+00:00  324.01
2026-03-14T14:05:18+00:00  323.70
2026-03-14T14:05:18+00:00  325.80
2026-03-14T14:05:18+00:00  325.80