- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用与我正在使用的数据不同的时间框架指标。我已经看到这个问题问了几次,但目前还没有解决方案(至少对我来说)。
下面的示例使用每日股票数据,但实际项目使用日内货币数据。我现在可以轻松地导入日内 csv 数据,因此示例和现实世界应该足够互换。
library(quantstrat)
initDate="2000-01-01"
from="2003-01-01"
to="2016-12-31"
#set account currency and system timezone
currency('USD')
Sys.setenv(TZ="UTC")
#get data
symbols <- "SPY"
getSymbols(symbols, from=from, to=to, src="yahoo", adjust=TRUE)
stock(symbols, "USD")
#trade sizing and initial equity settings
tradeSize <- 100000
initEq <- tradeSize*length(symbols)
#set up the portfolio, account and strategy
strategy.st <- portfolio.st <- account.st <- "mtf.strat"
rm.strat(strategy.st)
initPortf(portfolio.st, symbols=symbols, initDate=initDate, currency='USD')
initAcct(account.st, portfolios=portfolio.st, initDate=initDate, currency='USD',initEq=initEq)
initOrders(portfolio.st, initDate=initDate)
strategy(strategy.st, store=TRUE)
#SMA length
nSMA <- 14
add.indicator(strategy.st, name="SMA",
arguments=list(x=quote(Cl(mktdata)), n=nSMA, maType = "SMA"),
label="SMA")
test <- applyIndicators(strategy.st, mktdata=OHLC(SPY))
add.indicator(strategy.st, name="SMA",
arguments=list(x=quote(to.period(Cl(mktdata), period = "weeks", k = 1, indexAt = "startof")), n=nSMA, maType = "SMA"),
label="SMAw1")
## Or this
add.indicator(strategy.st, name="SMA",
arguments=list(x=quote(to.weekly(Cl(mktdata))), n=nSMA, maType = "SMA"),
label="SMAw1")
test <- applyIndicators(strategy.st, mktdata=OHLC(SPY))
# Error in runSum(x, n) : ncol(x) > 1. runSum only supports univariate 'x'
Cl(x)
直接调用关闭列导致相同的错误。我这样做是
TTR:::runSum
如果给出多于一列的数据,将抛出上述错误。
最佳答案
问题是 to.period
(因此 to.weekly
)返回 OHLC 对象,而不是像 TTR::SMA
这样的单变量系列预计。所以你需要包装to.period
的输出在 Cl
.
add.indicator(strategy.st, name="SMA",
arguments=list(x=quote(Cl(to.weekly(Cl(mktdata)))), n=nSMA, maType = "SMA"),
label="SMAw1")
test <- applyIndicators(strategy.st, mktdata=OHLC(SPY))
NA
当该指标与每日
mktdata
合并时.
R> tail(merge(SPY, test$SMA))
SPY.Open SPY.High SPY.Low SPY.Close SPY.Volume SPY.Adjusted SMA.SMAw1
2016-11-25 221.10 221.56 221.01 221.52 37861800 221.52 215.0720
2016-11-28 221.16 221.48 220.36 220.48 70284100 220.48 NA
2016-11-29 220.52 221.44 220.17 220.91 67079400 220.91 NA
2016-11-30 221.63 221.82 220.31 220.38 99783700 220.38 NA
2016-12-01 220.73 220.73 219.15 219.57 77230500 219.57 NA
2016-12-02 219.67 220.25 219.26 219.68 70863400 219.68 215.3207
add.indicator
使用你的包装函数。
mySMA <- function(x, on = "days", k = 1, n = 10) {
agg <- x[endpoints(x, on, k)]
sma <- SMA(agg, n)
# merge with zero-width xts object w/original index, filling NA
result <- merge(sma, xts(,index(x)), fill = na.locf)
return(result)
}
add.indicator(strategy.st, name = "mySMA",
arguments = list(x = quote(Cl(mktdata)),
on = "weeks",
n = nSMA),
label = "SMAw1")
test <- applyIndicators(strategy.st, mktdata = OHLC(SPY))
mktdata
中的每个观察值都有一个值。当它合并时。
> tail(merge(SPY, test$SMA))
SPY.Open SPY.High SPY.Low SPY.Close SPY.Volume SPY.Adjusted SMA.SMAw1
2016-11-25 221.10 221.56 221.01 221.52 37861800 221.52 215.0720
2016-11-28 221.16 221.48 220.36 220.48 70284100 220.48 215.0720
2016-11-29 220.52 221.44 220.17 220.91 67079400 220.91 215.0720
2016-11-30 221.63 221.82 220.31 220.38 99783700 220.38 215.0720
2016-12-01 220.73 220.73 219.15 219.57 77230500 219.57 215.0720
2016-12-02 219.67 220.25 219.26 219.68 70863400 219.68 215.3207
关于r - 在 quantstrat 中生成不同周期的指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40857610/
美好的一天! friend 们我真的需要你们的帮助! 我的问题是:我如何在特定价格设置止损? Quantstrat 的工作方式如下(对于多头头寸):止损价=进场价-进场价*阈值。 例如,我尝试运行我的
如何在 quantstrat 中输入相互抵消的订单?例如,一旦我进入交易,我立即打开两个订单:“止损”和“止盈”。一旦一个被填满,另一个将被取消。 #Enter signal strategy <-
如何在 quantstrat 中实现“以开盘价在下一个柱线买入”? 这是我对 maCross.R 样本的实验。 添加 prefer='Open'在规则信号 stratMACROSS orders
在使用 Quantstrat 成功回测策略后,有没有办法使用相同的信号/指标/规则代码来生成生产交易的订单? 这似乎可以通过使用订单簿来实现,但我还没有找到任何示例或演示来解释如何使用截至目前的数据为
我还在玩 Guy Yollins quantstrat 的例子。在这个例子中,当 SPY 穿过其 10 日均线时,他购买了 1000 股 SPY。既然我们定义了初始股权,是否可以始终购买整个投资组合的
我知道之前已经有人问过这个问题 here ,但我想进一步扩展这个问题。 假设我的入场价格为 50,因此在当天开始时,我以 50 的价格下达 1 手的限价单。在交易日期间,市场崩溃,我的出价被满足。在现
我希望使特定 Assets (符号)的最大允许头寸成为资本(初始分配+ PL)和指标的函数。我尝试通过替换 osMaxPos。我在顶部添加了这个,初始值是硬编码的,ddQ 是我的指标, updateP
我正在考虑使用 R 和 quantstrat 来回测某些策略。我查看了一些文档和 youtube 视频,看看是否可以做我想做的事。我是 R 的新手,我愿意深入研究必要的文档,但如果我想要的东西是可能的
我知道之前已经有人问过这个问题 here ,但我想进一步扩展这个问题。 假设我的入场价格为 50,因此在当天开始时,我以 50 的价格下达 1 手的限价单。在交易日期间,市场崩溃,我的出价被满足。在现
这是我正在使用 quantstrat 处理的多时间框架策略的示例。这是执行多时间框架策略的正确方法还是我做错了?我还没有在 quantstrat 演示或谷歌搜索中遇到任何其他执行多时间帧的示例。 为了
我想使用与我正在使用的数据不同的时间框架指标。我已经看到这个问题问了几次,但目前还没有解决方案(至少对我来说)。 下面的示例使用每日股票数据,但实际项目使用日内货币数据。我现在可以轻松地导入日内 cs
我正在尝试在 R 的 Quantstrat 包中运行回测策略。该工具是小麦 future ,以美分报价。合约规模为 5000 蒲式耳。因此,我添加了以下代码。 future(symbols,
我正在尝试在 R 的 Quantstrat 包中运行回测策略。该工具是小麦 future ,以美分报价。合约规模为 5000 蒲式耳。因此,我添加了以下代码。 future(symbols,
当我使用时: stratRank <- add.rule(stratRank, name="ruleSignal", arguments=list(sigcol="Entry
当我使用 enable.rule我无法覆盖规则的内部 enabled=FALSE . 例如: ## Stop Loss Rule stratstocky <- add.rule(stratstocky
一般信息: R 版本:3.1.0 记事本:0.8.19 问题描述: 我正在尝试实现一个使用不同货币的多个投资组合的 Quantstrat 账户。 这是我的基本设置: 1 个欧元账户 1 个美元投资组合
我是 quantstrat 的新手,我想用 then 来模拟我的策略,该策略本质上是布林带。当 Premium 超过 Avg 时,我的代码无法平仓。 定义策略(信号/规则)的算法逻辑是: 开空头头寸:
我一直在阅读 Guy 的 quantstrat 讲座(下面的链接),在反复尝试重新执行代码之后,我遇到了一些初始错误,这些错误导致讲座中的大部分后续代码无法运行。 这是代码(从讲座中复制,经过非常小的
我想在 RStudio 中使用最新的 R 版本时安装一个包。 特别是 quantstrat 包 那可能吗? 这是我有 3.4.1 的 R 最新版本 我的错误信息: Warning in install
Python 中有类似 quantstrat 的东西吗?在 R 中? 最佳答案 是的,Quantopian使用名为 zipline 的开源 Python 回测引擎. 关于python - Python
我是一名优秀的程序员,十分优秀!