最后
🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。
🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。
🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。
🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
1.3. 获取Tushare
不管你是量化投资分析师,还是正在学习Python进行数据分析的学习者,这种方法获取的数据都可以适用。
获取前的准备:
pip install tushare
2. 获取数据
我为了更方便的使用Tushare接口API,也为了兼容新、旧版本,设计类整合新版本。
2.1. 获取历史行情数据
#获取历史日线数据
def get_his_dat(self,start_date,end_date):
#新pro接口,可以多个股票
if self.pro:
self.his_dat = self.stock.daily(ts_code= self.code, start_date=start_date, end_date=end_date)
else:
#旧接口,不用注册
self.his_dat = ts.get_hist_data(code=self.code,start=start_date, end=end_date)
#把索引赋值给trade_date
#self.his_dat['trade_date'] = self.his_dat.index
self.his_dat = self.his_dat.reset_index()
self.setCodebyOld()
self.his_dat['ts_code'] = self.code
#参照pro接口,修改列名
self.his_dat = self.his_dat.rename(columns={
'date':'trade_date','volume':'vol','price_change':'change','p_change':'pct_chg'})
#筛选列
self.his_dat = self.his_dat[self.columns] #.reset_index()
return self.his_dat
本接口只能获取近3年的日线数据,适合搭配均线数据进行选股和分析。
输入参数说明:
|股票代码|开始日期|结束日期|数据类型|
老版本关键字 | 新版本关键字(pro) | 说明 |
---|---|---|
code | ts_code | 股票代码 |
trade_date | 交易日期 | |
start | start_date | 开始日期,格式YYYY-MM-DD/新版本YYYYMMDD |
end | end_date | 结束日期,格式YYYY-MM-DD/新版本YYYYMMDD |
ktype | 数据类型 | |
retry_count | 当网络异常后重试次数,默认为3 | |
pause | 重试时停顿秒数,默认为0 |
老版本中:
1.股票代码,即6位数字代码,或者指数代码(sh=上证指数 sz=深圳成指 hs300=沪深300指数 sz50=上证50 zxb=中小板 cyb=创业板)
2.数据类型,D=日k线 W=周 M=月 5=5分钟 15=15分钟 30=30分钟 60=60分钟,默认为D
返回值说明:
老版本关键字 | 新版本关键字(pro) | 说明 |
---|---|---|
ts_code | 股票代码 | |
date | trade_date | 交易日期 |
open | open | 开盘价 |
high | high | 最高价 |
close | close | 收盘价 |
pre_close | 昨收盘价 | |
low | low | 最低价 |
volume | vol | 成交量 |
price_change | change | 价格变动、涨跌额 |
p_change | pct_chg | 涨跌幅 |
ma5 | 5日均价 | |
ma10 | 10日均价 | |
ma20 | 20日均价 | |
v_ma5 | 5日均量 | |
v_ma10 | 10日均量 | |
v_ma20 | 20日均量 | |
turnover | 换手率[注:指数无此项] | |
amount | 成交额 |
老版本中date为index,不是具体column。
2.2. 获取历史行情数据——指数
上证指数、深圳成指、沪深300指数、上证50 、中小板、创业板等。
上证指数代码为“000001.SH”,老版本代码为“sh”;深成指数代码为“399001.SZ”,老版本为“399001”或“sz”。
#获取沪深指数
def get_hs_index(self,start_date,end_date):
if self.pro:
self.hs_index = ts.pro_bar(ts_code= self.code, asset='I', start_date=start_date, end_date=end_date)
else:
#旧接口,不用注册
index_code={
'000001.SH':'sh','399001.SZ':'399001','000300.SH':'000016.SH','sz50':'sz50','399005.SZ':'zxb','399006.SZ':'cyb'}
self.his_dat = ts.get_hist_data(code=index_code[self.code],start=start_date, end=end_date)
#把索引赋值给trade_date
#self.his_dat['trade_date'] = self.his_dat.index
self.his_dat = self.his_dat.reset_index()
self.his_dat['ts_code'] = self.code
#参照pro接口,修改列名
self.his_dat = self.his_dat.rename(columns={
'date':'trade_date','volume':'vol','price_change':'change','p_change':'pct_chg'})
#筛选列
self.his_dat = self.his_dat[self.columns] #.reset_index()
return self.hs_index
2.3. 获取历史行情数据——情绪指数
目前pro版本国外已经支持如下指数数据(数据来源:https://tushare.pro/):
TS指数代码 | 指数名称 |
---|---|
XIN9 | 富时中国A50指数 (富时A50) |
HSI | 恒生指数 |
DJI | 道琼斯工业指数 |
SPX | 标普500指数 |
IXIC | 纳斯达克指数 |
FTSE | 富时100指数 |
FCHI | 法国CAC40指数 |
GDAXI | 德国DAX指数 |
N225 | 日经225指数 |
KS11 | 韩国综合指数 |
AS51 | 澳大利亚标普200指数 |
SENSEX | 印度孟买SENSEX指数 |
IBOVESPA | 巴西IBOVESPA指数 |
RTS | 俄罗斯RTS指数 |
TWII | 台湾加权指数 |
CKLSE | 马来西亚指数 |
SPTSX | 加拿大S&P/TSX指数 |
CSX5P | STOXX欧洲50指数 |
使用方法:
#美股指数
def get_us_index(self,start_date,end_date):
if self.pro:
self.us_index = self.stock.index_global(ts_code= self.us_code, start_date=start_date, end_date=end_date)
self.us_index = self.us_index[self.columns]
return self.us_index
2.4. 获取分时数据
升级pro版本,可以获取3年的数据,而老版本 只能获取1个月的分时数据。
#获取分钟级别数据
def get_tickshare_dat(self,freq,start_date, end_date):
if self.pro:
start_date=re.sub('\D','',start_date)
end_date = re.sub('\D','',end_date)
freq = freq + 'min'
self.tickshare_dat = ts.pro_bar(ts_code=self.code, freq = freq,start_date=start_date, end_date=end_date)
self.tickshare_dat['vol'] = self.tickshare_dat['vol'] /100
else:
# ktype:数据类型,D=日k线 W=周 M=月 5=5分钟 15=15分钟 30=30分钟 60=60分钟,默认为D
self.tickshare_dat = ts.get_hist_data(code=self.code, ktype = freq,start=start_date, end=end_date)
self.tickshare_dat['ts_code'] = self.code
self.tickshare_dat = self.tickshare_dat.reset_index()
self.tickshare_dat = self.tickshare_dat.rename(columns={
'date':'trade_time','volume':'vol'})
self.tickshare_dat['trade_date'] = self.tickshare_dat['trade_time'].apply(lambda x:re.sub('\D','',x[0:10]))
self.setCodebyOld()
self.tickshare_dat['ts_code'] = self.code
self.tickshare_dat = self.tickshare_dat[['ts_code','trade_time','open','high','close','low','vol','trade_date']]
return self.tickshare_dat
注:输入freq为字符型数字,1/5/15/30/60
2.5. 获取股票基本信息
#获取股票基本面信息
def get_ShareInfo(self,trade_date):
if self.pro:
self.shareInfo = self.stock.daily_basic(ts_code=self.code, trade_date=trade_date) #, fields='ts_code,trade_date,turnover_rate,volume_ratio,pe,pb')
else:
self.shareInfo = ts.get_stock_basics()
print(self.shareInfo)
2.6. 获取复权数据
# 获取复权数据
def get_h_dat(self,start_date,end_date,fq='hfq'):
#self.h_dat = ts.get_h_data(code=self.code, autype='hfq',start=start_date, end=end_date)
self.h_dat = ts.pro_bar(ts_code=self.code, adj=fq, start_date=start_date, end_date=end_date)
return self.h_dat
3. 数据存储在本地Mongo数据库中
class Stock_Collection(object):
def __init__(self,db_name):
self.db_name = db_name
client = pymongo.MongoClient('mongodb://stock:stock@localhost:27017/stock')
self.db = client[self.db_name]
def insertdatas(self,name,datas):
collection = self.db[name]
collection.insert(json.loads(datas.T.to_json()).values())
def getDistinctCode(self,name):
collection = self.db[name]
code = collection.distinct('ts_code')
做了那么多年开发,自学了很多门编程语言,我很明白学习资源对于学一门新语言的重要性,这些年也收藏了不少的Python干货,对我来说这些东西确实已经用不到了,但对于准备自学Python的人来说,或许它就是一个宝藏,可以给你省去很多的时间和精力。
别在网上瞎学了,我最近也做了一些资源的更新,只要你是我的粉丝,这期福利你都可拿走。
我先来介绍一下这些东西怎么用,文末抱走。
* * *
**(1)Python所有方向的学习路线(新版)**
这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
最近我才对这些路线做了一下新的更新,知识体系更全面了。
![在这里插入图片描述](https://img-blog.csdnimg.cn/8fc093dcfa1f476694c574db1242c05b.png)
**(2)Python学习视频**
包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。
![在这里插入图片描述](https://img-blog.csdnimg.cn/d66e3ad5592f4cdcb197de0dc0438ec5.png#pic_center)
**(3)100多个练手项目**
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。
![在这里插入图片描述](https://img-blog.csdnimg.cn/f5aeb4050ab547cf90b1a028d1aacb1d.png#pic_center)
**(4)200多本电子书**
这些年我也收藏了很多电子书,大概200多本,有时候带实体书不方便的话,我就会去打开电子书看看,书籍可不一定比视频教程差,尤其是权威的技术书籍。
基本上主流的和经典的都有,这里我就不放图了,版权问题,个人看看是没有问题的。
**(5)Python知识点汇总**
知识点汇总有点像学习路线,但与学习路线不同的点就在于,知识点汇总更为细致,里面包含了对具体知识点的简单说明,而我们的学习路线则更为抽象和简单,只是为了方便大家只是某个领域你应该学习哪些技术栈。
![在这里插入图片描述](https://img-blog.csdnimg.cn/c741a91b05a542ba9dc8abf2f2f4b1af.png)
**(6)其他资料**
还有其他的一些东西,比如说我自己出的Python入门图文类教程,没有电脑的时候用手机也可以学习知识,学会了理论之后再去敲代码实践验证,还有Python中文版的库资料、MySQL和HTML标签大全等等,这些都是可以送给粉丝们的东西。
![在这里插入图片描述](https://img-blog.csdnimg.cn/9fa77af248b84885a6ec779b2ead064d.png)
**这些都不是什么非常值钱的东西,但对于没有资源或者资源不是很好的学习者来说确实很不错,你要是用得到的话都可以直接抱走,关注过我的人都知道,这些都是可以拿到的。**
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618317507)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**