gpt4 book ai didi

R 统计信息 : Average True Range Trailing Stop indicator

转载 作者:行者123 更新时间:2023-12-04 11:30:20 24 4
gpt4 key购买 nike

我正在使用以下文章:

marintrading.com/106VERV.PDF

在 R 中创建平均真实范围移动止损指标。我尝试了各种方法来做到这一点,包括 for 循环、pmin 和创建滞后时间序列,但似乎没有任何效果。

你能帮我一下吗?

最佳答案

你为什么要尝试创建它?它在 TTR package 中可用在函数中 ATR .

更新(更仔细地阅读问题后)。我不确定这是解决方案,但我希望它可以帮助您朝着正确的方向前进。

library(quantmod)
getSymbols("AMD", from="2005-11-01", to="2006-08-01")
AMD$stopLongATR <- -3.5*ATR(HLC(AMD),5)[,"atr"]
AMD$stopShortATR <- 3.5*ATR(HLC(AMD),5)[,"atr"]

chartSeries(AMD, TA=NULL)
addTA(runMax(Cl(AMD)+AMD$stopLongATR,10), on=1)
addTA(runMin(Cl(AMD)+AMD$stopShortATR,10), on=1)

更新#2:

我错过了文章中的追踪止损逻辑。此代码更紧密地复制了它。请注意 coredata电话是必要的,因为 trail是路径依赖的,我们需要将昨天的值与今天的值进行比较。 xts/zoo 操作在操作前按索引合并,所以我们需要先删除索引再进行比较。
AMD$trail <- 0
AMD$AMD.lagCl <- lag(Cl(AMD))

for(i in 6:NROW(AMD)) {
trail1 <- coredata(AMD$trail[i-1])

if(Cl(AMD)[i] > trail1 && AMD$AMD.lagCl[i] > trail1) {
AMD$trail[i] <- max(trail1,coredata(Cl(AMD)[i]+AMD$stopLongATR[i]))
} else
if(Cl(AMD)[i] < trail1 && AMD$AMD.lagCl[i] < trail1) {
AMD$trail[i] <- min(trail1,coredata(Cl(AMD)[i]+AMD$stopShortATR[i]))
} else
if(Cl(AMD)[i] > trail1) {
AMD$trail[i] <- coredata(Cl(AMD)[i]+AMD$stopLongATR[i])
} else {
AMD$trail[i] <- coredata(Cl(AMD)[i]+AMD$stopShortATR[i])
}
}

chartSeries(AMD)
addTA(AMD$trail, on=1)

关于R 统计信息 : Average True Range Trailing Stop indicator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5554220/

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