コード例 #1
0
    def test_load_order_completed(self):
        from objects import Order
        from os import mkdir, remove, rmdir, path
        from processes.load import load_order

        order = Order(self.shift.deliveries[0])
        file_list = order.file_list()

        # create file and directory
        mkdir(self.shift.deliveries[0].file_list()['directory'])
        with open(file_list['info'], 'w') as info_file:
            info_file.write(self.shift.deliveries[0].orders[0].csv())

        # check that file was created and baseline
        self.assertTrue(path.exists(file_list['info']))
        self.assertIsNot(order.tip, self.shift.deliveries[0].orders[0].tip)
        self.assertNotEqual(order.miles_traveled,
                            self.shift.deliveries[0].orders[0].miles_traveled)
        self.assertNotEqual(order.end_time,
                            self.shift.deliveries[0].orders[0].end_time)

        # run function
        order = load_order(order)

        # check that data was loaded correctly
        self.assertEqual(order.tip.csv(),
                         self.shift.deliveries[0].orders[0].tip.csv())
        self.assertEqual(order.miles_traveled,
                         self.shift.deliveries[0].orders[0].miles_traveled)
        self.assertEqual(order.end_time,
                         self.shift.deliveries[0].orders[0].end_time)

        # delete file and directory
        remove(file_list['info'])
        rmdir(self.shift.deliveries[0].file_list()['directory'])
コード例 #2
0
    def test_revise_order_build_confirmation(self):
        from objects import Shift, Delivery, Order, Tip
        from processes.revise import Revise_Order
        from utility.utility import now

        # id
        order = Order(Delivery(Shift(now().date())))
        test = Revise_Order(order, test=True)
        test.user_selection = '1'
        test.build_confirmation()
        # tip
        order = Order(Delivery(Shift(now().date())))
        test = Revise_Order(order, test=True)
        test.user_selection = '2'
        test.build_confirmation()
        # distance
        order = Order(Delivery(Shift(now().date())))
        test = Revise_Order(order, test=True)
        test.user_selection = '3'
        test.build_confirmation()
        # end time
        order = Order(Delivery(Shift(now().date())))
        test = Revise_Order(order, test=True)
        test.user_selection = '4'
        test.build_confirmation()
        # save
        order = Order(Delivery(Shift(now().date())))
        test = Revise_Order(order, test=True)
        test.user_selection = 's'
        test.build_confirmation()
コード例 #3
0
def load_delivery_orders(delivery):
    from objects import Order
    from os import path
    from utility.file import Read

    order_ids_file = Order(delivery).file_list()['completed_ids']
    if path.exists(order_ids_file):
        # ids
        delivery.order_ids = Read(order_ids_file).integer_list()
        # orders
        delivery.orders =\
            [Order(delivery, id).load_completed() for id in delivery.order_ids]

    return delivery
コード例 #4
0
    def test_add_order(self):
        from objects import Order

        self.assertEqual(self.delivery.orders, [])

        order_1 = Order(self.delivery, 5)
        self.delivery.add_order(order_1)
        self.assertIn(5, self.delivery.order_ids)
        self.assertIn(order_1, self.delivery.orders)

        order_2 = Order(self.delivery, 748)
        self.delivery.add_order(order_2)
        self.assertIn(748, self.delivery.order_ids)
        self.assertIn(order_2, self.delivery.orders)
コード例 #5
0
 def process(self, symbol):        
     data = self.services.bus.get_market_data()        
     self.services.logger.info("Market data received %s" % (data))
     
     if self.x >= 0:
         self.services.logger.info("Sending Order Now:")
         o = Order()
         o.side = 1
         o.price = data[symbol]["ask-1"]["price"]
         o.size = 5000000
         o.leaves = o.size
         o.symbol = symbol
         o.id = "MyOrder"
         
         self.services.order_dispatcher.new_order(o)           
     
         self.x += 1
     print "!!!!!!!!!!!!!!!!!!! ", data["a"]["event"]
     if data["a"]["event"] == "trade":
         self.services.publisher.publish("DummyAgent", {"bid": data[symbol]["bid-0"]["price"], 
                                                        "ask": data[symbol]["ask-0"]["price"], 
                                                        "bid_size": data[symbol]["bid-0"]["size"], 
                                                        "ask_size": data[symbol]["ask-0"]["size"],
                                                        "price": data[symbol]["last"]["price"],
                                                        "quantity": data[symbol]["last"]["quantity"], 
                                                        "time":  data[symbol]["time"]})
コード例 #6
0
 def process(self, symbol):        
     data = self.services.bus.get_market_data()        
     self.services.logger.info("Market data received %s" % (data))
     
     self.services.logger.info("Sending Order Now:")
     o = Order()
     o.side = 1 if str(self.parameters["side"]).lower() == "buy" else -1
     o.price = self.parameters["price"]
     o.size = self.parameters["size"]
     o.leaves = o.size
     o.symbol = "Euronext"
     o.id = "MyOrder"
     o.timeinforce = "ioc"
     o.parent = self.parameters["id"]
     
     self.services.order_dispatcher.new_order(o)
コード例 #7
0
def process_order(customerId, productId, quantity):
    order = Order(customerId=customerId,
                  productId=productId,
                  quantity=quantity)
    db.session.add(order)
    db.session.commit()
    return order
コード例 #8
0
    def build_prompt(self):
        from objects import Extra_Stop, Order
        from os import path
        from utility.utility import add_newlines

        # initial
        self.prompt = self.display_text['initial'] + '\n'
        # order
        order_index = 0
        if path.exists(Order(self.delivery).file_list()['directory']):
            order_index = 1
        self.prompt += f'O. {self.display_text["order"][order_index]}\n'
        # extra stop
        extra_stop_index = 0
        if path.exists(Extra_Stop(self.delivery).file_list()['directory']):
            extra_stop_index = 1
        self.prompt +=\
            f'E. {self.display_text["extra_stop"][extra_stop_index]}\n'
        # complete
        self.prompt += f'C. {self.display_text["end"]}\n'
        # view
        self.prompt += f'V. {self.display_text["view"]}\n'
        # revise
        self.prompt += f'R. {self.display_text["revise"]}\n'
        # back
        self.prompt += f'B. {self.display_text["back"]}\n'

        self.prompt = add_newlines(self.prompt)
コード例 #9
0
    def build_confirmation_text(self):
        import re
        from os import path

        # delivery
        if self.user_selection.lower() == 'o':
            from objects import Order
            if not path.exists(Order(self.delivery).file_list()['directory']):
                self.confirmation_text = self.display_text['order'][0]
            else:
                self.confirmation_text = self.display_text['order'][1]
        # extra stop
        elif self.user_selection.lower() == 'e':
            from objects import Extra_Stop
            extra_stop_directory =\
                Extra_Stop(self.delivery).file_list()['directory']
            if not path.exists(extra_stop_directory):
                self.confirmation_text = self.display_text['extra_stop'][0]
            else:
                self.confirmation_text = self.display_text['extra_stop'][1]
        # complete
        elif self.user_selection.lower() == 'c':
            self.confirmation_text = self.display_text['end']
        # revise
        elif self.user_selection.lower() == 'r':
            self.confirmation_text = self.display_text['revise']
コード例 #10
0
ファイル: TD1_agent.py プロジェクト: nicoxx/simulator
 def process(self, symbol):        
     data = self.services.bus.get_market_data()        
     
     
     pretty(data) #display market data
     
     l = list()
      
     for item1 in data.items():
         if type(item1[1]) is not datetime and type(item1[1]) is not str:
             for item2 in item1[1].items():
                 if (item2[0][:3] == 'ask' and str(self.parameters["side"]).lower() == "buy") or (item2[0][:3] == 'bid' and str(self.parameters["side"]).lower() == "sell") :
                     l.append((item2[1]["price"], item1[0]))
      
     
     if str(self.parameters["side"]).lower() == "buy":
         l.sort(key=lambda x: x[0])
     else:
         l.sort(key=lambda x: -x[0])
     
     print(l)    #display list of prices by market ordered by prices
     
     self.current_size  = self.parameters["size"]
           
     i = 0
     for pair in l:  
         if self.current_size == 0:  #stop if no more deals
             break
         
         
         o = Order()
         o.side = 1 if str(self.parameters["side"]).lower() == "buy" else -1
         o.price = pair[0]
         
     
         #dont buy / sell if the price is too high or too low
         if o.price < self.parameters["price"] and o.side == -1:
             break
         if o.price > self.parameters["price"] and o.side == 1:
             break
                    
         o.size = self.current_size
         o.leaves = o.size
         o.symbol = pair[1]
         o.id = "MyOrder_" + str(i)
         o.timeinforce = "ioc"
         o.parent = self.parameters["id"]
         
         self.services.logger.info("Sending Order " + str(i))
         self.services.order_dispatcher.new_order(o)
         i = i +1
コード例 #11
0
    def result(self):
        # order
        if self.user_selection.lower() == 'o':
            from objects import Order
            import os
            from processes.consolidate import consolidate_order
            from processes.track import track_order

            order = Order(self.delivery)
            if os.path.exists(order.file_list()['directory']):
                order.load_current()
            order = track_order(order)
            consolidate_order(order)
            self.delivery.add_order(order)
        # extra stop
        elif self.user_selection.lower() == 'e':
            from objects import Extra_Stop
            import os
            from processes.consolidate import consolidate_extra_stop
            from processes.track import track_extra_stop

            extra_stop = Extra_Stop(self.delivery).load_current()
            extra_stop = track_extra_stop(extra_stop)
            consolidate_extra_stop(extra_stop)
            self.delivery.add_extra_stop(extra_stop)
        # complete
        elif self.user_selection.lower() == 'c':
            from processes.consolidate import consolidate_delivery
            from processes.track import end_delivery

            self.delivery = end_delivery(self.delivery)
            consolidate_delivery(self.delivery)
            self.loop_condition = False
            self.complete = True
        # view
        elif self.user_selection.lower() == 'v':
            View_Delivery_Menu(self.delivery)
        # revise
        elif self.user_selection.lower() == 'r':
            from processes.revise import Revise_Delivery
            revise_delivery = Revise_Delivery(self.delivery)
            self.delivery = revise_delivery.delivery
        # back
        elif self.user_selection.lower() == 'b':
            self.loop_condition = False
コード例 #12
0
    def test_view_order_main(self):
        from datetime import datetime
        from objects import Shift, Delivery, Order, Tip
        from processes.view import view_order
        from utility.utility import now, To_Datetime

        # no data entered
        order = Order(Delivery(Shift(now().date())), 123)
        test = view_order(order)
        expected = 'Order I.D. #: 123\n'\
                   '\tTotal tip: $0.00\n'
        self.assertEqual(test, expected)
        # card
        order.tip = Tip(3.97)
        test = view_order(order)
        expected = 'Order I.D. #: 123\n'\
                   '\tCard tip: $3.97\n'
        self.assertEqual(test, expected)
        # cash
        order.tip = Tip(cash=3.97)
        test = view_order(order)
        expected = 'Order I.D. #: 123\n'\
                   '\tCash tip: $3.97\n'
        self.assertEqual(test, expected)
        # card and cash
        order.tip = Tip(3, 2)
        test = view_order(order)
        expected = 'Order I.D. #: 123\n'\
                   '\tTotal tip: $5.00\n'\
                   '\tCard tip: $3.00\n'\
                   '\tCash tip: $2.00\n'
        self.assertEqual(test, expected)
        # unknown
        order.tip = Tip(unknown=3.97)
        test = view_order(order)
        expected = 'Order I.D. #: 123\n'\
                   '\tUnknown tip: $3.97\n'
        self.assertEqual(test, expected)
        # distance
        order.miles_traveled = 3.9
        test = view_order(order)
        expected = 'Order I.D. #: 123\n'\
                   '\tUnknown tip: $3.97\n'\
                   '\tDistance to address: 3.9 miles\n'
        self.assertEqual(test, expected)
        # end time
        order.end_time = datetime.strptime('15:27:42', '%H:%M:%S')
        test = view_order(order)
        expected = 'Order I.D. #: 123\n'\
                   '\tUnknown tip: $3.97\n'\
                   '\tDistance to address: 3.9 miles\n'\
                   '\tCompleted at: 03:27:42 PM\n'
        self.assertEqual(test, expected)
コード例 #13
0
    def test_revise_order_build_prompt(self):
        from objects import Shift, Delivery, Order, Tip
        from processes.revise import Revise_Order
        from utility.utility import now

        order = Order(Delivery(Shift(now().date())))
        test = Revise_Order(order, test=True)
        test.build_prompt()
        expected =\
            '\n- Revise Order -\n'\
            '1. Add/edit I.D.\n'\
            '2. Add/edit tip\n'\
            '3. Add/edit miles traveled\n'\
            '4. Add/edit end time\n'\
            'V. View current order values\n'\
            'S. Save changes\n'\
            'B. Go back\n'
        self.assertEqual(test.prompt, expected)
コード例 #14
0
    def test_revise_delivery_build_prompt(self):
        from datetime import datetime
        from processes.revise import Revise_Delivery
        from objects import Shift, Delivery, Order, Extra_Stop
        from utility.utility import now

        # no data added yet
        delivery = Delivery(Shift(now().date()))
        test = Revise_Delivery(delivery, test=True)
        test.build_prompt()
        expected =\
            '\n- Revise Delivery -\n'\
            'Please select an option:\n'\
            '1. Add start time\n'\
            '2. Add miles traveled\n'\
            '3. Add average speed\n'\
            '4. Add end time\n'\
            'O. Add order\n'\
            'V. View current delivery\n'\
            'S. Save changes\n'\
            'B. Go back\n'
        self.assertEqual(test.prompt, expected)
        # start time added
        test.delivery.start_time = datetime.strptime('15:27:42', '%H:%M:%S')
        test.build_prompt()
        expected =\
            '\n- Revise Delivery -\n'\
            'Please select an option:\n'\
            '1. Revise start time\n'\
            '2. Add miles traveled\n'\
            '3. Add average speed\n'\
            '4. Add end time\n'\
            'O. Add order\n'\
            'V. View current delivery\n'\
            'S. Save changes\n'\
            'B. Go back\n'
        self.assertEqual(test.prompt, expected)
        # miles traveled added
        test.delivery.miles_traveled = 4.7
        test.build_prompt()
        expected =\
            '\n- Revise Delivery -\n'\
            'Please select an option:\n'\
            '1. Revise start time\n'\
            '2. Revise miles traveled\n'\
            '3. Add average speed\n'\
            '4. Add end time\n'\
            'O. Add order\n'\
            'V. View current delivery\n'\
            'S. Save changes\n'\
            'B. Go back\n'
        self.assertEqual(test.prompt, expected)
        # average speed added
        test.delivery.average_speed = 17
        test.build_prompt()
        expected =\
            '\n- Revise Delivery -\n'\
            'Please select an option:\n'\
            '1. Revise start time\n'\
            '2. Revise miles traveled\n'\
            '3. Revise average speed\n'\
            '4. Add end time\n'\
            'O. Add order\n'\
            'V. View current delivery\n'\
            'S. Save changes\n'\
            'B. Go back\n'
        self.assertEqual(test.prompt, expected)
        # end time added
        test.delivery.end_time = datetime.strptime('15:37:42', '%H:%M:%S')
        test.build_prompt()
        expected =\
            '\n- Revise Delivery -\n'\
            'Please select an option:\n'\
            '1. Revise start time\n'\
            '2. Revise miles traveled\n'\
            '3. Revise average speed\n'\
            '4. Revise end time\n'\
            'O. Add order\n'\
            'V. View current delivery\n'\
            'S. Save changes\n'\
            'B. Go back\n'
        self.assertEqual(test.prompt, expected)
        # one order added
        test.delivery.order_id = [0]
        test.delivery.orders = [Order(delivery)]
        test.build_prompt()
        expected =\
            '\n- Revise Delivery -\n'\
            'Please select an option:\n'\
            '1. Revise start time\n'\
            '2. Revise miles traveled\n'\
            '3. Revise average speed\n'\
            '4. Revise end time\n'\
            'O. Revise order/Add order\n'\
            'V. View current delivery\n'\
            'S. Save changes\n'\
            'B. Go back\n'
        self.assertEqual(test.prompt, expected)
        # two orders added
        test.delivery.order_id = [0, 1]
        test.delivery.orders = [Order(delivery), Order(delivery, 1)]
        test.build_prompt()
        expected =\
            '\n- Revise Delivery -\n'\
            'Please select an option:\n'\
            '1. Revise start time\n'\
            '2. Revise miles traveled\n'\
            '3. Revise average speed\n'\
            '4. Revise end time\n'\
            'O. Select an order/Add order\n'\
            'V. View current delivery\n'\
            'S. Save changes\n'\
            'B. Go back\n'
        self.assertEqual(test.prompt, expected)
        # extra stop added
        test.delivery.extra_stop_id = [0]
        test.delivery.extra_stops = [Extra_Stop(delivery)]
        test.build_prompt()
        expected =\
            '\n- Revise Delivery -\n'\
            'Please select an option:\n'\
            '1. Revise start time\n'\
            '2. Revise miles traveled\n'\
            '3. Revise average speed\n'\
            '4. Revise end time\n'\
            'O. Select an order/Add order\n'\
            'E. Revise extra stop\n'\
            'V. View current delivery\n'\
            'S. Save changes\n'\
            'B. Go back\n'
        self.assertEqual(test.prompt, expected)
        # two extra stops added
        test.delivery.extra_stop_id = [0, 1]
        test.delivery.extra_stops =\
            [Extra_Stop(delivery), Extra_Stop(delivery, 1)]
        test.build_prompt()
        expected =\
            '\n- Revise Delivery -\n'\
            'Please select an option:\n'\
            '1. Revise start time\n'\
            '2. Revise miles traveled\n'\
            '3. Revise average speed\n'\
            '4. Revise end time\n'\
            'O. Select an order/Add order\n'\
            'E. Select an extra stop\n'\
            'V. View current delivery\n'\
            'S. Save changes\n'\
            'B. Go back\n'
        self.assertEqual(test.prompt, expected)