我试图测试一些涉及的交易策略 数字 </跨度> 货币 </跨度> 。一个这样的策略涉及MACD交叉,但我想优化nSlow&amp; n快速参数。
这是一个可重复的…(!exists(‘。strategy’))。strategy&lt; - new.env()
ETHBTC&lt; - ethbtc.30m.xts [,c(“open”,“high”,“low”,“close”,“volume”)] [“2016-02-01 ::”]
货币 </跨度> (c(’BTC ……
好的,我想出来了。
该 component.label 论证 add.distribution 功能需要匹配 label 来自的论点 add.indicator 。所以在这种特殊情况下,我改变了我的观点 add.indicator 至:
component.label
add.distribution
label
add.indicator
add.indicator(strategy.name, name = "MACD", arguments = list(x=quote(Cl(mktdata))), label='MACD')
然后改变了我的 add.distribution 至:
add.distribution(strategy.name, paramset.label = 'optEMA', component.type = 'indicator', component.label = 'MACD', variable = list(nFast = 60:80), label = 'NFAST') add.distribution(strategy.name, paramset.label = 'optEMA', component.type = 'indicator', component.label = 'MACD', variable = list(nSlow = 180:200), label = 'NSLOW')
它运行。将此留在这里以防万一其他人偶然发现类似的错误。
这个代码我或多或少有同样的问题
################################# MACD PARAMETERS OPTIMIZATION .fastMA = (30:60) .slowMA = (50:80) .nsamples = 10 # Paramset add.distribution(volStrat, paramset.label = 'optEMA', component.type = 'indicator', component.label = 'macd.out', variable = list(n = .fastMA), label = 'nFAST' ) add.distribution(volStrat, paramset.label = 'optEMA', component.type = 'indicator', component.label = 'macd.out', variable = list(n = .slowMA), label = 'nSLOW' ) add.distribution.constraint(volStrat, paramset.label = 'optEMA', distribution.label.1 = 'nFAST', distribution.label.2 = 'nSLOW', operator = '<', label = 'optEMA' ) results <- apply.paramset(volStrat, paramset.label = 'optEMA', portfolio = portfolio2.st, account = account.st, nsamples = .nsamples, verbose = TRUE) stats <- results$tradeStats print(stats)
出现的错误是:
Error in must.be.paramset(strategy, paramset.label) : optEMA : no such paramset in strategy VIXSPY_MACD
我真的不明白如何选择 paramset.label 值。
paramset.label
非常感谢