我正在应用与 luxor-demo 中类似的 add.distribution 规则,而我的策略只有一个多头头寸。
整个策略有效,但是在应用参数集时出现以下错误:
TakeProfitLONG 47 0.047
TakeProfitLONG 47 0.047 计算表达式的结果:
param.combo[[param.label]] 中的 simpleError:下标越界
得到任务 47 的结果 numValues: 47, numResults: 47, 停止: FALSE 返回状态 FALSE 评估 # 48: $param.combo
我正在尝试根据简单的获利规则运行分配(从 stopLoss 或 trailingStop 获得相同的结果):
.use.takeProfit = TRUE
.takeprofit <- 2.0/100 # actual
.TakeProfit = seq(0.1, 4.8, length.out=48)/100 # parameter set for optimization
## take-profit
add.rule(strategy.st, name = 'ruleSignal',
arguments=list(sigcol='signal.gt.zero' , sigval=TRUE,
replace=FALSE,
orderside='long',
ordertype='limit',
tmult=TRUE,
threshold=quote(.takeprofit),
TxnFees=.txnfees,
orderqty='all',
orderset='ocolong'
),
type='chain',
parent='EnterLONG',
label='TakeProfitLONG',
enabled=.use.takeProfit
)
我添加分布如下:
add.distribution(strategy.st,
paramset.label = 'TakeProfit',
component.type = 'chain',
component.label = 'TakeProfitLONG',
variable = list(threshold = .TakeProfit),
label = 'TakeProfitLONG'
)
并应用集合:
results <- apply.paramset(strategy.st, paramset.label='TakeProfit', portfolio.st=portfolio.st, account.st=account.st, nsamples=.nsamples, verbose=TRUE)
从我有限的调试来看,参数集似乎是一个简单的向量,而在 apply.paramset 中,以下函数失败:
results <- fe %dopar% { ... }
在这里,我对 R 太陌生了,因为我只研究了 4 周,但可能会调用:
install.param.combo <- function(strategy, param.combo, paramset.label)
可能导致错误?
必须像我一样向新人道歉,但是有没有人遇到过这种情况或者可以帮助如何将分布应用于仅长期策略中的一个项目?
提前谢谢了!
编辑 1: SessionInfo()
R version 3.1.2 (2014-10-31)
Platform: i486-pc-linux-gnu (32-bit)
locale:
[1] C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] lattice_0.20-29 iterators_1.0.7 downloader_0.3
[4] quantstrat_0.9.1665 foreach_1.4.2 blotter_0.9.1644
[7] PerformanceAnalytics_1.4.3574 FinancialInstrument_1.2.0 quantmod_0.4-3
[11] TTR_0.22-0.1 xts_0.9-7 zoo_1.7-12
loaded via a namespace (and not attached):
[1] codetools_0.2-9 compiler_3.1.2 digest_0.6.7 grid_3.1.2 tools_3.1.2