예제 #1
0
    def testFirstLastBoundary(self):
        f1 = Feed(self._inst1)
        f2 = Feed(self._inst2)
        mf = MultiFeed()
        mf.register_feed(f1)
        mf.register_feed(f2)

        mf.subscribe(self.on_bars_basic)
        self._count = 0
        mf.start(first=datetime.datetime(2012, 7, 2),
                 last=datetime.datetime(2012, 7, 2))
        self.assertEqual(self._count, 1)
        self.assertEqual(mf.get_next_bars_date(),
                         datetime.datetime(2012, 7, 3))
        self._count = 0
        mf.start(first=datetime.datetime(2012, 7, 1),
                 last=datetime.datetime(2012, 7, 2))
        self.assertEqual(self._count, 1)
        self.assertEqual(mf.get_next_bars_date(),
                         datetime.datetime(2012, 7, 3))

        # 7/1 is not a trading day so first bar is actually 7/2 which is after last
        self._count = 0
        mf.start(first=datetime.datetime(2012, 7, 1),
                 last=datetime.datetime(2012, 7, 1))
        self.assertEqual(self._count, 0)
        self.assertEqual(mf.get_next_bars_date(),
                         datetime.datetime(2012, 7, 2))
예제 #2
0
 def testMarketOrderShort(self):
     self._placed_smo = False
     mf = MultiFeed()
     mf.register_feed(self._feed)
     self._broker = BacktestingBroker(10000, mf)
     mf.subscribe(self.on_bars_3)
     self._broker.getOrderUpdatedEvent().subscribe(self.on_order_update_3)
     mf.start()
예제 #3
0
 def testMarketOrder(self):
     self._placed_markorder = False
     mf = MultiFeed()
     mf.register_feed(Feed(InstrumentDb.Instance().get('AC')))
     self._broker = BacktestingFuturesBroker(1000000, mf)
     mf.subscribe(self.on_bars_1)
     self._broker.getOrderUpdatedEvent().subscribe(self.on_order_update_1)
     mf.start()
     self.assertEqual(self._broker.getCash(), 1000015.0)
     self.assertEqual(self._broker.calc_margin(), 160000.0)
예제 #4
0
 def testShortEntry(self):
     self._placed_markorder = False
     mf = MultiFeed()
     mf.register_feed(Feed(InstrumentDb.Instance().get('CT')))
     self._broker = BacktestingFuturesBroker(1000000, mf)
     mf.subscribe(self.on_bars_3)
     self._broker.getOrderUpdatedEvent().subscribe(self.on_order_update_3)
     mf.start()
     self.assertAlmostEqual(self._broker.getCash(), 1119750.0, places=2)
     self.assertEqual(self._broker.calc_margin(), 800000.0)
예제 #5
0
    def testFirstOption(self):
        f1 = Feed(self._inst1)
        f2 = Feed(self._inst2)
        mf = MultiFeed()
        mf.register_feed(f1)
        mf.register_feed(f2)

        self._count = 0
        mf.subscribe(self.on_bars_basic)
        mf.start(first=datetime.datetime(2012, 7, 1))
        self.assertEqual(self._count, 143)
예제 #6
0
 def testMarketOrderMarginCall(self):
     self._placed_markorder = False
     mf = MultiFeed()
     mf.register_feed(Feed(InstrumentDb.Instance().get('CT')))
     self._broker = BacktestingFuturesBroker(1000000, mf)
     mf.subscribe(self.on_bars_2)
     self._broker.getOrderUpdatedEvent().subscribe(self.on_order_update_2)
     with self.assertRaisesRegexp(Exception, "Margin Call"):
         mf.start()
     self.assertAlmostEqual(self._broker.getCash(), 214000.0, places=2)
     self.assertEqual(self._broker.calc_margin(), 800000.0)
예제 #7
0
 def testFirstOption(self):
     f1 = Feed(self._inst1)
     f2 = Feed(self._inst2)
     mf = MultiFeed()
     mf.register_feed(f1)
     mf.register_feed(f2)
     
     self._count = 0
     mf.subscribe(self.on_bars_basic)
     mf.start(first=datetime.datetime(2012,7,1))
     self.assertEqual(self._count, 143)
예제 #8
0
 def testFirstLast(self):
     f1 = Feed(self._inst1)
     f2 = Feed(self._inst2)
     mf = MultiFeed()
     mf.register_feed(f1)
     mf.register_feed(f2)
     
     self._count = 0
     mf.subscribe(self.on_bars_basic)
     mf.start(first=datetime.datetime(2012,7,1),last=datetime.datetime(2012,7,31))
     self.assertEqual(self._count, 22)
     self.assertEqual(mf.get_last_close('AC'), 2.565)
예제 #9
0
    def testFirstLast(self):
        f1 = Feed(self._inst1)
        f2 = Feed(self._inst2)
        mf = MultiFeed()
        mf.register_feed(f1)
        mf.register_feed(f2)

        self._count = 0
        mf.subscribe(self.on_bars_basic)
        mf.start(first=datetime.datetime(2012, 7, 1),
                 last=datetime.datetime(2012, 7, 31))
        self.assertEqual(self._count, 22)
        self.assertEqual(mf.get_last_close('AC'), 2.565)
예제 #10
0
    def testBasic(self):
        f1 = Feed(self._inst1)
        f2 = Feed(self._inst2)
        mf = MultiFeed()
        mf.register_feed(f1)
        mf.register_feed(f2)

        self.assertEqual(f1, mf.get_feed('AC'))

        self._count = 0
        mf.subscribe(self.on_bars_basic)
        mf.start()
        self.assertEqual(self._count, 257)
예제 #11
0
 def testBasic(self):
     f1 = Feed(self._inst1)
     f2 = Feed(self._inst2)
     mf = MultiFeed()
     mf.register_feed(f1)
     mf.register_feed(f2)
     
     self.assertEqual(f1, mf.get_feed('AC'))
     
     self._count = 0
     mf.subscribe(self.on_bars_basic)
     mf.start()
     self.assertEqual(self._count, 257)
예제 #12
0
    def testFirstLastBoundary(self):
        f1 = Feed(self._inst1)
        f2 = Feed(self._inst2)
        mf = MultiFeed()
        mf.register_feed(f1)
        mf.register_feed(f2)
        
        mf.subscribe(self.on_bars_basic)
        self._count = 0
        mf.start(first=datetime.datetime(2012,7,2),last=datetime.datetime(2012,7,2))
        self.assertEqual(self._count, 1)
        self.assertEqual(mf.get_next_bars_date(), datetime.datetime(2012,7,3))
        self._count = 0
        mf.start(first=datetime.datetime(2012,7,1),last=datetime.datetime(2012,7,2))
        self.assertEqual(self._count, 1)
        self.assertEqual(mf.get_next_bars_date(), datetime.datetime(2012,7,3))

        # 7/1 is not a trading day so first bar is actually 7/2 which is after last
        self._count = 0
        mf.start(first=datetime.datetime(2012,7,1),last=datetime.datetime(2012,7,1))
        self.assertEqual(self._count, 0)
        self.assertEqual(mf.get_next_bars_date(), datetime.datetime(2012,7,2))