I wanted to test my strategy, but it was aborted shortly after starting the programm, because there have been exceptions thrown, that says the following:
2017-08-05 10:34:39.174 ERROR FeedMetadataManager -
com.dukascopy.charts.data.datacache.DataCacheException
at com.dukascopy.charts.data.datacache.CurvesJsonProtocolHandler.processMessage(CurvesJsonProtocolHandler.java:1395)
at com.dukascopy.charts.data.datacache.CurvesJsonProtocolHandler.processMessage(CurvesJsonProtocolHandler.java:1331)
at com.dukascopy.charts.data.datacache.metadata.FeedMetadataManager.getFirstTimeFromDFS(FeedMetadataManager.java:134)
at com.dukascopy.charts.data.datacache.metadata.FeedMetadataManager.checkDFSFillAllCaches(FeedMetadataManager.java:214)
at com.dukascopy.charts.data.datacache.metadata.FeedMetadataManager.checkDFS(FeedMetadataManager.java:206)
at com.dukascopy.charts.data.datacache.metadata.FeedMetadataManager.getFirstTimeFromLocalCacheOrDFS(FeedMetadataManager.java:192)
at com.dukascopy.charts.data.datacache.metadata.FeedMetadataManager.getTimeOfFirstCandle(FeedMetadataManager.java:110)
at com.dukascopy.charts.data.datacache.FeedDataProvider.getTimeOfFirstCandle(FeedDataProvider.java:2040)
at com.dukascopy.charts.data.datacache.FeedDataProvider.getTimeOfFirstTick(FeedDataProvider.java:2769)
at com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.<init>(LoadCandlesFromTicksAction.java:80)
at com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.<init>(LoadCandlesFromTicksAction.java:124)
at com.dukascopy.charts.data.datacache.LoadCustomPeriodNumberOfCandlesAction.loadCandlesFromTicks(LoadCustomPeriodNumberOfCandlesAction.java:123)
at com.dukascopy.charts.data.datacache.LoadCustomPeriodNumberOfCandlesAction.run(LoadCustomPeriodNumberOfCandlesAction.java:110)
at com.dukascopy.charts.data.datacache.LoadNumberOfCandlesAction.run(LoadNumberOfCandlesAction.java:210)
at com.dukascopy.charts.data.datacache.FeedDataProvider.loadCandlesDataBeforeSynched(FeedDataProvider.java:874)
at com.dukascopy.dds2.greed.agent.strategy.tester.AbstractStrategyRunner.getFirstTicks(AbstractStrategyRunner.java:223)
at com.dukascopy.dds2.greed.agent.strategy.tester.AbstractStrategyRunner.getFirstTicks(AbstractStrategyRunner.java:209)
at com.dukascopy.dds2.greed.agent.strategy.tester.StrategyRunner.initBeforeRun(StrategyRunner.java:261)
at com.dukascopy.dds2.greed.agent.strategy.tester.StrategyRunner.run(StrategyRunner.java:320)
at java.lang.Thread.run(Thread.java:745)
2017-08-05 10:34:39.175 WARN FeedMetadataManager - No data for EUR/USD, Ticks
Exception in thread "StrategyRunner Thread" java.lang.IllegalArgumentException: No tick history for EUR/USD to create custom period candles of 1 Sec
at com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.<init>(LoadCandlesFromTicksAction.java:82)
at com.dukascopy.charts.data.datacache.customperiod.tick.LoadCandlesFromTicksAction.<init>(LoadCandlesFromTicksAction.java:124)
at com.dukascopy.charts.data.datacache.LoadCustomPeriodNumberOfCandlesAction.loadCandlesFromTicks(LoadCustomPeriodNumberOfCandlesAction.java:123)
at com.dukascopy.charts.data.datacache.LoadCustomPeriodNumberOfCandlesAction.run(LoadCustomPeriodNumberOfCandlesAction.java:110)
at com.dukascopy.charts.data.datacache.LoadNumberOfCandlesAction.run(LoadNumberOfCandlesAction.java:210)
at com.dukascopy.charts.data.datacache.FeedDataProvider.loadCandlesDataBeforeSynched(FeedDataProvider.java:874)
at com.dukascopy.dds2.greed.agent.strategy.tester.AbstractStrategyRunner.getFirstTicks(AbstractStrategyRunner.java:223)
at com.dukascopy.dds2.greed.agent.strategy.tester.AbstractStrategyRunner.getFirstTicks(AbstractStrategyRunner.java:209)
at com.dukascopy.dds2.greed.agent.strategy.tester.StrategyRunner.initBeforeRun(StrategyRunner.java:261)
at com.dukascopy.dds2.greed.agent.strategy.tester.StrategyRunner.run(StrategyRunner.java:320)
at java.lang.Thread.run(Thread.java:745)
To give you the possibility to reproduce the bug, I downloaded the newest
https://www.dukascopy.com/wiki/en/development/get-started-api/use-jforex-sdk/download-jforex-sdk sdk and started the TesterMainGUIMode.class -> I had to add following code to make this work,
// set time
long to = System.currentTimeMillis() - Period.DAILY.getInterval() * 1;
long from = to - Period.DAILY.getInterval() * 2;
client.setDataInterval(DataLoadingMethod.ALL_TICKS, from, to);
otherwise it wouldn't be working because of missing DataIntervall for the client. Maybe this is a second bug?
The exception that occured there was slightly different, but seems to be the same problem:
2017-08-05 10:29:51.250 ERROR FeedMetadataManager -
com.dukascopy.charts.data.datacache.DataCacheException
at com.dukascopy.charts.data.datacache.CurvesJsonProtocolHandler.processMessage(CurvesJsonProtocolHandler.java:1405)
at com.dukascopy.charts.data.datacache.CurvesJsonProtocolHandler.processMessage(CurvesJsonProtocolHandler.java:1330)
at com.dukascopy.charts.data.datacache.metadata.FeedMetadataManager.getFirstTimeFromDFS(FeedMetadataManager.java:153)
at com.dukascopy.charts.data.datacache.metadata.FeedMetadataManager.checkDFSFillAllCaches(FeedMetadataManager.java:214)
at com.dukascopy.charts.data.datacache.metadata.FeedMetadataManager.lambda$getTimeOfFirstCandle$0(FeedMetadataManager.java:109)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at com.dukascopy.charts.data.datacache.metadata.FeedMetadataManager.getTimeOfFirstCandle(FeedMetadataManager.java:117)
at com.dukascopy.charts.dataprovider.timed.AbstractBufferedTimedDataProvider.loadFirstDataTime(AbstractBufferedTimedDataProvider.java:652)
at com.dukascopy.charts.dataprovider.timed.AbstractBufferedTimedDataProvider$2.run(AbstractBufferedTimedDataProvider.java:703)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
2017-08-05 10:29:51.250 WARN FeedMetadataManager - No data for EUR/USD, 1 Min
Help would be much appreciated.
Thanks.