最近一直在做一些股票方面的算法研究,常常需要用到一些第三方库来获取一些股票数据,比如当天的行情数据、指数成分股、行业成分股等;但,过去依赖的这些第三方库都纷纷转向收费或者各种的调用失灵,所以我就下定决心自己封装一套API用来调用下在线的股票数据,然后就有了下面的这套整合好的API。往后有时间,博主会不断的在现有的基础上增加新的数据接口在这个API里面,用来方便调用更多类型的股票数据。
版本更新:
【2021-03-13 更新内容】
整合了A股和港股两端的行情+财务数据,同时把api打包存放到pypi服务器上了,大家可以通过pip工具来install接口下来用:
pip install jquote_api
https://pypi.org/project/jquote-api/1.0.3/
第一、接口的依赖项
接口暂时的功能只限于获取上证50、沪深300、中证500、中证800和全A市场股票的基础数据,比如代码、名称、OLHC价格、昨收价、PE、PS、股本、在指数内权重(指数成分股)、成交量和成交额等数据,这些数据也是我们平常研究股票最普遍用到的,所以接口首先实现这些功能。
上图获取的是2021-01-30当天的全市场股票的基础数据【OLHC、换手率、成交量、PE】,借助这些数据,大家可以快速的实现一些股票过滤的算法模型。
第二、接口的详情
接口分为两种类型,全A市场和各个主流的指数都分别拥有独立的接口调用权限。
df = get_hs300_codes() # 000300
拿到接口源码【import getAStockCodeApi】后即可以直接调用沪深300成分股的数据,数据内容包括合约代码、合约名称、所在行业和OLHC价格等
df = get_hs300_codes()
返回值:
'code',
'name',
'industy',
'city',
'eps',
'net_aps',
'ROA',
'total_equity',
'cir_equity',
'last_price',
'cir_market',
'PE',
'weight_ratio',
'index_code',
'date',
'last_price',
'rate(%)',
'total_trade_volume',
'total_trade_money'
df = get_zz500_codes() # 000905
直接调用中证500的接口:返回成分股的数据,数据内容包括合约代码、合约名称、所在行业和OLHC价格等
df = get_zz500_codes()
返回值:
'code',
'name',
'industy',
'city',
'eps',
'net_aps',
'ROA',
'total_equity',
'cir_equity',
'last_price',
'cir_market',
'PE',
'weight_ratio',
'index_code',
'date',
'last_price',
'rate(%)',
'total_trade_volume',
'total_trade_money'
df = get_zz800_codes() # 000908
df = get_zz800_codes()
返回值:
'code',
'name',
'industy',
'city',
'eps',
'net_aps',
'ROA',
'total_equity',
'cir_equity',
'last_price',
'cir_market',
'PE',
'weight_ratio',
'index_code',
'date',
'last_price',
'rate(%)',
'total_trade_volume',
'total_trade_money'
全A市场的数据跟指数成股份的数据稍微有一点的出入:
df = get_a_codes(max_count=5000)
全A数据的接口是带一个参数的:
df = get_a_codes(max_count=5000)
max_count: 默认是5000,这个参数指的是全市场的股票数量,当前的股票数量是4000多只,所以默认5000个是足够的。
返回值:
'name'
'code'
'last_price'
'pct_rate'
'pre_price'
'tur_rate'
'open'
'high'
'low'
'PE'
'PS'
'trade_volume'
'trade_money'
【接口更新记录:2021-01-31 22:38:00】
接口本版本的更新加入了平时博主经常用到的股票日内净流入资金的数据
参数:
max_acount: 现在市场全A的股票数量大概是80多张表,而默认是200张表所在的个股资金净流入数据是足够很长一段时间获取数据的,但当股票继续增加发行的时候,届时可能需要通过调整参数来获取全市场的股票数据。
df = get_net_trade_data(max_acount=2000)
返回值:
股票代码
股票名称
最新价
今日涨跌幅
主力净流入-净额
主力净流入-净占比(%)
超大单净流入-净额
超大单净流入-净占比(%)
大单净流入-净额
中单净流入-净占比(%)
小单净流入-净额
小单净流入-净占比(%)
【接口更新记录:2021-02-01 13:13:00】
df = get_quote_data(code='sz000001')
参数:code 合约代码(exchange+code,如sz000001)
返回值:
1: 股票名字
2: 股票代码
3: 当前价格
4: 昨收
5: 今开
6: 成交量(手)
7: 外盘 #
8:内盘 #
9:买一 #
10: 买一量(手) #
11-18: 买二 买五 #
13 19: 卖一 #
14 20: 卖一量
卖二 卖五 #
16 29: 最近逐笔成交 #
17 30: 时间 #
18 31: 涨跌 #
19 32: 涨跌% #
20 33: 最高 #
21 34: 最低
23 36: 成交量(手) #
24 37: 成交额(万) #
25 38: 换手率 #
26 39: 市盈率 #
28 41: 最高 #
29 42: 最低 #
30 43: 振幅 #
44: 流通市值 #
45: 总市值 #
46:市净率 #
47: 涨停价 #
48: 跌停价
【接口更新记录:2021-02-01 18:10:00】
增加一个获取A股历史行情数据的接口,这样下来,接口的功能就比较齐全了,从指数的成分股、个股资金流、个股实时行情到个股的历史行情数据都覆盖起来了。
get_his_a_codes_data(date_count=365, th_code='ALLSTOCKS')
参数:
date_count: 获取的个股数据的时间跨度(默认是最近一年)
th_code: 要获取的指数[000016/000300/000905/000906/ALLSTOCKS](默认是全市场A股)
返回值:
日期
股票代码
名称
收盘价
最高价
最低价
开盘价
前收盘
涨跌额
涨跌幅
换手率
成交量
成交金额
总市值
流通市值
成交笔数
ps:这个接口返回数据比较慢,如果是需要获取全A的个股历史数据,不建议在策略运行的时候调用,可以每天启动定时任务获取数据到本地,然后调用。
【接口更新记录:2021-02-06 18:00:00】
新增接口get_industry_codes
该接口获取指定行业的成分股,行业的代码如下:
'800001': '银行', '800002': '旅游酒店',
'800003': '民航机场', '800004': '装修装饰',
'800005': '高速公路', '800006': '保险',
'800007': '房地产', '800008': '工艺商品',
'800009': '珠宝首饰', '800010': '医疗行业',
'800011': '医药制造', '800012': '交运物流',
'800013': '国际贸易', '800016': '纺织服装',
'800014': '园林工程', '800015': '水泥建材',
'800017': '商业百货', '800018': '港口水运',
'800019': '家电行业', '800020': '船舶制造',
'800021': '工程建设', '800022': '木业家具',
'800023': '文教休闲', '800024': '公用事业',
'800025': '交运设备', '800026': '环保工程',
'800034': '文化传媒', '800029': '电信运营',
'800027': '农牧饲渔', '800062': '金属制品',
'800030': '多元金融', '800031': '钢铁行业',
'800032': '石油行业', '800033': '券商信托',
'800035': '玻璃陶瓷', '800036': '综合行业',
'800037': '食品饮料', '800038': '电力行业',
'800039': '酿酒行业', '800040': '安防设备',
'800041': '机械行业', '800044': '农药兽药',
'800042': '通讯行业', '800043': '电子信息',
'800045': '专用设备', '800046': '软件服务',
'800047': '仪器仪表', '800048': '塑胶制品',
'800049': '贵金属', '800050': '有色金属',
'800051': '航天航空', '800052': '包装材料',
'800053': '输配电气', '800054': '汽车行业',
'800055': '化工行业', '800058': '电子元件',
'800056': '造纸印刷', '800057': '化肥行业',
'800059': '化纤行业', '800060': '材料行业',
'800061': '煤炭采集'
get_industry_codes(industry_code, max_acount=50):
参数:
industry_code:指定行业的代码
max_acount:默认是50即可
返回值:
code:股票代码
name:股票名称
close:收盘价
rate:涨跌幅
high:最高价
low:最低价
open:开盘价
pre_price:昨收价
tur_rate:换手率
vol:成交量
money:成交额
【接口更新记录:2021-02-08 15:00:00】
新增接口:
df = get_st_stock_codes,接口可以获取到最新的一揽子st股票;
df = get_ex_new_stock_codes,接口可以获取到最新的一揽子次新股;
a)、get_st_stock_codes
参数:
max_acount:默认是100即可
返回值:
'code',
'name',
'close',
'rate',
'high',
'low',
'open',
'pre_price',
'tur_rate',
'vol',
'money',
b)、get_ex_new_stock_codes
参数:
max_acount:默认是100即可
返回值:
'code',
'name',
'close',
'rate',
'high',
'low',
'open',
'pre_price',
'tur_rate',
'vol',
'money',
'ipo_time'
【接口更新记录:2021-02-08 21:00:00】
新增接口:get_northbound_net_trade_data(max_acount=5) ,当天北向资金增持行业板块排行
df = get_northbound_net_trade_data(max_acount=5)
参数:
max_acount: 默认为5即可
返回值:
code:行业代码
name:行业名称
rate:行业涨跌幅
股票只数【北向资金今日增持估计】
股票只数【北向资金今日持股】
占北向资金比【北向资金今日持股】
市值【北向资金今日增持估计】
市值增幅 【北向资金今日增持估计】
占板块比% 【北向资金今日增持估计】
占北向资金比% 【北向资金今日增持估计】
市值【北向资金今日持股】
增持市值最大的个股code【今日增持最大股】
增持市值最大的个股name【今日增持最大股】
减持市值最大个股code【今日减持最大股】
减持市值最大个股name【今日减持最大股】
接口更新记录:2021-02-09 11:00:00】
新增接口:get_his_hbgy_capital_data(max_acount=3) ,当月最新的央行货币供应数据
df = get_his_hbgy_capital_data(max_acount=3)
参数:
max_acount: 默认为5即可
返回值:
date,
M2-数量(亿元),
M2-同比增长,
M2-环比增长,
M1-数量(亿元),
M1-同比增长,
M1-环比增长,
M0-数量(亿元),
M0-同比增长,
M0-环比增长,
接口更新记录:2021-02-09 15:30:00】
新增接口:get_rzrq_data(max_acount=5) ,融资融券实时更新的历史数据
df = get_rzrq_data(max_acount=5)
参数:
max_acount:保持默认值即可
返回值:
日期
融资余额
融资余额占流通市值占比
融资买入额
融资买入额3D
融资买入额5D
融资买入额10D
融资偿还额1D
融资偿还额3D
融资偿还额5D
融资偿还额10D
融资净买入额
融资净买入额3D
融资净买入额5D
融资净买入额10D
融资买入额
融资买入额3D
融资买入额5D
融资买入额10D
融券余额
融券余量
融券卖出量1D
融券卖出量3D
融券卖出量5D
融券卖出量10D
融券偿还量1D
融券偿还量3D
融券偿还量5D
融券偿还量10D
融券净卖出股
融券净卖出股3D
融券净卖出股5D
融券净卖出股10D
融资融券余额
融资融券余额差额
API的源码我懒得塞到GitHub上了,老样子,如果有想了解的朋友,直接加我即可。
qq:1013359736