Rで株価データの取得のメモ
quantmodは素晴らしい!!
DOW
DowはYahoo.comから取得します。srcに”yahoo”をセット
library(quantmod) # DOW dow<-new.env() dow.name<-getSymbols("DOW",env=dow,src="yahoo", from='2016-01-01',to='2016-06-30') dow.prices<-dow[[dow.name]] names(dow.prices)<-c("Open","High","Low","Close","Volume","Adjusted")
デフォルトの名前では使いづらいので、必要なデータを別のデータフレームに入れて名前をつけます。
> dow.prices["2016-02-01::2016-03-01"] Open High Low Close Volume Adjusted 2016-02-01 41.58 42.77 41.22 42.58 8717200 41.44578 2016-02-02 44.14 45.18 42.82 45.03 16411000 43.83052 2016-02-03 45.73 47.05 45.70 46.74 16750300 45.49497 2016-02-04 46.93 47.64 46.73 47.39 13177300 46.12765 2016-02-05 47.48 47.50 46.41 46.69 8030600 45.44630 2016-02-08 46.46 46.94 45.20 46.23 13511300 44.99855 2016-02-09 45.71 47.20 45.71 46.60 8201200 45.35870 ..
取得するデータはxts型ですので扱いやすいです
日本株
日本株はsrcにyahoojとYahooJapanを指定するだけです
jpn<-new.env() jpn.name<-getSymbols("6758",env=jpn,src="yahooj", from='2016-01-01',to='2016-06-30') jpn.prices<-jpn[[jpn.name]] names(jpn.prices)<-c("Open","High","Low","Close","Volume","Adjusted")
> jpn.prices["2016-02-01::2016-03-01"] Open High Low Close Volume Adjusted 2016-02-01 2923.0 2924.0 2700.0 2836.0 32250000 2836.0 2016-02-02 2779.0 2812.0 2662.0 2692.5 18567800 2692.5 2016-02-03 2626.0 2654.5 2610.0 2623.5 15916000 2623.5 2016-02-04 2600.0 2657.0 2600.0 2620.5 10369200 2620.5 2016-02-05 2592.0 2638.5 2580.5 2615.0 8591500 2615.0 2016-02-08 2560.0 2592.0 2515.0 2569.0 10796100 2569.0 2016-02-09 2424.0 2444.0 2356.5 2388.5 13666800 2388.5
追記 19.06.18
上記のやり方ではどうやらエラーが出るようになりました。
> names(jpn.prices)<-c("Open","High","Low","Close","Volume","Adj") names(jpn.prices) <- c("Open", "High", "Low", "Close", "Volume", でエラー: NULL に対して属性を設定しようとしました
取得方法がどうやら変わったのでしょうか?
下記のやり方でとれるようです
> library(quantmod) > env<-getSymbols("9434.T", src="yahooj", from="2018-12-19",auto.assign=F) > jpn<-as.data.frame(env) > names(jpn)<-c("Open","High","Low","Close","Volume","Adjusted") > head(jpn) Open High Low Close Volume Adjusted 2018-12-19 1463 1464 1282 1282 271497800 1282 2018-12-20 1183 1310 1176 1296 106361400 1296 2018-12-21 1279 1375 1275 1316 65040600 1316 2018-12-25 1307 1320 1240 1271 36914400 1271 2018-12-26 1300 1315 1288 1304 12116500 1304 2018-12-27 1350 1356 1325 1354 19368800 1354