目录
背景
准备进行股票的量化分析,苦于没有日交易数据,找了好多方法,最终才想到用baostock下载数据。
原因主要有如下三点:
- 1 通过平安银行或者通达信软件导出的txt需要解析处理起来非常麻烦(主要还是本人下载的明细还会出现要重复行数据);
- 2 Tushare现在搞的是社区,需要花积分贡献积分,本人没钱,想先”白嫖“一段时间锻炼一下自己,再考虑加入;
- 3 Baostock 的包简单实用,更为关键的是体系已经搭建完了,直接用就行。
批量下载股市交易明细
流程拆解
思路:不断增加天数,调用baostock接口按天下载股市交易明细
- 天数变量通过while 循环实现,每增加一天执行一次查询
- 因为有些日期不是交易在调用baostock会出现报错,所以还要添加一个判断是否交易日,这里参考我的另外一篇文章《Baostock学习系列1:编辑函数验证某一天是否交易日check_is_trading_day()》
- 将交易日查询到交易明细通过pandas导出为csv文件本地保存
代码实现
日期循环
config_start_day = '2018-09-27' # 'YYYY-MM-DD'
config_end_day = '2022-04-04' # 'YYYY-MM-DD'
start_day = datetime.datetime.strptime(config_start_day, "%Y-%m-%d")
end_day = datetime.datetime.strptime(config_end_day, "%Y-%m-%d")
# print(check_is_trading_day(start_day.strftime('%Y-%m-%d')))
while (int( time.mktime(start_day.timetuple())) <= int( time.mktime(end_day.timetuple()))) :
start_day = time_offset_cal(start_day, 1, 'day') # 这里利用自定义函数实现日期加1天
print(datetime.datetime.strftime(start_day , "%Y-%m-%d"))
time_offset_cal()自定义函数
输入参有两个:
- input_time:输入数据类型为: datetime.datetime
- offset: 输入为时间偏移量可正、可负,正为在原时间上加,负为在原时间上减
- time_type: 输入类型为时间偏移量的单位(year、week、 month、 day、 hour、minute、 second、microsecond、 millisecond)
def