예제 #1
0
    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)
예제 #2
0
    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())
예제 #3
0
    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)
예제 #4
0
    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)