PythonStock(36)股票系统:解决历史数据问题,使用 ak.stock_zh_a_hist 获得历史相关数据,发现AK又更新到了v1.1.1版本,更新获得历史数据代码。
目录前言1,关于历史数据接口问题2,使用help 查看函数3,总结前言使用Python开发一个web股票项目。【github项目地址】:https://github.com/pythonstock/stock【知乎专栏地址】:https://zhuanlan.zhihu.com/pythonstock【docker hub地址下载】:https://hub.docker.com/r/pythons
前言
使用Python开发一个web股票项目。
【github项目地址】:
https://github.com/pythonstock/stock
【知乎专栏地址】:
https://zhuanlan.zhihu.com/pythonstock
【docker hub地址下载】:
https://hub.docker.com/r/pythonstock/pythonstock
【相关stock资料分类】:
http://blog.csdn.net/freewebsys/article/category/7076584
主要使用开发语言是python。
使用的lib库是pandas,tushare,TensorFlow,tornado等。
本文的原文连接是: https://blog.csdn.net/freewebsys/article/details/108191889
1,关于历史数据接口问题
因为要迁移 tushare 到 akShare 涉及到的函数都需要修改下,
历史数据的获得使用 stock_zh_a_hist 因 ak 更新频繁,所以最新的代码参数使用 help 来解决问题。
2,使用help 查看函数
import akshare as ak
>>> help(ak.stock_zh_a_hist)
Help on function stock_zh_a_hist in module akshare.stock_feature.stock_em_hist:
stock_zh_a_hist(symbol: str = '000001', start_date: str = '19700101', end_date: str = '22220101', adjust: str = '') -> pandas.core.frame.DataFrame
东方财富网-行情首页-上证 A 股-每日行情
http://quote.eastmoney.com/concept/sh603777.html?from=classic
:param symbol: 股票代码
:type symbol: str
:param start_date: 开始日期
:type start_date: str
:param end_date: 结束日期
:type end_date: str
:param adjust: choice of {"qfq": "1", "hfq": "2", "": "不复权"}
:type adjust: str
:return: 每日行情
:rtype: pandas.DataFrame
因为在代码调用的过程中,发现稳定中有 period: str = ‘daily’ 参数,可能是版本没有更新造成的。我这里报参数错误。默认是按照日期维度查询的。问题不大。
历史数据的计算每天往回计算 3 个月的数据。
# 增加读取股票缓存方法。加快处理速度。
def get_hist_data_cache(code, date_start, date_end):
cache_dir = bash_stock_tmp % (date_end[0:7], date_end)
# 如果没有文件夹创建一个。月文件夹和日文件夹。方便删除。
# print("cache_dir:", cache_dir)
if not os.path.exists(cache_dir):
os.makedirs(cache_dir)
cache_file = cache_dir + "%s^%s.gzip.pickle" % (date_end, code)
# 如果缓存存在就直接返回缓存数据。压缩方式。
if os.path.isfile(cache_file):
print("######### read from cache #########", cache_file)
return pd.read_pickle(cache_file, compression="gzip")
else:
print("######### get data, write cache #########", code, date_start, date_end)
stock = ak.stock_zh_a_hist(symbol= code, start_date=date_start, end_date=date_end, adjust="")
stock.columns = ['date', 'open', 'close', 'high', 'low', 'volume', 'amount', 'amplitude', 'quote_change',
'ups_downs', 'turnover']
if stock is None:
return None
stock = stock.sort_index(0) # 将数据按照日期排序下。
print(stock)
stock.to_pickle(cache_file, compression="gzip")
return stock
并且根据 code 进行相关的数据缓存,减少服务器请求次数。加快运算。
即使这样,也需要些时间20 多分钟,才可以把股票的全部数据进行缓存下。
然后在进行计算。
虽然这个函数叫上证a股数据,但是实际上啥股票历史数据都可以查询。
3,总结
差不多把相关的 tuShare的代码,都替换成了 akShare 的相关代码了。
但是akShare的数据资料接口实在是太多了,也太厉害了。这边只是找了几个基础的数据做股票运算,其他数据后续再研究。
等全部都修改好了,发布一个2.0 的版本。
本文的原文连接是:
https://blog.csdn.net/freewebsys/article/details/81665552
更多推荐
所有评论(0)