我的股票每日收盘价为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
谢谢
答案 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的滚动方式。