def test_leave_qty(self): order = Order( NewOrderRequest(cl_id='test', cl_ord_id=1, inst_id=1, action=OrdAction.BUY, type=OrdType.LIMIT, qty=1000, limit_price=18.5)) self.assertEqual(1000, order.leave_qty()) er1 = ExecutionReport(cl_id='test', cl_ord_id=1, ord_id=1, er_id=1, inst_id=1, last_qty=800, last_price=18.4, status=OrdStatus.PARTIALLY_FILLED) order.on_exec_report(er1) self.assertEqual(200, order.leave_qty()) er2 = ExecutionReport(cl_id='test', cl_ord_id=1, ord_id=1, er_id=2, inst_id=1, last_qty=200, last_price=18.4, status=OrdStatus.FILLED) order.on_exec_report(er2) self.assertEqual(0, order.leave_qty()) self.assertTrue(order.is_done()) self.assertEquals(OrdStatus.FILLED, order.status)
def test_exec_report(self): order = Order( NewOrderRequest(cl_id='test', cl_ord_id=1, inst_id=1, action=OrdAction.BUY, type=OrdType.LIMIT, qty=1000, limit_price=18.5)) self.assertEqual(1000, order.leave_qty()) self.assertEqual(0, len(order.get_events(ExecutionReport))) er1 = ExecutionReport(cl_id='test', cl_ord_id=1, ord_id=1, er_id=1, inst_id=1, last_qty=800, last_price=18.4, status=OrdStatus.PARTIALLY_FILLED) order.on_exec_report(er1) self.assertEqual(1, len(order.get_events(ExecutionReport))) self.assertTrue(er1 in order.get_events(ExecutionReport)) self.assertEqual(er1.ord_id, order.broker_ord_id) self.assertEqual(800, order.last_qty) self.assertAlmostEqual(18.4, order.last_price) self.assertEqual(800, order.filled_qty) self.assertAlmostEqual(18.4, order.avg_price) self.assertEqual(OrdStatus.PARTIALLY_FILLED, order.status) er2 = ExecutionReport(cl_id='test', cl_ord_id=1, ord_id=1, er_id=2, inst_id=1, last_qty=200, last_price=18.4, status=OrdStatus.FILLED) order.on_exec_report(er2) self.assertEqual(2, len(order.get_events(ExecutionReport))) self.assertTrue(er1 in order.get_events(ExecutionReport)) self.assertTrue(er2 in order.get_events(ExecutionReport)) self.assertEqual(er2.ord_id, order.broker_ord_id) self.assertEqual(200, order.last_qty) self.assertAlmostEqual(18.4, order.last_price) self.assertEqual(1000, order.filled_qty) self.assertAlmostEqual(18.4, order.avg_price) self.assertEqual(OrdStatus.FILLED, order.status)
def test_exec_report(self): order = Order( ModelFactory.build_order_state_from_nos( ModelFactory.build_new_order_request(timestamp=0, cl_id='TestClient', cl_ord_id="1", portf_id="TestPortf", broker_id="TestBroker", inst_id="HSI@SEHK", action=Buy, type=Limit, qty=1000, limit_price=18.5))) self.assertEqual(1000, order.leave_qty()) self.assertEqual(0, len(order.get_events(ExecutionReport))) er1 = ModelFactory.build_execution_report(timestamp=0, broker_id="TestBroker", broker_event_id="1", broker_ord_id="1", cl_id='TestClient', cl_ord_id="1", inst_id="HSI@SEHK", last_qty=800, last_price=18.4, status=PartiallyFilled) order.on_exec_report(er1) self.assertEqual(1, len(order.get_events(ExecutionReport))) self.assertTrue(er1 in order.get_events(ExecutionReport)) self.assertEqual(er1.broker_ord_id, order.broker_ord_id()) self.assertEqual(800, order.last_qty()) self.assertAlmostEqual(18.4, order.last_price()) self.assertEqual(800, order.filled_qty()) self.assertAlmostEqual(18.4, order.avg_price()) self.assertEqual(PartiallyFilled, order.status()) er2 = ModelFactory.build_execution_report(timestamp=0, broker_id="TestBroker", broker_event_id="1", broker_ord_id="1", cl_id='TestClient', cl_ord_id="1", inst_id="HSI@SEHK", last_qty=200, last_price=18.4, status=Filled) order.on_exec_report(er2) self.assertEqual(2, len(order.get_events(ExecutionReport))) self.assertTrue(er1 in order.get_events(ExecutionReport)) self.assertTrue(er2 in order.get_events(ExecutionReport)) self.assertEqual(er2.broker_ord_id, order.broker_ord_id()) self.assertEqual(200, order.last_qty()) self.assertAlmostEqual(18.4, order.last_price()) self.assertEqual(1000, order.filled_qty()) self.assertAlmostEqual(18.4, order.avg_price()) self.assertEqual(Filled, order.status())
def test_leave_qty(self): order = Order( ModelFactory.build_order_state_from_nos( ModelFactory.build_new_order_request(timestamp=0, cl_id='TestClient', cl_ord_id="1", portf_id="TestPortf", broker_id="TestBroker", inst_id="HSI@SEHK", action=Buy, type=Limit, qty=1000, limit_price=18.5))) self.assertEqual(1000, order.leave_qty()) er1 = ModelFactory.build_execution_report(timestamp=0, broker_id="TestBroker", broker_event_id="1", broker_ord_id="1", cl_id='TestClient', cl_ord_id="1", inst_id="HSI@SEHK", last_qty=800, last_price=18.4, status=PartiallyFilled) order.on_exec_report(er1) self.assertEqual(200, order.leave_qty()) er2 = ModelFactory.build_execution_report(timestamp=0, broker_id="TestBroker", broker_event_id="2", broker_ord_id="1", cl_id='TestClient', cl_ord_id="1", inst_id="HSI@SEHK", last_qty=200, last_price=18.4, status=Filled) order.on_exec_report(er2) self.assertEqual(0, order.leave_qty()) self.assertTrue(order.is_done()) self.assertEquals(Filled, order.status())
def test_exec_report_with_exceed_qty(self): order = Order( ModelFactory.build_order_state_from_nos( ModelFactory.build_new_order_request(timestamp=0, cl_id='TestClient', cl_ord_id="1", portf_id="TestPortf", broker_id="TestBroker", inst_id="HSI@SEHK", action=Buy, type=Limit, qty=1000, limit_price=18.5))) self.assertEqual(1000, order.leave_qty()) self.assertEqual(0, len(order.get_events(ExecutionReport))) er1 = ModelFactory.build_execution_report(timestamp=0, broker_id="TestBroker", broker_event_id="1", broker_ord_id="1", cl_id='TestClient', cl_ord_id="1", inst_id="HSI@SEHK", last_qty=800, last_price=18.4, status=PartiallyFilled) order.on_exec_report(er1) er2 = ModelFactory.build_execution_report(timestamp=0, broker_id="TestBroker", broker_event_id="2", broker_ord_id="1", cl_id='TestClient', cl_ord_id="1", inst_id="HSI@SEHK", last_qty=200, last_price=18.4, status=Filled) order.on_exec_report(er2) er3 = ModelFactory.build_execution_report(timestamp=0, broker_id="TestBroker", broker_event_id="3", broker_ord_id="1", cl_id='TestClient', cl_ord_id="1", inst_id="HSI@SEHK", last_qty=100, last_price=18.4, status=Filled) with self.assertRaises(Exception) as ex: order.on_exec_report(er3)