采用JQdata统计各行业踩上10日均线比例

import jqdatasdk
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

SW_ZY_num= [801010, 801020, 801030, 801040, 801050, 801080, 801110, 801120,
       801130, 801140, 801150, 801160, 801170, 801180, 801200, 801210,
       801230, 801710, 801720, 801730, 801740, 801750, 801760, 801770,
       801780, 801790, 801880, 801890]

SW_CN=['农林牧渔I', '采掘I', '化工I', '钢铁I', '有色金属I', '电子I', '家用电器I', '食品饮料I',
        '纺织服装I', '轻工制造I', '医药生物I', '公用事业I', '交通运输I', '房地产I', '商业贸易I',
       '休闲服务I', '综合I', '建筑材料I', '建筑装饰I', '电气设备I', '国防军工I', '计算机I', '传媒I',
       '通信I', '银行I', '非银金融I', '汽车I', '机械设备I']       
#转换成字符串   
SW_ZY=[str(i) for i in SW_ZY_num]
#dataframe(data,行,列)
df=pd.DataFrame(SW_CN,index=SW_ZY,columns=['行业分类'])
plt.style.use("ggplot")

list_ma_more=[]
list_ma_less=[]
for i in SW_ZY:
    #获取行业成分股 list'
    list_i=jqdatasdk.get_industry_stocks(i,date='2017-12-26')
    #print list_i
    #tempma=0
    a,b,c=0,0,0
    for j in list_i:
        #df['MA10_rolling'] = pd.rolling_mean(df['close'],10)
        #close = [float(x) for x in df['close']]
        #返回的是pandas.DataFrame
        stock=j
        security_data = jqdatasdk.get_price(stock,end_date='2018-12-26',frequency='daily',fields=['close'],fq='pre',skip_paused=True,count=20)
        #DataFrame的某一列
        
        stock_ma=security_data['close'].rolling(window=10).mean()
        #print stock
        #print stock_ma
        #break
        stock_ma_current=stock_ma[-1]
        current=security_data['close'][-1]
        if(current>=stock_ma_current):
            a=a+1
        else: 
            b=b+1
    list_ma_more.append(a/float(len(list_i)))
    list_ma_less.append(b/float(len(list_i)))#Python2.x 里,整数除整数,只能得出整数。如果要得到小数部分,把其中一个数改成浮点数即可。
print list_ma_more
print list_ma_less
df['bili']=pd.Series(list_ma_more,index=df.index)
df['less']=pd.Series(list_ma_less,index=df.index)
df.index=df['行业分类']
#df=df.sort('bili',ascending=False)
se=df['bili']
se1=df['less']
print se
print se1
fig=plt.figure(figsize=(20,10))#设置图框大小尺寸
ax1=fig.add_subplot(221)#把画布分成2行2列,左到右从上到下的第1块
ax1.set_ylim([0,1]) #设置y轴的上下线
x=np.linspace(0,30,30)#均匀生成介于0到30之间的30个值
y=[0.5]*30
ax1.plot(x,y,color='green',alpha=0.3) #画0.5的平均线
#ax1.set_title('各行业成分股高于5日均线占比')
se.plot(ax=ax1,kind='bar',color='red',alpha=0.7,grid=True,width=0.8) #alpha指透明度
se1.plot(ax=ax1,kind='bar',color='blue',alpha=0.7,grid=True,width=0.8)
plt.show()

上图中,各行业从0轴开始,红色表示该行业的成分股中踩上10日均线的百分比,蓝色表示该行业的成分股中位踩上10日均线的股票比例,从上图看来,2018年12月26号,只有通信行业的股票站上均线的比例大于50%

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值