ページ

2015年3月29日日曜日

Rを使って株価の株価チャート出す

ちょっとRを触りだし株価のチャートが出せないか検討してのでまとめました。

株価のチャート?
ぱっと思いつくのがヒゲ? ロウソク?などです。
今回の内容でこのようなイメージができます。



とある株価の3ヶ月の推移です。
出ているのは株価、25日移動平均線、75日移動平均線
出来高などが出ています。

いろいろカスタマイズできるみたいですがまだ不明な点もあるので
現在鋭意ドキュメントを解読中

では実際に必要なデータはどのようなものかというと以下のCSVになります。
"Date","Open","High","Low","Close","Volume"
2015-01-01,220,224,219,222,68000
2015-01-02,217,218,211,211,100000
2015-01-03,212,213,208,212,44000
・
・
・
2015-03-25,212,213,208,212,44000
それぞれ、ヘッダーが
日付,初値,高値,安値,終値,出来高
を示しています。

データ自体は転がっているものをまとめて持ってきたとして
使い方をご説明します。

今回は以下の要件とします。
・ヒゲグラフを出す
・過去3ヶ月の内容を出す
・25日移動平均線を出す
・75日移動平均線を出す
・出来高をだす

上記を満たす実装を作ります。
早速ソースコード
install.packages("quantmod")
library("quantmod")
loadCsv <- "~/data.csv"

data <- read.zoo(loadCsv, header=T, sep=",")

candleChart(data, theme="white",subset="last 3 months")
addSMA(25, on = 1, with.col = Close, overlay = TRUE, col = "blue")
addSMA(75, on = 1, with.col = Close, overlay = TRUE, col = "red")

このようなコードで作成ができます。
Rの中でquantmodが実際に利用するライブラリです。

5行目のデータのロードまでは、おまじないとして割愛します。

data <- read.zoo(loadCsv, header=T, sep=",")
7行目の部分で、データを入れます。
header=T
こちらでヘッダーコードを無視(だと思う)

sep=","
セパレータの指定です。
データをロードすると後は、描画だけです。


candleChart(data, theme="white",subset="last 3 months")
こちらで、ベースとなるチャートを出します。

theme="white"
初期の色が黒背景なので、白背景に変えるのをお勧めします。(黒だと個人的には見えにく)

subset="last 3 months"
3ヶ月前を出す指示を与えます。
その他の場合は「2014::2015-01」のように記述します。
2014年から2015-01までを示しているのだと思うが正直まだ自信がない
日付の指定もできるのかなど検証中

addSMA(25, on = 1, with.col = Cl, overlay = TRUE, col = "blue")
addSMA(75, on = 1, with.col = Cl, overlay = TRUE, col = "red")
最後に2つの内容ですが移動平均を出します。
移動平均といっても正確には、単純移動平均になります。
最初の数値が何日分を指定

on = 1
いまのところ用途が不明だが表示系に関するものらしい

with.col = Close
カラムの指定になります。(おそらくこれであっている)

overlay = TRUE
描画を上書きするかの指定になります。
基本TRUEになると思います。

col = "red"
移動平均線の色を指定します。

このような感じで実行すれば株のグラフがつくれます
後は、保存するなりをするだけです。

まだ不明な点はあるのですがとりあえず。
動くものはできます。

思っている以上にドキュメンがなく苦労しました。