def __processJob(self, job, barsFreq, instruments, bars): parameters = job.getNextParameters() bestParams = parameters bestResult = None while parameters is not None: # Wrap the bars into a feed. feed = barfeed.OptimizerBarFeed(barsFreq, instruments, bars) # Run the strategy. self.getLogger().info( "Running strategy with parameters {}".format(parameters)) result = None try: result = self.runStrategy(feed, *parameters) except Exception as e: self.getLogger().exception( "Error running strategy with parameters {}: {}".format( parameters, e)) self.getLogger().info("Result {}".format(result)) if bestResult is None or result > bestResult: bestResult = result bestParams = parameters # Run with the next set of parameters. parameters = job.getNextParameters() assert (bestParams is not None) self.pushJobResults(job.getId(), bestResult, bestParams)
def testBaseBarFeedNoAdjClose(self): bars = [ bar.Bars({ "orcl": bar.BasicBar(datetime.datetime(2001, 1, 1), 1, 1, 1, 1, 1, None, bar.Frequency.DAY) }), bar.Bars({ "orcl": bar.BasicBar(datetime.datetime(2001, 1, 2), 1, 1, 1, 1, 1, None, bar.Frequency.DAY) }), ] barFeed = barfeed.OptimizerBarFeed(bar.Frequency.DAY, ["orcl"], bars) check_base_barfeed(self, barFeed, False)
def testDateTimesNotInOrder(self): bars = [ bar.Bars({ "orcl": bar.BasicBar(datetime.datetime(2001, 1, 2), 1, 1, 1, 1, 1, 1, bar.Frequency.DAY) }), bar.Bars({ "orcl": bar.BasicBar(datetime.datetime(2001, 1, 1), 1, 1, 1, 1, 1, 1, bar.Frequency.DAY) }), ] f = barfeed.OptimizerBarFeed(bar.Frequency.DAY, ["orcl"], bars) with self.assertRaisesRegex(Exception, "Bar date times are not in order.*"): for dt, b in f: pass
def testEmtpy(self): barFeed = barfeed.OptimizerBarFeed(bar.Frequency.DAY, ["orcl"], []) self.assertEqual(barFeed.barsHaveAdjClose(), False)