比较一天与前一天的最高价和最低价

Comparing the High and Low from one day to the previous

我正在尝试制作指标以用于我的 quantstrat 回测,但似乎无法弄清楚如何编写它。基本上我想比较 2 天前的最高价和最低价与 3 天前的 H&L。如果第 2 天的 H&L 低于第 3 天,我会将其作为买入信号,否则我会将其作为空头信号。 之后,我想制作另一个指标来做同样的事情,但将其提前一个周期,因此昨天的 H&L 低于 2 天前的 H&L,依此类推。

最初我使用的是 donichan 通道,但意识到这不会起作用,因为它会保持相同的值,直到其中一个值创下新高或新低。

我知道这是一个如此简单的问题,但我想多了。

如果我正确理解你的问题,我会建议创建两个新变量,例如使用 dplyr 上的滞后函数:

library(dplyr) 
df <- mutate(df, two.days.ago = lag(high.and.low, -2),
                 three.days.ago = lag(high.and.low, -3))


df <- mutate(df, buy.short = ifelse(two.days.ago < three.days.ago, 
                                   "buy", "short"))

我设法使用@Pete 关于使用 dylpr 滞后函数的建议解决了这个问题。这是我的最终结果:

Rule3 <- function(lagH3,lagL3,lagH2,lagL2)
{ifelse(lagH3 & lagL3>lagH2 & lagL2,1,0)} 
add.indicator(strategy=strategyname,name="lag",
          arguments=list(x=quote(mktdata$High),n=3L),label="lagH3")
add.indicator(strategy=strategyname,name="lag",
          arguments=list(x=quote(mktdata$Low),n=3L),label="lagL3")
 add.indicator(strategy=strategyname,name="lag",
          arguments=list(x=quote(mktdata$High),n=2L),label="lagH2")
add.indicator(strategy=strategyname,name="lag",
          arguments=list(x=quote(mktdata$Low),n=2L),label="lagL2")

add.indicator(strategyname, name="Rule3", arguments=list(lagH3=quote(mktdata$High.lagH3),
lagL3=quote(mktdata$Low.lagL3),Close=quote(mktdata$Close),lagH2=quote(mktdata$High.lagH2),
lagL2=quote(mktdata$Low.lagL2)), label="Rule3Signal")