R語言金融:用quantmod快速畫K棒和回測
前言
今天透過R裡面的quantmod套件簡單畫出你要的K線圖、指標和策略的回測。
將學習到
- 用
quantmod
的搜尋股票 - 用
quantmod
的繪製K線及插入指標 - 用
quantmod
策略回測
環境設定
RStudio
使用套件
quantmod
開始工作
步驟1:安裝R和套件
quantmod
選擇自己使用的電腦環境做安裝即可,建議不要更改路徑以免日後忘記。
基本上R是個open source所以是免費的,因為是免費的所以很受歡迎也有不少人開發了有趣的免費套件供大家使用。
從上方工具列的Tools>Install Package打開如上圖,在Package輸入quantmod
,按右下角的Install即可。
或是輸入install.packages(“quantmod”)
也可以。
如果有要選擇地區則選Taiwan(Taipei)。
步驟2:繪製K線圖以及均線圖
#匯入quantmod
library(quantmod)#取得股價資訊
getSymbols('AAPL')#印出資訊其中包含open、high、low、close、volume、adjusted
AAPL
#繪製K線
chartSeries(AAPL[“2020–01::2020–06”],theme=”white”)
getSymbols('AAPL')
是默認從 yahoo finance取得Apple(‘AAPL’)的股價資訊。
如果要台積電可以用getSymbols(‘2330.TW’)。
chartSeries(AAPL[“2020–01::2020–06”],theme=”white”)
畫出AAPL的K線從2020年–01月到2020年–06月,背景為白色。
ma_20<-runMean(AAPL[,4],n=20)#20日均線(20ma)ma_60<-runMean(AAPL[,4],n=60)#60日均線(60ma)addTA(ma_20,on=1,col=”blue”)#畫出20日均線且為藍色線addTA(ma_60,on=1,col=”red”)#畫出60日均線且為紅色線
步驟3:策略回測:當20ma大於60ma時做多;當20ma小於60ma時做空
#當ma20>ma60時,則為1否則為0
position<-Lag(ifelse(ma_20>ma_60, 1,0))#ROC計算:log(今天收盤價/昨天收盤價),乘上poistion代表。若1則持有,若0則空手。
return<-ROC(Cl(AAPL))*position#策略條件是60ma>20ma之後才會交易
return<-return[‘2010–01–01/2020–06-30’]#cumsum計算累計值,exp函數是要計算累計損益
return<-exp(cumsum(return))#畫出損益圖
plot(return)
position為一個時間序列,以日為單位,如果20ma大於60ma,設值為1;否則設值為0。由於我們是日資料,訊號發生時只能隔天做交易,故將這向量全部往後遞延一天。
ROC計算:log(今天收盤價/昨天收盤價),乘上poistion代表。若1則持有,若0則空手。
我們策略條件是60ma>20ma之後才會交易,統計值從2010–01–01開始到2020-06–31的資料。
cumsum計算累計值,即將每一分量之前的值累加起來。取exp函數是要計算累計損亦。(這裡運用數學:log(a)+log(b)=log(ab),exp(log(ab))=ab)。
完整程式碼
小結
這次使用R語言的quantmod
做股價的繪圖和回測,如果你對於以上的內容有建議歡迎提出,一起討論絕對是成長的捷徑!!