哪家券商有API文档接口,ptrade量化股票策略编写
发布时间:2024-9-10 15:49阅读:38
获取行情信息
get_history - 获取历史行情
get_history(count, frequency='1d', field='close', security_list=None, fq=None, include=False, fill='nan', is_dict=False)
使用场景
该函数仅在回测、交易模块可用
接口说明
该接口用于获取最近N条历史行情K线数据。支持多股票、多行情字段获取。
注意事项:
该接口只能获取2005年后的数据。
针对停牌场景,我们没有跳过停牌的日期,无论对单只股票还是多只股票进行调用,时间轴均为二级市场交易日日历,停牌时使用停牌前的数据填充,成交量为0,日K线可使用成交量为0的逻辑进行停牌日过滤。
参数
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;
is_dict:返回是否是字典(dict)格式{str: array()},True –是,False-不是;选填参数,默认为False;返回为字典格式取数速度相对较快;入参类型:bool;
返回
第一种返回数据:
当获取单支股票(单只股票必须为字符串类型security_list='600570.SS',不能用security_list=['600570.SS'])的时候,无论行情字段field入参单个或多个,返回的都是pandas.DataFrame对象,行索引是datetime.datetime对象,列索引是行情字段,为str类型。比如:
如果当前时间是2017-04-18,get_history(5, '1d', 'open', '600570.SS', fq=None, include=False)将返回:
open2017-04-1140.302017-04-1240.082017-04-1340.032017-04-1440.042017-04-1739.90
第二种返回数据:
当获取多支股票(多只股票必须为list类型,特殊情况:当list只有一个股票时仍然当做多股票处理,比如security_list=['600570.SS'])的时候,如果行情字段field入参为单个,返回的是pandas.DataFrame对象,行索引是datetime.datetime对象,列索引是股票代码的编号,为str类型。比如:
如果当前时间是2017-04-18,get_history(5, '1d', 'open', ['600570.SS','600571.SS'], fq=None, include=False)将返回:
600570.SS600571.SS2017-04-1140.3017.812017-04-1240.0817.562017-04-1340.0317.422017-04-1440.0417.402017-04-1739.9017.49
第三种返回数据:
当获取多支股票(多只股票必须为list类型,特殊情况:当list只有一个股票时仍然当做多股票处理,比如security_list=['600570.SS'])的时候,如果行情字段field入参为多个,则返回pandas.Panel对象,items索引是行情字段(如'open'、'close'等),里面是很多pandas.DataFrame对象,每个pandas.DataFrame的行索引是datetime.datetime对象, 列索引是股票代码,为str类型,比如:
如果当前时间是2015-01-07,get_history(2, frequency='1d', field=['open','close'], security_list=['600570.SS', '600571.SS'], fq=None, include=False)['open']将返回:
600570.SS600571.SS2015-01-0554.7726.932015-01-0651.0025.83
假如要对panel索引中的对象进行转换,比如将items索引由行情字段转换成股票代码,可以通过panel_info = panel_info.swapaxes("minor_axis", "items")的方法转换。
比如:
panel_info = get_history(2, frequency='1d', field=['open','close'], security_list=['600570.SS', '600571.SS'], fq=None, include=False)
按默认索引:df = panel_info['open']
对默认索引做转换:panel_info = panel_info.swapaxes("minor_axis", "items")
转换之后的索引:df = panel_info['600570.SS']
关于numpy和pandas,请看下面的第三方库介绍。
示例
get_price - 获取历史数据
get_price(security, start_date=None, end_date=None, frequency='1d', fields=None, fq=None, count=None)
使用场景
该函数在研究、回测、交易模块可用
接口说明
该接口用于获取指定日期的前N条的历史行情K线数据或者指定时间段内的历史行情K线数据。支持多股票、多行情字段获取。
注意事项:
1、start_date与count必须且只能选择输入一个,不能同时输入或者同时都不输入。
2、针对停牌场景,我们没有跳过停牌的日期,无论对单只股票还是多只股票进行调用,时间轴均为二级市场交易日日历,停牌时使用停牌前的数据填充,成交量为0,日K线可使用成交量为0的逻辑进行停牌日过滤。
3、数据返回内容不包括当天数据。
4、count只针对'daily', 'weekly', 'monthly', 'quarter', 'yearly', '1d', '1m', '5m', '15m', '30m', '60m', '120m', '1w', 'mo', '1q', '1y'频率有效,并且输入日期的类型需与频率对应。
5、'weekly', '1w', 'monthly', 'mo', 'quarter', '1q', 'yearly', '1y'频率不支持start_date和end_date组合的入参,只支持end_date和count组合的入参形式。
6、返回的周线数据是由日线数据进行合成。
7、该接口只能获取2005年后的数据。
参数
security:一支股票代码或者一个股票代码的list(list[str]/str)
start_date:开始时间,默认为空。传入格式仅支持:YYYYmmdd、YYYY-mm-dd、YYYY-mm-dd HH:MM、YYYYmmddHHMM,如'20150601'、'2015-06-01'、'2015-06-01 10:00'、'201506011000'(str);
end_date:结束时间,默认为空,传入格式仅支持:YYYYmmdd、YYYY-mm-dd、YYYY-mm-dd HH:MM、YYYYmmddHHMM,如'20150601'、'2015-06-01'、'2015-06-01 14:00'、'201506011400'(str);
frequency: 单位时间长度,现有支持1分钟线(1m)、5分钟线(5m)、15分钟线(15m)、30分钟线(30m)、60分钟线(60m)、120分钟线(120m)、日线(1d)、周线(1w/weekly)、月线(mo/monthly)、季度线(1q/quarter)和年线(1y/yearly)频率数据(str);
fields:指明数据结果集中所支持输出字段(list[str]/str),输出字段包括 :
- open -- 开盘价(str:numpy.float64);
- high -- 最高价(str:numpy.float64);
- low --最低价(str:numpy.float64);
- close -- 收盘价(str:numpy.float64);
- volume -- 交易量(str:numpy.float64);
- money -- 交易金额(str:numpy.float64);
- price -- 最新价(str:numpy.float64);
- preclose -- 昨收盘价(str:numpy.float64)(仅日线返回);
- high_limit -- 涨停价(str:numpy.float64)(仅日线返回);
- low_limit -- 跌停价(str:numpy.float64)(仅日线返回);
- unlimited -- 判断查询日是否无涨跌停限制(1:该日无涨跌停限制;0:该日有涨跌停限制)(str:numpy.float64)(仅日线返回);
fq:数据复权选项,支持包括,pre-前复权,post-后复权,None-不复权(str);
count:大于0,不能与start_date同时输入,获取end_date前count根的数据,不支持除天('daily'/'1d')、分钟('1m')、5分钟线('5m')、15分钟线('15m')、30分钟线('30m')、60分钟线('60m')、120分钟线('120m')、周('weekly'/'1w')、('monthly'/'mo')、('quarter'/'1q')和('yearly'/'1y')以外的其它频率(int);
返回
get_price对于多股票和多字段不同场景下获取返回数据的规则与get_history一致,如下:
第一种返回数据:
当获取单支股票(单只股票必须为字符串类型security='600570.SS',不能用security=['600570.SS'])和单个或多个字段的时候,返回的是pandas.DataFrame对象,行索引是datetime.datetime对象,列索引是行情字段,为str类型。
例如,输入为get_price(security='600570.SS',start_date='20170201',end_date='20170213',frequency='1d')时,将返回:
open close high low volume price money preclose high_limit low_limit unlimited
2017-02-03 44.47 43.90 44.50 43.58 4418325.0 43.90 193895820.0 44.26 48.69 39.83 0
2017-02-06 43.91 44.10 44.30 43.66 4428487.0 44.10 194979290.0 43.90 48.29 39.51 0
2017-02-07 44.05 43.52 44.07 43.34 5649251.0 43.52 246776480.0 44.10 48.51 39.69 0
2017-02-08 43.59 44.59 44.78 43.53 12570233.0 44.59 557883600.0 43.52 47.87 39.17 0
2017-02-09 44.74 44.74 45.28 44.39 9240223.0 44.74 413875390.0 44.59 49.05 40.13 0
2017-02-10 44.80 44.62 44.98 44.41 8097465.0 44.62 361757300.0 44.74 49.21 40.27 0
2017-02-13 44.32 44.89 45.98 44.02 14931596.0 44.89 672360490.0 44.62 49.08 40.16 0
第二种返回数据:
当获取多支股票(多只股票必须为list类型,特殊情况:当list只有一个股票时仍然当做多股票处理,比如security=['600570.SS'])和单个字段的时候,返回的是pandas.DataFrame对象,行索引是datetime.datetime对象,列索引是股票代码的编号,为str类型。
例如,输入为get_price(['600570.SS'], start_date='20170201', end_date='20170213', frequency='1d', fields='open')时,将返回:
600570.SS
2017-02-03 44.47
2017-02-06 43.91
2017-02-07 44.05
2017-02-08 43.59
2017-02-09 44.74
2017-02-10 44.80
2017-02-13 44.32
第三种返回数据:
如果是获取多支股票(多只股票必须为list类型,特殊情况:当list只有一个股票时仍然当做多股票处理,比如security=['600570.SS'])和多个字段,则返回pandas.Panel对象,items索引是行情字段,为str类型(如'open'、'close'等),里面是很多pandas.DataFrame对象,每个pandas.DataFrame的行索引是datetime.datetime对象, 列索引是股票代码,为str类型。
例如,输入为get_price(['600570.SS','600571.SS'], start_date='20170201', end_date='20170213', frequency='1d', fields=['open','close'])['open']时,将返回:
600570.SS 600571.SS
2017-02-03 44.47 19.36
2017-02-06 43.91 19.00
2017-02-07 44.05 19.27
2017-02-08 43.59 19.10
2017-02-09 44.74 19.47
2017-02-10 44.80 19.57
2017-02-13 44.32 19.22
假如要对panel索引中的对象进行转换,比如将items索引由行情字段转换成股票代码,可以通过panel_info = panel_info.swapaxes("minor_axis", "items")的方法转换。
get_individual_entrust– 获取逐笔委托行情
get_individual_entrust(stocks=None, data_count=50, start_pos=0, search_direction=1, is_dict=False)
使用场景
该函数在交易模块可用
接口说明
该接口用于获取当日逐笔委托行情数据。
注意事项:
1、沪深市场都有逐笔委托数据;
2、逐笔委托,逐笔成交数据需开通level2行情才能获取到数据,否则无数据返回;
参数
stocks: 默认为当前股票池中代码列表(list[str]);
data_count: 数据条数,默认为50,最大为200(int);
start_pos: 起始位置,默认为0(int);
search_direction: 搜索方向(1向前,2向后),默认为1(int);
is_dict: 返回类型(False-Panel; True-dict),默认为False(bool);
返回
当入参is_dict为False时,正常返回Pandas.panel对象,异常时返回None。
Items axis: 股票代码列表(str);
Major_axis axis: 数据索引为自然数列(DataFrame);
Minor_axis axis: 包含以下信息:
- business_time: 时间戳毫秒级(str:numpy.int64);
- hq_px: 价格(str:numpy.float64);
- business_amount: 委托数量(str:numpy.int64);
- order_no: 委托编号(str:numpy.int64);
- business_direction: 委托方向,0:卖,1:买,2:借入,3:出借(str:numpy.int64);
- trans_kind: 委托类别,深圳市场(1:市价委托,2:限价委托,3:本方最优),上海市场(4:增加订单 5:删除订单)(str:numpy.int64);
当入参is_dict为True时,返回dict类型数据。
返回的数据格式如下:
{股票代码(str): [[时间戳毫秒级(int), 价格(float), 委托数量(int), 委托编号(int), 委托方向(int)], ...], "fields": ["business_time", "hq_px", "business_amount", "order_no", "business_direction", "trans_kind"]}
{"600570.SS": [[20220913105747848, 36.16, 700, 5383145, 0, 4], ...], "fields": ["business_time", "hq_px", "business_amount", "order_no", "business_direction", "trans_kind"]}
示例
后续小编会持续更新关于ptrade使用的内容,关于ptrade开通的问题可以随时私信评论或者留言哦!小编会第一时间回复的。
温馨提示:投资有风险,选择需谨慎。