zoukankan      html  css  js  c++  java
  • 滑动平均线的notebook画法

    滑动平均线,本程序解决了如何在matplotlib中使用中文显示,环境python2.7 最好使用 anaconda 环境
    使用sns似使得图片更加美观,不多说,上代码

    import tushare as ts
    import pandas as pd
    import matplotlib.pyplot as plt
    from matplotlib import rc
    rc('mathtext', default='regular')
    from matplotlib import dates
    import matplotlib as mpl
    import seaborn as sns
    sns.set_style('dark')
    
    %matplotlib inline
    font =mpl.font_manager.FontProperties(fname=r"c:windowsfontssimsun.ttc",size=14)
    
    stock_data = ts.get_k_data("600600")
    # 将数据按照交易日期从远到近排序
    stock_data.sort_values('date', inplace=True)
    
    # ========== 计算移动平均线
    
    # 分别计算5日、20日、60日的移动平均线
    # 计算简单算术移动平均线MA - 注意:stock_data['close']为股票每天的收盘价
    ma_list = [5, 10, 20, 60]
    for ma in ma_list:
        stock_data['ma' + str(ma)] = stock_data.close.rolling(window=ma, center=False).mean()
    
    # 计算指数平滑移动平均线EMA
    for ma in ma_list:
        stock_data['ema' + str(ma)] = stock_data.close.ewm(ignore_na=False,span=ma,min_periods=0,adjust=True).mean()
    
    bar_data = stock_data[['date','volume','close','ma5','ma10','ma20','ma60','ema5','ema10','ema20','ema60']]
    bar_data = bar_data[60:60+340]
    bar_data.index = range(len(bar_data))
    
    fig = plt.figure(figsize=(14,10))
    fig.set_tight_layout(True)
    ax1 = fig.add_subplot(211)
    ax1.bar(bar_data.index, bar_data.volume, align='center', width=0.4)
    ax2 = ax1.twinx()
    ax2.plot(bar_data.index, bar_data.close, '-', color='r')
    ax2.plot(bar_data.index, bar_data.ma5, '-', color='w')
    ax2.plot(bar_data.index, bar_data.ma10, '-', color='y')
    ax2.plot(bar_data.index, bar_data.ma20, '-', color='m')
    ax2.plot(bar_data.index, bar_data.ma60, '-', color='g')
    ax1.set_ylabel(u"成交量(万)",fontproperties=font, fontsize=16)
    ax2.set_ylabel(u"均线 ",fontproperties=font, fontsize=16)
    ax1.set_title(u"蓝色柱子(左轴)为成交量,曲线为均线",fontproperties=font,fontsize=16)
    # plt.xticks(bar_data.index.values, bar_data.barNo.values)
    ax1.set_xlabel(u"平均线",fontproperties=font, fontsize=16)
    ax1.set_xlim(left=-1, right=len(bar_data))
    ax2.set_ylim(bottom=-0.5*max(bar_data.close))
    ax1.grid()
    
    ax1 = fig.add_subplot(212)
    ax1.bar(bar_data.index, bar_data.volume, align='center', width=0.4)
    ax2 = ax1.twinx()
    ax2.plot(bar_data.index, bar_data.ema5, '--', color='w')
    ax2.plot(bar_data.index, bar_data.ema10, '--', color='y')
    ax2.plot(bar_data.index, bar_data.ema20, '--', color='m')
    ax2.plot(bar_data.index, bar_data.ema60, '--', color='g')
    ax1.set_ylabel(u"成交量(万)",fontproperties=font, fontsize=16)
    ax2.set_ylabel(u"滑动平均线",fontproperties=font, fontsize=16)
    ax1.set_title(u"蓝色柱子(左轴)为成交量,曲线为滑动平均线",fontproperties=font, fontsize=16)
    # plt.xticks(bar_data.index.values, bar_data.barNo.values)
    ax1.set_xlabel(u"滑动平均线",fontproperties=font,fontsize=16)
    ax1.set_xlim(left=-1,right=len(bar_data))
    # ax2.set_ylim(bottom=-0.5*max(bar_data.smartS))
    ax1.grid()

    运行结果如下


    结果图



    作者:readilen
    链接:http://www.jianshu.com/p/2050d6c54d59
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 相关阅读:
    批量修改文件的编码格式至UTF-8
    springboot搭建
    Redit集群搭建-Sentinel模式搭建
    Java并发编程:深入剖析ThreadLocal
    Hibernate常见问题 No row with the given identifier exists问题的解决办法及解决
    vector删除元素与清除内存空洞
    BZOJ 1003 [ZJOI2006]物流运输trans SPFA+DP
    Mybatis+Oracle批处理
    【日常学习】【线性DP】codevs1044 拦截导弹题解
    hdu5353 Average
  • 原文地址:https://www.cnblogs.com/zhanglong8681/p/7569214.html
Copyright © 2011-2022 走看看