【问题标题】:Blotter package does not work when I run the code 2nd time当我第二次运行代码时,吸墨纸包不起作用
【发布时间】:2017-06-28 03:28:31
【问题描述】:

我正在使用 Guy Yollin 笔记中的 quanstrat 代码。示例代码如下:

library(quantstrat)
library(blotter)

search()
currency("USD")
stock("SPY", currency = "USD", multiplier = 1)

ls(envir = FinancialInstrument:::.instrument)

ls(all=T)

initDate <- '1997-12-31'
startDate <- '1998-01-01'
endDate <- '2014-06-30'
initEq <- 1e6

Sys.setenv(TZ = "UTC")

options("getSymbols.yahoo.warning"=FALSE)

getSymbols('SPY', from = startDate, to = endDate, index.class = "POSIXct", adjust = T)

SPY$SMA10m <- SMA(Cl(SPY), 10)

#rm.strat(qs.strategy)

qs.strategy <- "qsFaber"

initPortf(qs.strategy, 'SPY', initDate = initDate)

当我第一次运行它时,我没有遇到任何问题。当我在没有修改任何内容的情况下第二次运行它时,我收到以下错误消息:

存在错误(paste("portfolio", name, sep = "."), envir = .blotter, : 找不到对象“.blotter”

我做了search() 并且 > “package:blotter” 出现了。我必须重新启动 RStudio 才能使其正常工作。每次运行此代码时,我都会遇到相同的错误。

有什么解决办法或建议吗?

【问题讨论】:

    标签: r quantitative-finance quantstrat


    【解决方案1】:

    你好,blackknight316,

    我今天早上回答了您的另一个问题,您似乎有关于开始使用 的一般问题。与那个类似,似乎在尝试剪切、粘贴和重新创建其他人的代码示例时,您可能使用了可能与您的脚本无关的参数。

    此外,环境中可能会出现具有重叠对象的示例,这可能会导致一些不一致的行为。但是帖子中没有足够的信息来知道是否发生了这种情况。

    我可以建议在 datacamp.com 上查看优秀的 quantstrat 入门课程吗?

    https://www.datacamp.com/courses/financial-trading-in-r

    它通过视频和示例从头到尾介绍了整个策略,并讨论了所有主要功能、它们的论点的作用,并将为您提供一个有效的示例。

    祝你好运,

    贾斯汀

    【讨论】:

    • 嗨贾斯汀,感谢您回答这个问题。我还没有机会测试您提出的其他建议。我回家后会这样做。我根本没有考虑数据营。我真的很感谢你给我这个建议。我敢打赌这会给我一个很好的开始!再来一次。非常感谢!
    • 贾斯汀,我尝试使用 rm(list = ls()) 清除工作区。它现在工作正常!
    【解决方案2】:

    解决此问题的最简单方法是在脚本中手动创建所需的环境。如果要删除脚本顶部的所有全局变量,可以插入以下代码:

    rm(list = ls(all.names = T))
    .blotter <- new.env()
    .strategy <- new.env()
    

    请注意,您必须保留 .blotter.strategy 名称,因为它们分别是 blotter 和 quantstrat 软件包使用的默认名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-09
      • 1970-01-01
      • 1970-01-01
      • 2021-10-18
      • 2021-08-11
      相关资源
      最近更新 更多