gpt4 book ai didi

r - 计算MACD和错误处理时,数字超出有效范围

转载 作者:行者123 更新时间:2023-12-03 07:57:02 24 4
gpt4 key购买 nike

我正在尝试计算Russel 1000(这是1000只美国大型股的指数)的价格( MACD - signal ) / signal。我不断收到此错误消息,简直不知道为什么:

Error in EMA(c(49.85, 48.98, 48.6, 49.15, 48.85, 50.1, 50.85, 51.63, 53.5, :
n = 360 is outside valid range: [1, 198]



尽管我精通Python,但在R语言方面还是相对较新。我想我可以使用“ try”来解决此错误,但是我确实想至少了解其原因。

事不宜迟,这是代码:
N<-1000
DF_t<- data.frame(ticker=rep("", N), macd=rep(NA,N),stringsAsFactors=FALSE)
stock<-test[['Ticker']]
i<-0
for (val in stock){dfpx=bdh(c(val), c("px_last"),start.date=as.Date("2018-1-
01"),end.date=as.Date("2019-12-30"))
macd<- MACD( dfpx[,"px_last"], 60, 360, 45, maType="EMA")
num<-dim(macd)[1]
ma<-(macd[num,][1]-macd[num,][2])/macd[num,][2]
i=i+1
DF_t[i,]<-list(val,ma)
}

就您的信息而言, bdh()是用于获取历史数据的Bloomberg命令。 dfpx[]是一个数据框。 MACD()是一个函数,它使用价格的时间序列并输出一个矩阵,其中第一列是 MACD值,第二列是 signal值。

非常感谢你!任何建议将不胜感激。顺便说一句,该代码适用于少量股票的一小部分样本,但是当我尝试将其应用于1000只股票时,它将导致错误消息。另外,数据点的数量大约为500,对于我设置用于计算MACD的参数来说,应该足够大。

最佳答案

Q : "...and error handling"



如果我可以在上面加一点盐,那么错误预防比任何事后错误处理要好得多。

为此, [TIME]-和 [SPACE] -Domains步骤中都有一个便宜的常量O(1),它主要是防止任何此类与错误相关的崩溃:

只需在TimeSERIES数据的 vector 之前添加实例化,该 vector 具有那么多恒定和过程不变的值单元格,从而使其达到任何 vector 处理的最大深度,则原则上避免了任何此类错误或异常:

在大多数情况下,
  • 处理不变值是第一个已知值,根据需要,它会朝着较旧的(不存在)条的时间方向重复多次(是的,不依赖于NaN -s以及如何NaN -s可能使我们遇到方法上的麻烦,这些方法对丢失的数据很敏感,如上所述。QED)
  • 关于r - 计算MACD和错误处理时,数字超出有效范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60032467/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com