比较一天与前一天的最高价和最低价
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")
我正在尝试制作指标以用于我的 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")