def testBasic3(self): w = Feed(self._inst) w.insert(talibfunc.ATR('ATR10', w, 10)) self.assertEqual(len(w.values()), 7) self.assertEqual(len(w.values()[0]), 252) self.assertAlmostEqual(w.get_series('ATR10')[251], 0.031196, places=6)
def testDup(self): w = Feed(self._inst) w.insert(ATR()) with self.assertRaisesRegexp(Exception, "Workspace already has an indicator.*"): w.insert(ATR())
def testBasic3(self): w = Feed(self._inst) w.insert( talibfunc.ATR('ATR10',w,10) ) self.assertEqual( len(w.values()), 7 ) self.assertEqual( len(w.values()[0]), 252 ) self.assertAlmostEqual( w.get_series('ATR10')[251], 0.031196, places=6 )
def testCum(self): w = Feed(self._inst) w.insert(talibfunc.SMA('SMA50', w, 50)) w.insert(CUM(name='cum2(SMA50)', period=2, baseIndicator='SMA50')) # just going to spot check a few values randomly (but hard-coded) # we know that the base indicator is NAN up through at least 50 cum = w.get_series('cum2(SMA50)') base = w.get_series('SMA50') self.assertAlmostEqual(cum[79], base[79] + base[78], places=4) self.assertAlmostEqual(cum[112], base[112] + base[111], places=4) self.assertAlmostEqual(cum[176], base[176] + base[175], places=4)
def testCum(self): w = Feed(self._inst) w.insert( talibfunc.SMA('SMA50',w,50)) w.insert( CUM( name='cum2(SMA50)', period=2, baseIndicator='SMA50') ) # just going to spot check a few values randomly (but hard-coded) # we know that the base indicator is NAN up through at least 50 cum = w.get_series('cum2(SMA50)') base = w.get_series('SMA50') self.assertAlmostEqual( cum[79], base[79] + base[78], places=4 ) self.assertAlmostEqual( cum[112], base[112] + base[111], places=4 ) self.assertAlmostEqual( cum[176], base[176] + base[175], places=4 )
def testBasic2(self): w = Feed(self._inst) w.insert( talibfunc.MAX('MAX50',w,50) ) w.insert( talibfunc.MAX('MAX25',w,25) ) w.insert( talibfunc.MIN('MIN50',w,50) ) w.insert( talibfunc.MIN('MIN25',w,25) ) self.assertEqual( len(w.values()), 10 ) self.assertEqual( len(w.values()[0]), 252 ) self.assertAlmostEqual( w.get_series('MAX50')[232], 2.459 ) self.assertAlmostEqual( w.get_series('MAX25')[231], 2.448 ) self.assertAlmostEqual( w.get_series('MIN50')[230], 2.267 ) self.assertAlmostEqual( w.get_series('MIN25')[229], 2.289 )
def testBasic2(self): w = Feed(self._inst) w.insert(talibfunc.MAX('MAX50', w, 50)) w.insert(talibfunc.MAX('MAX25', w, 25)) w.insert(talibfunc.MIN('MIN50', w, 50)) w.insert(talibfunc.MIN('MIN25', w, 25)) self.assertEqual(len(w.values()), 10) self.assertEqual(len(w.values()[0]), 252) self.assertAlmostEqual(w.get_series('MAX50')[232], 2.459) self.assertAlmostEqual(w.get_series('MAX25')[231], 2.448) self.assertAlmostEqual(w.get_series('MIN50')[230], 2.267) self.assertAlmostEqual(w.get_series('MIN25')[229], 2.289)
def testBasic(self): w = Feed(self._inst) w.insert( ATR() ) w.insert( talibfunc.SMA('SMA10',w,10)) self.assertEqual( len(w.values()), 8 ) self.assertEqual( len(w.values()[0]), 252 ) self.assertEqual( w.values()[0][251], datetime.datetime(2013,1,18,0,0) ) self.assertTrue( math.isnan(w.get_series('ATR')[5])) self.assertTrue( math.isnan(w.get_series('ATR')[98])) self.assertAlmostEqual( w.get_series('ATR')[99], 0.03493, places=5 ) self.assertAlmostEqual( w.get_series('ATR')[251], 0.03307, places=5 ) self.assertAlmostEqual( w.get_series('SMA10')[251], 2.2921 ) self.assertAlmostEqual( w.get_series('SMA10')[188], 2.3989 )
def testBasic(self): w = Feed(self._inst) w.insert(ATR()) w.insert(talibfunc.SMA('SMA10', w, 10)) self.assertEqual(len(w.values()), 8) self.assertEqual(len(w.values()[0]), 252) self.assertEqual(w.values()[0][251], datetime.datetime(2013, 1, 18, 0, 0)) self.assertTrue(math.isnan(w.get_series('ATR')[5])) self.assertTrue(math.isnan(w.get_series('ATR')[98])) self.assertAlmostEqual(w.get_series('ATR')[99], 0.03493, places=5) self.assertAlmostEqual(w.get_series('ATR')[251], 0.03307, places=5) self.assertAlmostEqual(w.get_series('SMA10')[251], 2.2921) self.assertAlmostEqual(w.get_series('SMA10')[188], 2.3989)
def testCursor(self): w = Feed(self._inst) w.insert( talibfunc.ATR('ATR10',w,10) ) w.set_cursor(None) self.assertEqual(w.get_last_close(), 0.0 ) b = w.get_current_bar() self.assertEqual(b.datetime(), datetime.datetime(2012,1,23,0,0)) self.assertTrue(math.isnan(b.ATR10())) self.assertEqual(w.get_next_bar_date(), datetime.datetime(2012,1,24,0,0)) count = 1 while w.get_next_bar_date()!= None: count += 1 lastbar = w.get_current_bar() self.assertEqual(count, 252) self.assertEqual(lastbar.datetime(),datetime.datetime(2013,1,18,0,0))
def testPriceVelocity(self): w = Feed(self._inst) w.insert( talibfunc.SMA('SMA50',w,50)) w.insert( PriceVelocity('PVEL',period=10,baseIndicator='SMA50') ) self.assertEqual( len(w.values()), 8 ) self.assertEqual( len(w.values()[0]), 252 ) self.assertAlmostEqual( w.get_series('PVEL')[251], -0.001576, places=4 ) feedout = '%s/writefeed.csv' % os.path.dirname(__file__) wf = open(feedout,'w') w.write_csv(wf) wf.close() self.assertTrue(test_util.file_compare('%s/writefeed.refcsv' % os.path.dirname(__file__), feedout)) os.remove(feedout)
def testCursor(self): w = Feed(self._inst) w.insert(talibfunc.ATR('ATR10', w, 10)) w.set_cursor(None) self.assertEqual(w.get_last_close(), 0.0) b = w.get_current_bar() self.assertEqual(b.datetime(), datetime.datetime(2012, 1, 23, 0, 0)) self.assertTrue(math.isnan(b.ATR10())) self.assertEqual(w.get_next_bar_date(), datetime.datetime(2012, 1, 24, 0, 0)) count = 1 while w.get_next_bar_date() != None: count += 1 lastbar = w.get_current_bar() self.assertEqual(count, 252) self.assertEqual(lastbar.datetime(), datetime.datetime(2013, 1, 18, 0, 0))
def testPriceVelocity(self): w = Feed(self._inst) w.insert(talibfunc.SMA('SMA50', w, 50)) w.insert(PriceVelocity('PVEL', period=10, baseIndicator='SMA50')) self.assertEqual(len(w.values()), 8) self.assertEqual(len(w.values()[0]), 252) self.assertAlmostEqual(w.get_series('PVEL')[251], -0.001576, places=4) feedout = '%s/writefeed.csv' % os.path.dirname(__file__) wf = open(feedout, 'w') w.write_csv(wf) wf.close() self.assertTrue( test_util.file_compare( '%s/writefeed.refcsv' % os.path.dirname(__file__), feedout)) os.remove(feedout)
class Test(unittest.TestCase): def setUp(self): manifest = '%s/data/manifest1.csv' % os.path.dirname(__file__) self._db = InstrumentDb.Instance() self._db.load(manifest) self._feed = Feed(self._db.get('RR')) self._feed.insert(talibfunc.SMA('SMA50', self._feed, 50)) self._feed.insert(talibfunc.SMA('SMA100', self._feed, 100)) self._feed.insert(talibfunc.MAX('MAX50', self._feed, 50)) self._feed.insert(talibfunc.MIN('MIN50', self._feed, 50)) self._feed.insert(talibfunc.ATR('ATR10', self._feed, 10)) def tearDown(self): pass def testBasic(self): mf = MultiFeed() mf.register_feed(self._feed) strat = MyStrategy(mf) # Attach a few analyzers to the strategy before executing it. retAnalyzer = returns.Returns() strat.attachAnalyzer(retAnalyzer) sharpeRatioAnalyzer = sharpe.SharpeRatio() strat.attachAnalyzer(sharpeRatioAnalyzer) drawDownAnalyzer = drawdown.DrawDown() strat.attachAnalyzer(drawDownAnalyzer) tradesAnalyzer = trades.Trades() strat.attachAnalyzer(tradesAnalyzer) mf.start() strat.exitPositions() self.assertAlmostEqual(strat.getResult(), 996193.19, places=2) self.assertEqual(tradesAnalyzer.getCount(), 2) self.assertEqual(tradesAnalyzer.getProfitableCount(), 0) self.assertEqual(tradesAnalyzer.getUnprofitableCount(), 2) tlog = '%s/trade.log' % os.path.dirname(__file__) tradesAnalyzer.writeTradeLog(tlog) self.assertTrue( test_util.file_compare( '%s/trade1.reflog' % os.path.dirname(__file__), tlog)) os.remove(tlog)
class Test(unittest.TestCase): def setUp(self): manifest = "%s/data/manifest1.csv" % os.path.dirname(__file__) self._db = InstrumentDb.Instance() self._db.load(manifest) self._feed = Feed(self._db.get("RR")) self._feed.insert(talibfunc.SMA("SMA50", self._feed, 50)) self._feed.insert(talibfunc.SMA("SMA100", self._feed, 100)) self._feed.insert(talibfunc.MAX("MAX50", self._feed, 50)) self._feed.insert(talibfunc.MIN("MIN50", self._feed, 50)) self._feed.insert(talibfunc.ATR("ATR10", self._feed, 10)) def tearDown(self): pass def testBasic(self): mf = MultiFeed() mf.register_feed(self._feed) strat = MyStrategy(mf) # Attach a few analyzers to the strategy before executing it. retAnalyzer = returns.Returns() strat.attachAnalyzer(retAnalyzer) sharpeRatioAnalyzer = sharpe.SharpeRatio() strat.attachAnalyzer(sharpeRatioAnalyzer) drawDownAnalyzer = drawdown.DrawDown() strat.attachAnalyzer(drawDownAnalyzer) tradesAnalyzer = trades.Trades() strat.attachAnalyzer(tradesAnalyzer) mf.start() strat.exitPositions() self.assertAlmostEqual(strat.getResult(), 996193.19, places=2) self.assertEqual(tradesAnalyzer.getCount(), 2) self.assertEqual(tradesAnalyzer.getProfitableCount(), 0) self.assertEqual(tradesAnalyzer.getUnprofitableCount(), 2) tlog = "%s/trade.log" % os.path.dirname(__file__) tradesAnalyzer.writeTradeLog(tlog) self.assertTrue(test_util.file_compare("%s/trade1.reflog" % os.path.dirname(__file__), tlog)) os.remove(tlog)
class Test(unittest.TestCase): def setUp(self): manifest = '%s/data/manifest1.csv' % os.path.dirname(__file__) self._db = InstrumentDb.Instance() self._db.load(manifest) self._feed = Feed(self._db.get('AC')) self._feed.insert( talibfunc.SMA('SMA50',self._feed,50) ) self._feed.insert( talibfunc.SMA('SMA100',self._feed,100) ) self._feed.insert( talibfunc.MAX('MAX50',self._feed,50) ) self._feed.insert( talibfunc.MIN('MIN50',self._feed,50) ) self._feed.insert( talibfunc.ATR('ATR10',self._feed,10) ) def tearDown(self): pass def testBasic(self): mf = MultiFeed() mf.register_feed(self._feed) strat = MyStrategy(mf) # Attach a few analyzers to the strategy before executing it. retAnalyzer = returns.Returns() strat.attachAnalyzer(retAnalyzer) sharpeRatioAnalyzer = sharpe.SharpeRatio() strat.attachAnalyzer(sharpeRatioAnalyzer) drawDownAnalyzer = drawdown.DrawDown() strat.attachAnalyzer(drawDownAnalyzer) tradesAnalyzer = trades.Trades() strat.attachAnalyzer(tradesAnalyzer) mf.start() self.assertAlmostEqual(strat.getResult(),1007071.67,places=2) self.assertEqual(tradesAnalyzer.getCount(),1) self.assertEqual(tradesAnalyzer.getProfitableCount(),1) self.assertEqual(tradesAnalyzer.getUnprofitableCount(),0)
def testDup(self): w = Feed(self._inst) w.insert( ATR() ) with self.assertRaisesRegexp(Exception,"Workspace already has an indicator.*"): w.insert( ATR() )