滑動平均線糠聪,本程序解決了如何在matplotlib中使用中文顯示,環(huán)境python2.7 最好使用 anaconda 環(huán)境
使用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:\windows\fonts\simsun.ttc",size=14)
stock_data = ts.get_k_data("600600")
# 將數(shù)據(jù)按照交易日期從遠(yuǎn)到近排序
stock_data.sort_values('date', inplace=True)
# ========== 計算移動平均線
# 分別計算5日、20日奸鸯、60日的移動平均線
# 計算簡單算術(shù)移動平均線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()
# 計算指數(shù)平滑移動平均線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"藍(lán)色柱子(左軸)為成交量咪笑,曲線為均線",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"藍(lán)色柱子(左軸)為成交量,曲線為滑動平均線",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()
運(yùn)行結(jié)果如下
結(jié)果圖