PythonStock(36)股票系统:解决历史数据问题,使用 ak.stock_zh_a_hist 获得历史相关数据,发现AK又更新到了v1.1.1版本,更新获得历史数据代码。
Posted freewebsys
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PythonStock(36)股票系统:解决历史数据问题,使用 ak.stock_zh_a_hist 获得历史相关数据,发现AK又更新到了v1.1.1版本,更新获得历史数据代码。相关的知识,希望对你有一定的参考价值。
前言
使用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
以上是关于PythonStock(36)股票系统:解决历史数据问题,使用 ak.stock_zh_a_hist 获得历史相关数据,发现AK又更新到了v1.1.1版本,更新获得历史数据代码。的主要内容,如果未能解决你的问题,请参考以下文章
PythonStock(38)全栈股票系统:Python全栈股票系统,使用vue进行前端界面开发,修改接口可以展示股票数据,持续开发中。
PythonStock(26)股票系统:股票系统视频说明,开始陆续的制作视频了,这样更家形象生动的讲解股票系统。陆续制作视频,把这个股票系统持续做下去。重点是数据的分析能力
PythonStock(37)股票系统:Python股票系统发布V2.0版本,改个名字吧,叫Python全栈股票系统2.0,可以实现数据的抓取(akshare),统计分析,数据报表展示。
PythonStock(37)股票系统:Python股票系统发布V2.0版本,改个名字吧,叫Python全栈股票系统2.0,可以实现数据的抓取(akshare),统计分析,数据报表展示。
PythonStock(39)全栈股票系统:Python全栈股票系统,使用table表格实现动态字段方案,动态显示表格中数据。减少页面开发,通过配置展示股票数据。
PythonStock(39)全栈股票系统:Python全栈股票系统,使用table表格实现动态字段方案,动态显示表格中数据。减少页面开发,通过配置展示股票数据。