我正在尝试为交易策略优化MACD参数,但不幸的是我坚持使用{maxmemory}
值。这是代码:
paramset.label
当我运行它时,每个样本都会出现此错误:
################################# MACD PARAMETERS OPTIMIZATION
.fastMA <- (20:40)
.slowMA <- (30:70)
.nsamples = 10
strat.st <- 'volStrat'
# Paramset
add.distribution(strat.st,
paramset.label = 'EMA',
component.type = 'indicator',
component.label = 'macd.out',
variable = list(n = .fastMA),
label = 'nFast'
)
add.distribution(strat.st,
paramset.label = 'EMA',
component.type = 'indicator',
component.label = 'macd.out',
variable = list(n = .slowMA),
label = 'nSlow'
)
add.distribution.constraint(strat.st,
paramset.label = 'EMA',
distribution.label.1 = 'nFast',
distribution.label.2 = 'nSlow',
operator = '<',
label = 'nFast<nSlow'
)
results <- apply.paramset(strat.st,
paramset.label = 'EMA',
portfolio = portfolio2.st,
account = account.st,
nsamples = .nsamples,
verbose = TRUE)
stats <- results$tradeStats
print(stats)
然后,对于最后一个,这是错误:
evaluation # 1:
$param.combo
nFast nSlow
379 23 51
[1] "Processing param.combo 379"
nFast nSlow
379 23 51
result of evaluating expression:
<simpleError in strategy[[components.type]][[index]]: subscript out of bounds>
got results for task 1
numValues: 1, numResults: 1, stopped: FALSE
returning status FALSE
我真的不明白我该如何解决它。 任何人都可以解决这个问题吗?
非常感谢
答案 0 :(得分:0)
你没有在OPTIMIZATION部分之前提供代码,所以这里只是我的猜测方向。
我知道你要测试20:40和30:70,但是在你的OPTIMIZATION代码中,你添加了两个指向&#34; component.label =&#39; macd.out&#39; &#34;
我做了类似的测试,虽然它们都使用MA类型指标,但它们通常不应指向相同的MA数据(&#34; component.label =&#39; macd.out&#39;&#34;) ,这些代码将一个分发点用于&#34; component.label =&#39; fast&#39;&#34;另一个指向&#34; component.label =&#39; slow&#39;&#34;因为他们指向不同的数据,以便可以比较它们。
您可以尝试按此方向进行调试。