這個單元,我們要分享如何在python裡利用rolling window計算簡單移動平均線,有了這個rolling window, 不只是簡單移動平均線,我們還可以有效找到移動最大值、移動最小值以及任何你想的到的計算方式!
(一) 引入模組
這裡除了引入常用的pandas套件外,也同時引入matplotlib繪圖模組。
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
(二) 讀入資料
這裡我們用藍籌30ETF的股價為例,讀入資料後並將index設定為日期格式。
data=pd.read_csv('00690.csv',encoding='big5')
data.set_index(pd.to_datetime(data['Date'],format='%Y/%m/%d'),inplace=True)
(三)用Rolling Window計算簡單移動平均
在這裡,我們最重要的就是採用python裡面的rolling()函數,括號內代表要滾動幾個資料點的參數。要計算平均數,我們後面加mean()。
比方說,我們要計算5日移動平均:df=data.copy()
MA_5=df.rolling(5).mean()
如果說,我們想要計算滾動20日高點,則可以用:MA_20=df.rolling(20).max()
簡單來說,有了這個rolling window,我們後面可以接上任何想要計算的函式。
(四) 利用function增進效率
接下來,我們可以把這個rolling window寫成函數,方便未來替換不同的資料,以及設定不同的參數。
比方說,我們想要製作移動平均線的函數:def MA(price,days):
ma=price.rolling(days).mean()
ma.dropna(inplace=True)
return ma
寫好後,如果我們想要計算10日簡單移動平均,只要透過MA(df,10)的呼叫,就可以得到我們要的結果了!
今天,我們學會了怎麼用rolling window計算簡單移動平均,也學會如何把這個rolling window運用在其他函數如高點及低點等等。同時,我們也學會把這個方法包成函數,方便未來的使用。
程式檔案,歡迎下載Github。