【问题标题】:Comparing the High and Low from one day to the previous比较前一天的高点和低点
【发布时间】:2017-11-20 07:00:41
【问题描述】:

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

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

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

【问题讨论】:

  • 您会向读者展示您目前在这方面的最佳表现吗?值得注意的是,我们有很多人声称尝试过某事,但当我们深入挖掘时,我们经常会发现他们根本没有尝试过任何东西。我并不是说这适用于您 - 只是将问题与此类帖子区分开来是件好事。
  • @Cameron 你写的东西没有意义。第 2 天的“高低”怎么会低于第 3 天。你可能意味着什么。您可能是指 H(3) L(3) 或其他东西。听起来你想做的事情很简单,但你还不够具体。更清楚地定义您的问题....
  • @halfer 我正在尝试将我的代码放入其中,但即使我将代码缩进 4 个空格并保存编辑,代码仍然会聚集成一个基本上不可读的段落。难道我做错了什么?我用过这个网站几次,但从来没有遇到过这个问题。我真的很抱歉,我不想让它看起来像是在浪费任何人的时间。我非常感谢您的帮助。
  • @FXQuantTrader 抱歉,我没有解释清楚。基本上我想测试第-2天的高点和低点是否低于-3天的高点和低点。与您写的非常相似:H(-2)
  • @Cameron:要让格式化块出现在 Markdown 中,只需确保您有两件事正确:(1)每行开头有四个空格,(2)有一个代码块前的空行。为方便起见,要缩进,您可以将代码粘贴进去,选择它,然后单击工具栏中的代码{} 按钮。

标签: r indicator quantstrat back-testing


【解决方案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"))

【讨论】:

  • 这看起来可能是我正在寻找的东西,我以前从未使用过 dplyr,所以我现在会尝试并让你知道。感谢您的帮助。
【解决方案2】:

我设法使用@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")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-17
    • 1970-01-01
    • 2012-05-21
    • 2014-02-05
    • 1970-01-01
    相关资源
    最近更新 更多