def __init__(self, feed, config, stopPer, stopTrailing, smaShort, smaLong): if config['dbfeed']: feed = dbfeed.DbFeed(config['db'], [], 100, config['startDate'], config['endDate']) feed.registerInstrument(config['instrument']) else: feed = yahoofeed.Feed() feed.sanitizeBars(True) feed.addBarsFromCSV(config['instrument'], config['instrument'] + ".csv") MyBenchmark.__init__(self, feed, stopPer, stopTrailing, smaLong) self.info("%s %s %s %s" % (stopPer, stopTrailing, smaShort, smaLong)) self._smaShort = {} self._smaLong = {} self._macdPrice = {} self._macdVol = {} for instrument in feed.getRegisteredInstruments(): self._smaShort[instrument] = ma.SMA(self._feed[instrument].getPriceDataSeries(), smaShort) self._smaLong[instrument] = ma.SMA(self._feed[instrument].getPriceDataSeries(), smaLong) self._macdPrice[instrument] = macd.MACD(self._feed[instrument].getPriceDataSeries(), 12, 26, 9) self._macdVol[instrument] = macd.MACD(self._feed[instrument].getVolumeDataSeries(), 12, 26, 9)
# The if __name__ == '__main__' part is necessary if running on Windows. if __name__ == '__main__': # Config params config = { 'user': '******', 'password': '******', 'host': '127.0.0.1', 'database': 'ibex35', 'raise_on_warnings': True, } logger.log_format = "[%(levelname)s] %(message)s" startDate = datetime.date(2001, 05, 24) endDate = datetime.date(2015, 12, 21) instrument = 'GAS.MC' feed = None if DBFEED: feed = dbfeed.DbFeed(config, [], 100, startDate, endDate) feed.registerInstrument(instrument) else: feed = yahoofeed.Feed() feed.sanitizeBars(True) feed.addBarsFromCSV(instrument, instrument + ".csv") local.run(MyTaLibStrategy, feed, parameters_generator())
def onBars(self, bars): for instrument in bars.keys(): bar = bars[instrument] self.info("%s %s %s %s %s" % (instrument, bars.getDateTime(), bar.getOpen(), bar.getPrice(), bar.getField('PER'))) config = { 'user': '******', 'password': '', 'host': '127.0.0.1', 'database': 'ibex35', 'raise_on_warnings': True, } fields = ['PER'] indices = ['IBEX35'] dateStart = datetime.date(2010, 01, 04) dateEnd = datetime.date(2012, 01, 04) feed = dbfeed.DbFeed(config, fields, 100, dateStart, dateEnd) for index in indices: feed.registerIndex(index) myStrategy = MyStrategy(feed) myStrategy.run()
fields = [ 'PER', 'PBV', 'DPS', 'NDE' ] indices = [ 'IBEX35' ] capStart = 1000000 startDate = None # e.g. datetime.date(2015, 06, 01) endDate = None feed = dbfeed.DbFeed(config, fields, 10, startDate, endDate) for index in indices: feed.registerIndex(index) # Pick strategy myStrategy = None if SCENARIO == 2: myStrategy = MyBenchmark(feed, 10, capStart) elif SCENARIO == 3: rules = [ organizers.OrderRule('PBV', True) ] myStrategy = MyFundamentalStrategy(feed, 10, capStart, rules) elif SCENARIO == 4: rules = [