Ptrade量化交易平台历史数据接口get_history解析

get_history接口用于获取股票历史K线数据,支持多种周期和字段选择。返回数据可为DataFrame或Panel格式,可通过参数调整包含当前周期、数据填充方式等。对于Panel数据,通常会通过swapaxes转换使其更便于处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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-1140.30
2017-04-1240.08
2017-04-1340.03
2017-04-1440.04
2017-04-1739.90

② 输入参数security是列表

get_history(5, '1d', 'open', ['600570.SS','600571.SS'], fq=None, include=False)

返回数据格式如下:pandas.DataFrame对象,其中index:time     columns:stock_code

600570.SS600571.SS
2017-04-1140.3017.81
2017-04-1240.0817.56
2017-04-1340.0317.42
2017-04-1440.0417.40
2017-04-1739.9017.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.SS600571.SS
2015-01-0554.7726.93
2015-01-0651.0025.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

openclose
2023-02-0846.9047.80
2023-02-0947.7947.28

有疑问可以交流,可代写策略,欢迎私信交流

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

方圆量化

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值