1. get_history接口
该接口可以用来获取某个标的的历史数据,可以获取最近N条历史行情K线数据。支持多股票、多行情字段获取。在Ptrade中实时更新,一分钟结束之后,更新一分钟的数据,如果使用tick_data实盘交易,要注意补充当前数据,否则可能会造成交易信号滞后。
get_history(count, frequency='1d', field='close', security_list=None, fq=None, include=False, fill='nan')
参数说明
count: K线数量,大于0,返回指定数量的K线行情;必填参数;入参类型:int;
frequency:K线周期,现有支持1分钟线(1m)、5分钟线(5m)、15分钟线(15m)、30分钟线(30m)、60分钟线(60m)、120分钟线(120m)、日线(1d)、周线(1w/weekly)、月线(mo/monthly)、季度线(1q/quarter)和年线(1y/yearly)频率的数据;选填参数,默认为'1d';入参类型:str;
field:指明数据结果集中所支持输出的行情字段;选填参数,默认为['open','high','low','close','volume','money','price'];入参类型:list[str,str]或str;输出字段包括:
- open -- 开盘价,字段返回类型:numpy.float64;
- high -- 最高价,字段返回类型:numpy.float64;
- low --最低价,字段返回类型:numpy.float64;
- close -- 收盘价,字段返回类型:numpy.float64;
- volume -- 交易量,字段返回类型:numpy.float64;
- money -- 交易金额,字段返回类型:numpy.float64;
- price -- 最新价,字段返回类型:numpy.float64;
- preclose -- 昨收盘价,字段返回类型:numpy.float64(仅日线返回);
- high_limit -- 涨停价,字段返回类型:numpy.float64(仅日线返回);
- low_limit -- 跌停价,字段返回类型:numpy.float64(仅日线返回);
- unlimited -- 判断查询日是否是无涨跌停限制(1:该日无涨跌停限制;0:该日不是无涨跌停限制),字段返回类型:numpy.float64(仅日线返回);
security_list:要获取数据的股票列表;选填参数,None表示在上下文中的universe中选中的所有股票;入参类型:list[str,str]或str;
fq:数据复权选项,支持包括,pre-前复权,post-后复权,dypre-动态前复权,None-不复权;选填参数,默认为None;入参类型:str;
include:是否包含当前周期,True –包含,False-不包含;选填参数,默认为False;入参类型:bool;
fill:行情获取不到某一时刻的分钟数据时,是否用上一分钟的数据进行填充该时刻数据,'pre'–用上一分钟数据填充,'nan'–NaN进行填充(仅交易有效);选填参数,默认为'nan';入参类型:str;
返回数据解析
① 输入参数security是单个标的(str)
get_history(5, '1d', 'open', '600570.SS', fq=None, include=False)
返回数据格式如下:pandas.DataFrame对象,其中index:time columns:fileds
open | |
2017-04-11 | 40.30 |
2017-04-12 | 40.08 |
2017-04-13 | 40.03 |
2017-04-14 | 40.04 |
2017-04-17 | 39.90 |
② 输入参数security是列表
get_history(5, '1d', 'open', ['600570.SS','600571.SS'], fq=None, include=False)
返回数据格式如下:pandas.DataFrame对象,其中index:time columns:stock_code
600570.SS | 600571.SS | |
---|---|---|
2017-04-11 | 40.30 | 17.81 |
2017-04-12 | 40.08 | 17.56 |
2017-04-13 | 40.03 | 17.42 |
2017-04-14 | 40.04 | 17.40 |
2017-04-17 | 39.90 | 17.49 |
③输入参数security是列表,行情字段field入参为多个
get_history(2, frequency='1d', field=['open','close'], security_list=['600570.SS', '600571.SS'], fq=None, include=False)
返回数据格式:pandas.Panel对象,其中items索引是行情字段(如'open'、'close'等)
<class 'pandas.core.panel.Panel'>
Dimensions: 2 (items) x 2 (major_axis) x 2 (minor_axis)
Items axis: open to close
Major_axis axis: 2023-02-08 00:00:00 to 2023-02-09 00:00:00
Minor_axis axis: 600570.SS to 600571.SS
示意图:
可以使用以下代码选中其中一个dataframe
get_history(2, frequency='1d', field=['open','close'], security_list=['600570.SS', '600571.SS'], fq=None, include=False)['open']
返回数据格式:pandas.DataFrame对象,其中index:time columns:stock_code
600570.SS | 600571.SS | |
2015-01-05 | 54.77 | 26.93 |
2015-01-06 | 51.00 | 25.83 |
解析:很多朋友可能没有见过panel格式的数据结构,因为panel只在pandas低版本使用,现在新版本已经取消了panel结构,可以简单地把Items axis看做dataframe的名字,Major_axis axis看做index,Minor_axis axis看做column,但是以行情字段作为items_axis不符合我们使用的习惯,我们一般会使用swapaxis方法改变items_axis,将stock_code作为items_axis,行情字段作为column,将dataframe的结构改成和①返回的格式一致,让我们处理数据结构更加方便。
示例:
panel_info = get_history(2, frequency='1d', field=['open','close'], security_list=['600570.SS', '600571.SS'], fq=None, include=False)
panel_info = panel_info.swapaxes("minor_axis", "items")
log.info(panel_info)
返回数据格式:pandas.Panel对象,其中items索引stock_code
<class 'pandas.core.panel.Panel'>
Dimensions: 2 (items) x 2 (major_axis) x 2 (minor_axis)
Items axis: open to close
Major_axis axis: 2023-02-08 00:00:00 to 2023-02-09 00:00:00
Minor_axis axis: 600570.SS to 600571.SS
示意图:
可以使用以下代码选中其中一个dataframe
panel_info = get_history(2, frequency='1d', field=['open','close'], security_list=['600570.SS', '600571.SS'], fq=None, include=False)
panel_info = panel_info.swapaxes("minor_axis", "items")
df = panel_info['600570.SS']
返回数据格式:pandas.DataFrame对象,其中index:time columns:fileds
open | close | |
2023-02-08 | 46.90 | 47.80 |
2023-02-09 | 47.79 | 47.28 |
有疑问可以交流,可代写策略,欢迎私信交流