baostock是个免费开源的证券数据平台,可以通过python API获取证券数据。也有一些投资者喜欢将baostock的数据下载下来进行二次开发使用,那具体要怎么操作呢?
首先我们需要先安装好baostock:
pip install baostock -i https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.tuna.tsinghua.edu.cn
安装后,在命令行运行:
python -c "import baostock as bs; bs.login()"
输出”login success!”表明安装成功。
假如我们要调取历史数据,那我们就要用到query_history_k_data_plus()函数:
获取A股历史交易数据。可以通过参数设置获取日k线、周k线、月k线,以及5分钟、15分钟、30分钟和60分钟k线数据,可查询不复权、前复权、后复权数据,适合搭配均线数据进行选股和分析。返回类型为baostock自定义的数据类型,通过get_data()函数可以获取Pandas DataFrame类型的数据。示例代码如下:
code = "sz.399994"
data_fields = "date,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,peTTM,pbMRQ, psTTM,pcfNcfTTM,isST"
start_date = "2022-05-21"
end_date = "2022-05-28"
adjustflag = "2"
kdata_df = bs.query_history_k_data_plus(code,
data_fields,
start_date=start_date,
end_date=end_date,
frequency='d',
adjustflag=adjustflag).get_data()
In [14]: kdata_df
Out[14]:
date open high low close preclose ... pctChg peTTM pbMRQ psTTM pcfNcfTTM isST
0 2022-05-23 1333.9767 1339.3266 1323.2326 1339.0444 1323.8745 ... 1.145871 0.000000 0.000000 0.000000 0.000000 0
1 2022-05-24 1338.0567 1340.5022 1270.4979 1270.4979 1339.0444 ... -5.119061 0.000000 0.000000 0.000000 0.000000 0
2 2022-05-25 1273.4179 1290.6949 1273.4179 1288.6189 1270.4979 ... 1.426291 0.000000 0.000000 0.000000 0.000000 0
3 2022-05-26 1287.7710 1306.6983 1264.3422 1299.1283 1288.6189 ... 0.815555 0.000000 0.000000 0.000000 0.000000 0
4 2022-05-27 1312.1094 1320.1226 1287.6731 1297.4858 1299.1283 ... -0.126431 0.000000 0.000000 0.000000 0.000000 0
在回测过程中,通常不希望停盘数据对回测造成干扰,可以将停盘数据删除。
if kdata_df.shape[0]:
kdata_df = kdata_df[(kdata_df['volume'] != '0') & (kdata_df['volume'] != '')]
有些人可能会觉得用BaoStock获取股票数据太麻烦了,还要自己写代码,确实,这种方法对于不太会Python的小伙伴来说并不是太友好,这种情况下可以考虑使用现成接口,不需要自己写代码,拿过来就可以使用了。