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

xiaoxiao2021-02-28  114

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

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

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

ORCL: ORCL.Open ORCL.High ORCL.Low ORCL.Close ORCL.Volume 2007-01-03 19 20 19 18 5.2e+07 2007-01-04 19 20 19 18 3.4e+07 2007-01-05 19 20 19 18 3.6e+07 2007-01-08 19 20 19 18 3.1e+07 2007-01-09 20 20 19 18 3.1e+07 2007-01-10 19 20 19 18 2.8e+07 2007-01-11 20 20 19 17 6.5e+07 2007-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.High 2017-06-22 51.85 Min ORCL.Low 2009-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 avems 1 2015 3750690400 13063147500 9057810400 0.4208588 0.4975680 0.4536930 2 2016 3457618700 9680553200 7814289200 0.3879737 0.3687268 0.3914068 3 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))

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

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

希望本文对你有帮助

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

转载请注明原文地址: https://www.6miu.com/read-66188.html

最新回复(0)