前两天,作者尝试用easyquatation去获取板块日线,尝试了一波发现其dayline模块对上证、深证板块数据并没支持,所以只能收盘之后获取当日数据,这就比较比较尬了,所以easyquatation比较适合获取分时股票价格。准备放弃的时候有网友提示用akshare,我大概查了一下发现这个akshare是真的好用,但是akshare提供的板块分类并没有easyquatation那么细致,所以这块可能是一个问题点。先不管这么多了。我们先看看如何使用akshare获取板块日线数据吧,当然akshare还提供了板块分时,板块成分股等等接口,这块我们采用akshare提供的东方财富网站的板块数据。
import json
import os
import akshare as ak
class Industry:
# 板块文件地址
BANKUAN_CODE_PATH = os.path.join(os.path.dirname(__file__), "Industry_name.conf")
# 更新板块code
def update_bankuan(self):
result=ak.stock_board_industry_name_em()
IndustryNames=[]
for index, row in result.iterrows():
IndustryNames.append(row['板块名称'])
with open(self.BANKUAN_CODE_PATH, "w") as f:
f.write(json.dumps(dict(stock=IndustryNames)))
return IndustryNames
# 加载板块代码文件
def get_bankuan_names(self,realtime=False):
if realtime:
return self.update_bankuan()
with open(self.BANKUAN_CODE_PATH) as f:
return json.load(f)["stock"]
def get_bankuan_day_line(self,name):
# 兼容zMain数据格式
result=ak.stock_board_industry_hist_em(symbol=name,adjust="")
result = result.rename(columns={'日期': 'date', '开盘': 'open', '收盘': 'close', '最高': 'high', '最低': 'low', '成交量': 'volume',
'成交额': 'amount', '换手率': 'ture'})
return result
# test
result=Industry().get_bankuan_names()
print(result)
for item in result:
df=Industry().get_bankuan_day_line(item)
print(df)
break
本来想着今晚将板块数据导入到策略中,但是这屋子的wifi是真的差,加载网页都慢的很呐,所以这块作者明后两天可能会将板块的功能添加到我们的zMain网站上,届时再给大家提供一个新的板块参考指标。当然也希望作者的探索能给后来的同学一些帮助,比如少走一下弯路。
这里贴一下开源地址,希望对大家有帮助:
https://github.com/tianjingle/zMain
https://github.com/tianjingle/sMain