企业微信

证券宝股票数据API接口的获取与认证

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

登录代码如下:

证券宝股票数据API接口怎么用


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_dataquery_operation_dataquery_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文档提供了详细的接口说明,可参考官方文档进行更多功能的开发。