私は、非常に単純なシステムを実行し、最適化しようとします、quantstratを使用しています。私の戦略は:Close > SMA
を入力し、出口がClose < SMA
のときに入力します。私は毎日のデータを2010年1月1日から2014年1月1日まで実行しています。最適化は.nSMA = (10:20)
です。私のシステムはi5 m480 2.67Ghz、8gb、Win7-64、Revolution R Open 3.2.0、RStudioです。この量子ストラップコードは異常に遅いですか?
コードの実行に約50秒かかります。それはquantstratのために正常ですか?それとも私は間違いを犯したのですか?
require(quantstrat)
require(foreach)
registerDoSEQ()
rm(list = ls(.blotter), envir = .blotter)
currency('USD')
initDate = "2010-01-01"
from = "2010-01-01"
to = "2014-01-01"
initEq = 1e5
nSMA = 50
getSymbols("GOOG", from = from, to = to)
stock("GOOG", currency = "USD", tick_size = 1, multiplier = 1)
getInstrument("GOOG", type = "instrument")
strategy.st <- "first"
portfolio.st <- "first"
account.st <- "first"
rm.strat(portfolio.st)
rm.strat(strategy.st)
initPortf(portfolio.st, symbols = 'GOOG', 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)
### indicators
add.indicator(strategy.st, name = "SMA",
arguments = list(x = quote(Cl(mktdata)), n = nSMA),
label = "nSMA")
### signals
add.signal(strategy.st, name='sigCrossover',
arguments = list(columns=c("Close","nSMA"),
relationship="gt"),
label='LE'
)
add.signal(strategy.st, name='sigCrossover',
arguments = list(columns=c("Close","nSMA"),
relationship="lt"),
label='LX'
)
### rules
add.rule(strategy.st, name="ruleSignal",
arguments=list(sigcol="LE" , sigval=TRUE,
orderside="long",
ordertype="market",
prefer="Open",
orderqty=1,
replace=FALSE
),
type="enter",
label="EnterLong"
)
add.rule(strategy.st, name="ruleSignal",
arguments=list(sigcol="LX" , sigval=TRUE,
orderside="long",
ordertype="market",
prefer="Open",
orderqty="all",
replace=FALSE
),
type="exit",
label="ExitLong"
)
applyStrategy(strategy.st, portfolio.st)
save.strategy(strategy.st)
# Optimization
.nSMA = (10:20)
load.strategy(strategy.st)
add.distribution(strategy.st,
paramset.label = 'nSMA',
component.type = 'indicator',
component.label = 'nSMA',
variable = list(n = .nSMA), label = 'NSMA')
results <- apply.paramset(strategy.st,
paramset.label='nSMA',
portfolio.st=portfolio.st,
account.st=account.st,
nsamples = length(.nSMA),
audit = NULL,
verbose=TRUE)
View((results$tradeStats))
plot(results$tradeStats$NSMA, results$tradeStats$Net.Trading.PL, type = "l")
返信いただきありがとうございます。 しかし、私はシステムの性能を比較することには興味がありませんでした。 システムが高速であれば、素早くスクリプトを理解することができます) テストシステムには、quantstratを使用していますか?あなたはシステムの開発とテストに経験がありますか?またはスクリプトを実行するだけですか? 実際、私のスクリプトは最も簡単です。また、1秒よりもずっと速く、すばやくどのシステムでも実行する必要があります。 多分、私は任意の量子ストラットオプションを有効にする必要がありますか?たとえば、コンソールの出力にスクリプトの結果を無効にしますか? – Anatolye
@Anatolye:私はシステムパフォーマンスを比較していませんでした。私はあなたのマシンでは時間がかかりすぎると言いました。あなたのマシン上の何かがコードの実行に時間を要します。スクリプトはマシン上で> 3倍速く実行されますが、マシンは自分のマシンより3倍高速ではありません。はい、私はquantstratで戦略をテストします。私はパッケージの著者の一人です。 11値を超えるパラメータ検索が1秒未満になると期待するのは無理です。 –
ジョシュア、私たちのシステムは世代が異なるので、そういう直接的な比較は正しいとは思わない。 しかし、ありがとう!私は自分のシステムをチェックします。 200の値を計算するために私の取引とテストプラットフォームで同じsスクリプトを実行すると、結果が直ちに表示されるため、時間を修正できませんでした。私は期待していない、私は毎日それを見る。 – Anatolye