-3

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

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

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

4

2 回答 2

1

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

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"))
于 2017-11-20T07:08:07.300 回答
0

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

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")
于 2017-11-21T01:20:04.527 回答