大家好,上次讲到了如何从tushare读取交易数据并写入到mysql数据库,今天讲解两个案例,简单的条件选股以及对交易数据可视化。
第一个案例简单查询股价涨幅和跌幅并可视化。
第二个案例结合选股策略(不要ST股、动态市盈率大于0、流通市值小于10亿)对数据进行查询和提取。
话不多说,直接上代码。
案例一:
#先引入后面分析、可视化等可能用到的库import tushare as tsimport pandas as pdimport numpy as npfrom sqlalchemy import create_engine#连接数据库engine = create_engine('mysql+pymysql://root:123456@localhost/tushare_db')#设置token(大家去tushare上免费注册就可以获取了)#tushare的注册地址 https://tushare.pro/register?reg=232583token='f7886c15001489a3e784a9e9ede719967a6f745e785ab39a9c10f6a5'pro = ts.pro_api(token)
#接下来说下如何读取数据库的数据和可视化#构建数据查询和可视化函数:def plot_data(condition,title): #导入pyecharts绘图模块,案例使用的是V1版本。 from pyecharts.charts import Bar from pyecharts import options as opts #查询语句 data=pd.read_sql("select * from stock_data where+"+ condition,engine) #使用pandas.groupby分组计数生成Series格式 count_=data.groupby('trade_date')['ts_code'].count() #索引日期列转换成列表 attr=count_.index.tolist() #数值转换成列表 v1=count_.values.tolist() #添加柱状图 bar=Bar() bar.add_xaxis(attr) bar.add_yaxis("",v1) bar.set_global_opts(title_opts=opts.TitleOpts(title=title)) #render()把图形生成一个.html文件 return bar.render()#查询股价低于2元个股数据分布c1="close<2"t1="股价低于2元个股时间分布"plot_data(c1,t1)
![f8bcd469275732d5846e2114ec5a7f5d.png](https://img-blog.csdnimg.cn/img_convert/f8bcd469275732d5846e2114ec5a7f5d.png)
股价低于2元个股时间分布
#查询股价日涨幅超过9.5%个股数据分布:c2="pct_chg>9.5"t2="股价涨幅超过9.5%个股时间分布"plot_data(c2,t2)
![9bd1a276c1b5de896f63d8d842dae4e8.png](https://img-blog.csdnimg.cn/img_convert/9bd1a276c1b5de896f63d8d842dae4e8.png)
股价涨幅超过9.5%个股时间分布
#查询股价日跌幅超过-9.5%个股数据分布:c3="pct_chg
![24c33569c56c8775a907a9d1345f4ae1.png](https://img-blog.csdnimg.cn/img_convert/24c33569c56c8775a907a9d1345f4ae1.png)
股价跌幅超过9.5%个股时间分布
案例二:
#通过tushare的两个API接口调用def get_new_code(date): #stock_basic 获取当前所有交易股票代码 df0 =pro.stock_basic(exchange='', list_status='L') #daily_basic 获取每日指标,这个需要300积分才可以调取 df1 =pro.daily_basic(trade_date=date) #merge合并df0和df1的查询结果 df=pd.merge(df0,df1,on='ts_code') #剔除2018年以后上市的新股次新股 df=df[df['list_date'].apply(int).values<20180101] #剔除st股 df=df[-df['name'].apply(lambda x:x.startswith('*ST'))] #剔除动态市盈率为负的 df=df[df.pe_ttm>0] #剔除大市值股票,只要流通市值小于10亿 df=df[df.circ_mv<10**5] codes=df.ts_code.values return codesprint(get_new_code('20200310'))
![79a384f3e92f4f866aab939ff7b92cd0.png](https://img-blog.csdnimg.cn/img_convert/79a384f3e92f4f866aab939ff7b92cd0.png)
结果
好了,今天两个案例就讲到这里,欢迎大家关注。
下次给大家讲解简单的均线的交易策略。
希望能和大家一起每天进步一点点。