证券宝股票数据API接口怎么用
摘要:
股票数据API接口,证券宝提供实时行情与历史数据,支持Python调用,获取股票、期货数据,量化交易必备工具。

证券宝股票数据API接口的获取与认证
证券宝(BaoStock)是一个免费开源的股票数据接口,提供A股、港股、美股等市场的历史行情数据。要使用证券宝API,首先需要通过pip安装baostock库:pip install baostock。安装完成后,在Python脚本中导入baostock并登录,登录过程需要提供用户名和密码,可以通过注册获取。登录成功后,即可调用接口获取数据。
登录代码如下:

import baostock as bs
lg = bs.login()
# 登录成功会返回结果,lg.error_code为'0'表示成功
登录后,即可使用bs.query_history_k_data_plus等函数获取历史K线数据。证券宝接口的数据格式为DataFrame,方便后续处理。
获取股票历史K线数据
证券宝最常用的接口是query_history_k_data_plus,该接口可以获取日线、周线、月线、5分钟、15分钟、30分钟、60分钟等不同周期的K线数据。调用时需要指定股票代码、起始日期、结束日期、频率以及需要返回的字段。
示例代码获取平安银行(000001)的日K线数据,包括开高低收、成交量、成交额等:
import baostock as bs
import pandas as pd
# 登陆系统
lg = bs.login()
# 获取平安银行日K线数据
rs = bs.query_history_k_data_plus("sz.000001",
"date,code,open,high,low,close,preclose,volume,amount,adjustflag",
start_date='2020-01-01', end_date='2020-12-31', frequency="d", adjustflag="2")
# 将结果转换为DataFrame
rows = []
while rs.next():
rows.append(rs.get_row_data())
data = pd.DataFrame(rows, columns=rs.fields)
# 打印数据头部
print(data.head())
# 登出系统
bs.logout()
参数说明:adjustflag为复权类型,'1'代表后复权,'2'代表前复权,'3'代表不复权。frequency可选'd'(日线)、'w'(周线)、'm'(月线)等。
获取股票实时行情与交易数据
证券宝除了历史K线,还提供实时行情快照接口query_stock_basic,可获取股票的基本信息,如证券代码、证券名称、上市日期等。但实时行情数据(如当前价格、买卖五档)不直接提供,需要结合其他数据源。不过,证券宝提供当日分钟K线数据,通过分钟线可以近似实时行情。
获取实时分钟线的示例:
rs = bs.query_history_k_data_plus("sz.000001",
"date,time,code,open,high,low,close,volume",
start_date='2020-12-01', end_date='2020-12-01', frequency="5", adjustflag="3")
frequency传入'5'表示5分钟线,'15'表示15分钟线,'30'、'60'同理。
获取期货数据
证券宝同样支持期货数据,包括商品期货和金融期货。期货代码格式为sh.或sz.加品种代码,例如螺纹钢主力合约代码为rb2010,但证券宝的期货代码需要加上市场前缀,如sh.rb2010。获取期货K线数据的方式和股票类似,只需将代码更改为期货合约代码。
示例获取螺纹钢主力合约日线数据:
rs = bs.query_history_k_data_plus("sh.rb2010",
"date,code,open,high,low,close,volume,amount",
start_date='2020-01-01', end_date='2020-12-31', frequency="d", adjustflag="3")
注意:期货数据无需复权,adjustflag设为'3'即可。
获取股票基本面数据
证券宝还提供财务数据接口,如query_profit_data、query_operation_data、query_growth_data等,用于获取盈利能力、运营能力、成长能力等财务指标。这些数据对基本面分析至关重要。
示例获取平安银行近几个季度的净资产收益率(ROE):
rs = bs.query_profit_data(code="sz.000001", year=2020, quarter=3)
while rs.next():
row = rs.get_row_data()
print(row)
该接口返回的字段包括roeAvg(净资产收益率)、npMargin(销售净利率)等。
其他实用接口与数据导出
证券宝还提供query_trade_dates获取交易日历,query_stock_industry获取行业分类,query_stock_basic获取股票列表等。这些接口在构建量化策略时非常有用。
将所有数据转换为DataFrame后,可以方便地使用pandas进行数据处理,并可导出为CSV文件供Excel或其他软件使用。例如:
data.to_csv('stock_data.csv', index=False)
结合量化交易的实际应用
证券宝API常用于量化交易的回测和实时信号生成。通过历史数据计算技术指标,如均线、MACD等,然后根据指标信号进行买卖。利用实时分钟数据可以构建高频交易策略。需要注意的是,证券宝的数据有延迟,不适用于超短线交易。
以下是一个简单均线策略的示例,使用证券宝获取数据并计算金叉死叉:
# 获取日线数据
data = get_stock_data('sz.000001', start_date='2020-01-01', end_date='2020-12-31')
data['ma5'] = data['close'].rolling(window=5).mean()
data['ma20'] = data['close'].rolling(window=20).mean()
# 生成信号
data['signal'] = 0
data.loc[data['ma5'] > data['ma20'], 'signal'] = 1 # 金叉买入
data.loc[data['ma5'] < data['ma20'], 'signal'] = -1 # 死叉卖出
# 计算收益
data['position'] = data['signal'].shift(1)
data['return'] = data['close'].pct_change() * data['position']
注意事项与常见问题
使用证券宝API时,需要注意接口调用频率限制,避免频繁请求导致IP被封。证券宝免费版每天有数据流量限制,建议控制请求次数。登录时使用的账号和密码需要妥善保管,不要泄露。
常见问题包括:登录失败(检查网络)、查询无数据(确认股票代码格式正确,例如上海股票代码前缀为sh.,深圳为sz.)、日期格式错误(应为YYYY-MM-DD)等。
证券宝的API文档提供了详细的接口说明,可参考官方文档进行更多功能的开发。
声明
转载声明:欢迎分享本文,转载请注明出处!
点击复制: