如何计算R中的几个移动平均线

时间:2018-07-09 04:28:29

标签: r finance moving-average

我的股票每日收盘价为10年:BNS.TO。我想计算几个移动平均线。

如果MA n =(P t-1 + P t-2 + P t-3 +…+ P tn )/ n

其中P =收盘价 n =要平均的周期数

我需要将n设置为3到200之间的所有值。我应该如何处理?

如果需要,可以在这里下载数据:https://ca.finance.yahoo.com/quote/BNS.TO/history?p=BNS.TO

谢谢

3 个答案:

答案 0 :(得分:0)

您可以在R中使用pracma包。通过简单的Google搜索,您可能已经登陆了这些页面。

参考:https://www.rdocumentation.org/packages/pracma/versions/1.9.9/topics/movavg

if (!require("pracma", character.only=T, quietly=T)) {
  install.packages("pracma")
  library("pracma", character.only=T)
}

MySeries<-1:300 #sample data
df<-data.frame(lapply(3:200, function(x){movavg(MySeries,n=x,"s")}))
names(df)<-paste0("MA",3:200)

您可以在该文档的R文档页面上阅读有关该功能的更多信息

答案 1 :(得分:0)

您可以从TTR软件包中使用SMA功能。

library(TTR);
data(ttrc);

# Assume mydata is ttrc    
mydata = ttrc;

# SMA for 5 days - you can also loop thru to vary from 3 days to 200 days
n = paste("day",5,sep="")

# To assign to mydata use !!
mydata = mutate(mydata,!!n := SMA(Close,5) )

答案 2 :(得分:0)

MA <- sample(30:70, 2500, T)

library(zoo)
rollingmeans <- lapply(3:200, function(x) {rollmean(MA, x)})

这会生成一个列表,其中包含宽度为3直到宽度为200的滚动方式。