R绘制股票走势图及年份成交量图

来源:互联网 发布:光影魔术手mac版下载 编辑:程序博客网 时间:2024/05/01 06:10

目的:抓取雅虎网站上的还有Oracle公司的股票价格,绘制最高最低点,及描述其年成交量的比例

可以通过getSymbols函数抓取在雅虎上的股票数据,事先需要先下载好两个关于股票的包:

library(quantmod)library(tseries)getSymbols("ORCL",src="yahoo")
输入对应的股票名称,就能得到股票数据,eg:

ORCL:           ORCL.Open ORCL.High ORCL.Low ORCL.Close ORCL.Volume2007-01-03        19        20       19         18     5.2e+072007-01-04        19        20       19         18     3.4e+072007-01-05        19        20       19         18     3.6e+072007-01-08        19        20       19         18     3.1e+072007-01-09        20        20       19         18     3.1e+072007-01-10        19        20       19         18     2.8e+072007-01-11        20        20       19         17     6.5e+072007-01-12        19        19       19         18     4.3e+07
绘制相关的图形所用的函数为barChart()见下:

barChart(ORCL)

而在其中标注出最高点与最低点使用的函数为 addTA ,首先,先通过数据找出其最高值与最低值的相关数据:

Max<-Hi(ORCL[which.max(ORCL$ORCL.High)])Min<-Lo(ORCL[which.min(ORCL$ORCL.Low)])
查看结果:

Max           ORCL.High2017-06-22     51.85Min          ORCL.Low2009-03-09   15.152
再通过addTA函数绘制最高最低点的图

addTA(Max,col="red",type="b",lwd=2,on=1)addTA(Min,col="blue",type="b",lwd=2,on=1)


即依照图显示出了对应的最高值最低值。

计算对应的成交量的值及其相应的比例,(成交量在抓取数据的第五列),制得成如下的数据框:

df<-data.frame(  year=2015:2017,  or=c(sum(ORCL[which(format(index(ORCL),"%Y")=="2015"),5]),       sum(ORCL[which(format(index(ORCL),"%Y")=="2016"),5]),       sum(ORCL[which(format(index(ORCL),"%Y")=="2017"),5])),  ap=c(sum(AAPL[which(format(index(AAPL),"%Y")=="2015"),5]),       sum(AAPL[which(format(index(AAPL),"%Y")=="2016"),5]),       sum(AAPL[which(format(index(AAPL),"%Y")=="2017"),5])),  MS=c(sum(MSFT[which(format(index(MSFT),"%Y")=="2015"),5]),       sum(MSFT[which(format(index(MSFT),"%Y")=="2016"),5]),       sum(MSFT[which(format(index(MSFT),"%Y")=="2017"),5]))  )
利用数据框的数据进行计算:

df$aveor<-(df$or/(sum(df$or)))df$aveap<-(df$ap/(sum(df$ap)))df$avems<-(df$MS/(sum(df$MS)))
得到最终新的表格为如下:

df  year         or          ap         MS     aveor     aveap     avems1 2015 3750690400 13063147500 9057810400 0.4208588 0.4975680 0.45369302 2016 3457618700  9680553200 7814289200 0.3879737 0.3687268 0.39140683 2017 1703684100  3510295436 3092523803 0.1911676 0.1337052 0.1549002
绘制相应的统计图形,采用热力图作为颜色:
barplot(as.matrix(df[,5:7]),,beside=T,horiz=F,border="white",ylim=c(0,1),main="stock",col=heat.colors(3))
再添加相应的图例:

legend("right",legend=df$year,bty="n",fill=heat.colors(3))

嗯,讲真好像图形还是挺难看的,关于如何在直方图上加上相应的数据还未学会,

倘若路过有大神希望可以教下渣新

希望本文对你有帮助

技术所限,不当之处,还请见谅。








原创粉丝点击