[B135] java.lang.Exception: MoneyManagement method not set -- during backtest on AlgoWizard
What I did:
1: Save 2 strategies in SQX format with "Enable Magic Number handling".
2: Merge 2 strategies with the "Strategies merged to one" option.
3: Open the merged strategies in AlgoWizard.
4: Run quick backtest on AlgoWizard.
5: "MemoryManagement method not set" error appears on AlgoWizard.
System:
StrategyQuant X Pro build 135
OS:
Ubuntu 21.10
Log:
12:37:22.523 [qtp1637651402-813] DEBUG c.s.p.S.i.A.AlgoWizardServlet - AW Request: backtest
12:37:22.523 [qtp1637651402-813] INFO c.s.p.S.i.A.AlgoWizardServlet - Incoming backtest request
12:37:22.528 [qtp1637651402-813] ERROR c.s.p.S.i.A.AlgoWizardServlet - Backtest failed
java.lang.Exception: MoneyManagement method not set.
at com.strategyquant.tradinglib.project.ProjectConfigHelper.getMoneyManagement(Unknown Source) ~[SQTradingLib.jar:na]
at com.strategyquant.plugin.Servlet.impl.AlgoWizard.AlgoWizardServlet.onBacktest(Unknown Source) ~[na:na]
at com.strategyquant.plugin.Servlet.impl.AlgoWizard.AlgoWizardServlet.execute(Unknown Source) ~[na:na]
at com.strategyquant.webguilib.servlet.HttpJSONServlet.doGet(Unknown Source) ~[SQWebGUILib.jar:na]
at com.strategyquant.webguilib.servlet.AbstractServlet.doPost(Unknown Source) ~[SQWebGUILib.jar:na]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) ~[jetty-all-uber.jar:9.4.19.v20190610]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[jetty-all-uber.jar:9.4.19.v20190610]
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:876) ~[jetty-all-uber.jar:9.4.19.v20190610]
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:542) ~[jetty-all-uber.jar:9.4.19.v20190610]
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255) ~[jetty-all-uber.jar:9.4.19.v20190610]
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1711) ~[jetty-all-uber.jar:9.4.19.v20190610]
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255) ~[jetty-all-uber.jar:9.4.19.v20190610]
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1347) ~[jetty-all-uber.jar:9.4.19.v20190610]
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203) ~[jetty-all-uber.jar:9.4.19.v20190610]
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480) ~[jetty-all-uber.jar:9.4.19.v20190610]
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1678) ~[jetty-all-uber.jar:9.4.19.v20190610]
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201) ~[jetty-all-uber.jar:9.4.19.v20190610]
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1249) ~[jetty-all-uber.jar:9.4.19.v20190610]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) ~[jetty-all-uber.jar:9.4.19.v20190610]
at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:753) ~[jetty-all-uber.jar:9.4.19.v20190610]
at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:61) ~[jetty-all-uber.jar:9.4.19.v20190610]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) ~[jetty-all-uber.jar:9.4.19.v20190610]
at org.eclipse.jetty.server.Server.handle(Server.java:505) ~[jetty-all-uber.jar:9.4.19.v20190610]
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370) ~[jetty-all-uber.jar:9.4.19.v20190610]
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267) ~[jetty-all-uber.jar:9.4.19.v20190610]
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305) ~[jetty-all-uber.jar:9.4.19.v20190610]
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) ~[jetty-all-uber.jar:9.4.19.v20190610]
at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117) ~[jetty-all-uber.jar:9.4.19.v20190610]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) ~[jetty-all-uber.jar:9.4.19.v20190610]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) ~[jetty-all-uber.jar:9.4.19.v20190610]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) ~[jetty-all-uber.jar:9.4.19.v20190610]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126) ~[jetty-all-uber.jar:9.4.19.v20190610]
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366) ~[jetty-all-uber.jar:9.4.19.v20190610]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:781) ~[jetty-all-uber.jar:9.4.19.v20190610]
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:917) ~[jetty-all-uber.jar:9.4.19.v20190610]
at java.base/java.lang.Thread.run(Thread.java:832) ~[na:na]
12:37:46.597 [qtp1637651402-464] DEBUG c.s.w.servlet.HttpJSONServlet - Incoming command: /main /alive
Status changed from New to Refused
the merged portfolio created by option "Strategies merged to one" is not backtestable, the file doesn't even contain backtest settings.
There are some modifications being made in portfolio strategy's XML config that are not guaranteed to provide exact backtest results in SQ's backtest engine.
It's purpose is just to enable trading multiple strategies with the same symbol and timeframe using single Expert advisor.
Best regards,
Tomas
I can't agree.
But if you say it is a spec, it is OK.
BUT, YOU SHOULD NOT MAKE AN EXCEPTION.
AlgoWizard SHOULD STOP MORE SAFETY.
Open the strategy, and validate the contents. If the error happens, it stops safety by logging the error log.
I think we could throw an error during loading of the strategy in aw editor to prevent it from loading as it is not intended to be edited and backtested.