Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    def testDup(self):
        w = Feed(self._inst)

        w.insert(ATR())
        with self.assertRaisesRegexp(Exception,
                                     "Workspace already has an indicator.*"):
            w.insert(ATR())
Ejemplo n.º 3
0
 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 )
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
    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 )
Ejemplo n.º 6
0
 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 )
Ejemplo n.º 7
0
    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)
Ejemplo n.º 8
0
 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 )
Ejemplo n.º 9
0
    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)
Ejemplo n.º 10
0
 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))
Ejemplo n.º 11
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)
Ejemplo n.º 12
0
 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))
Ejemplo n.º 13
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)
Ejemplo n.º 14
0
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)
Ejemplo n.º 15
0
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)
Ejemplo n.º 16
0
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)
Ejemplo n.º 17
0
 def testDup(self):
     w = Feed(self._inst)
     
     w.insert( ATR() )
     with self.assertRaisesRegexp(Exception,"Workspace already has an indicator.*"):        
         w.insert( ATR() )