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))
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()
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)
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)
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)
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)
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)
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)
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)
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)
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))