コード例 #1
0
 def place_order(self, security, action, price, size, algo="", algo_param={}, userdata=""):
     if size <= 0:
         print("Invalid size {}".format(size))
         return
 
     # Generate Task
     order = Order.new_order(security, action, price, size, self.ctx.trade_date, self.ctx.time,
                             order_type=common.ORDER_TYPE.LIMIT)
 
     task_id = self._get_next_task_id()
     order.task_id = task_id
 
     task = Task(task_id,
                 algo=algo, algo_param=algo_param, data=order,
                 function_name='place_order', trade_date=self.ctx.trade_date)
     # task.task_no = task_id
 
     # Send Order to Exchange
     entrust_no = self._simulator.add_order(order)
     task.data.entrust_no = entrust_no
 
     self.ctx.pm.add_task(task)
     self.entrust_no_task_id_map[entrust_no] = task.task_id
 
     order_status_ind = OrderStatusInd(order)
     order_status_ind.order_status = common.ORDER_STATUS.ACCEPTED
     self._order_status_callback(order_status_ind)
 
     return task_id, ""
コード例 #2
0
ファイル: tradegateway.py プロジェクト: sukeyisme/JAQS
 def place_order(self, security, action, price, size, algo="", algo_param={}, userdata=""):
     if size <= 0:
         print("Invalid size {}".format(size))
         return
 
     # Generate Task
     order = Order.new_order(security, action, price, size, self.ctx.trade_date, self.ctx.time,
                             order_type=common.ORDER_TYPE.LIMIT)
 
     task_id = self._get_next_task_id()
     order.task_id = task_id
 
     task = Task(task_id,
                 algo=algo, algo_param=algo_param, data=order,
                 function_name='place_order', trade_date=self.ctx.trade_date)
     # task.task_no = task_id
 
     # Send Order to Exchange
     entrust_no = self._simulator.add_order(order)
     task.data.entrust_no = entrust_no
 
     self.ctx.pm.add_task(task)
     self.entrust_no_task_id_map[entrust_no] = task.task_id
 
     order_status_ind = OrderStatusInd(order)
     order_status_ind.order_status = common.ORDER_STATUS.ACCEPTED
     self._order_status_callback(order_status_ind)
 
     return task_id, ""
コード例 #3
0
ファイル: tradegateway.py プロジェクト: zhangpeak/JAQS
    def place_order(self,
                    security,
                    action,
                    price,
                    size,
                    algo="",
                    algo_param={},
                    userdata=""):
        if size <= 0:
            print("Invalid size {}".format(size))
            return

        # Generate Order
        if algo == 'vwap':
            order_type = common.ORDER_TYPE.VWAP
        else:
            order_type = common.ORDER_TYPE.LIMIT
        order = Order.new_order(security,
                                action,
                                price,
                                size,
                                self.ctx.trade_date,
                                self.ctx.time,
                                order_type=order_type)

        # Generate Task
        task_id = self._get_next_task_id()
        order.task_id = task_id

        task = Task(task_id,
                    algo=algo,
                    algo_param=algo_param,
                    data=order,
                    function_name='place_order',
                    trade_date=self.ctx.trade_date)
        # task.task_no = task_id

        # Send Order to Exchange
        entrust_no = self._orderbook.add_order(order)
        task.data.entrust_no = entrust_no

        self.ctx.pm.add_task(task)
        self.entrust_no_task_id_map[entrust_no] = task.task_id

        order_status_ind = OrderStatusInd(order)
        order_status_ind.order_status = common.ORDER_STATUS.ACCEPTED
        # order_status_ind.task_no = task_id
        self._order_status_callback(order_status_ind)
        '''
        # TODO: not necessary
        rsp = OrderRsp(entrust_no=entrust_no, task_id=task_id, msg="")
        self.ctx.instance.strategy.on_order_rsp(rsp)
        '''

        return task_id, ""
コード例 #4
0
    def goal_portfolio(self, positions, algo="", algo_param={}, userdata=""):
        # Generate Orders
        task_id = self._get_next_task_id()

        orders = {}
        for goal in positions:
            sec, goal_size = goal['symbol'], goal['size']
            if sec in self.ctx.pm.holding_securities:
                current_size = self.ctx.pm.get_position(sec).current_size
            else:
                current_size = 0
            diff_size = goal_size - current_size
            if diff_size != 0:
                action = common.ORDER_ACTION.BUY if diff_size > 0 else common.ORDER_ACTION.SELL

                order = FixedPriceTypeOrder.new_order(sec, action, 0.0,
                                                      abs(diff_size),
                                                      self.ctx.trade_date, 0)
                if algo == 'vwap':
                    order.price_target = 'vwap'  # TODO
                elif algo.startswith('limit:'):
                    order.price_target = algo.split(':')[1].strip()
                elif algo == '':
                    order.price_target = 'vwap'
                else:
                    raise NotImplementedError(
                        "goal_portfolio algo = {}".format(algo))

                order.task_id = task_id
                order.entrust_no = self._simulator.add_order(order)
                orders[order.entrust_no] = order

        # Generate Task
        task = Task(task_id,
                    algo=algo,
                    algo_param=algo_param,
                    data=orders,
                    function_name='goal_portfolio',
                    trade_date=self.ctx.trade_date)

        self.ctx.pm.add_task(task)

        # Send Orders to Exchange
        for entrust_no, order in orders.items():
            self.entrust_no_task_id_map[entrust_no] = task.task_id

            order_status_ind = OrderStatusInd(order)
            order_status_ind.order_status = common.ORDER_STATUS.ACCEPTED

            self._order_status_callback(order_status_ind)
コード例 #5
0
ファイル: tradegateway.py プロジェクト: sukeyisme/JAQS
    def goal_portfolio(self, positions, algo="", algo_param={}, userdata=""):
        # Generate Orders
        task_id = self._get_next_task_id()
        
        orders = []
        for goal in positions:
            sec, goal_size = goal['symbol'], goal['size']
            if sec in self.ctx.pm.holding_securities:
                current_size = self.ctx.pm.get_position(sec).current_size
            else:
                current_size = 0
            diff_size = goal_size - current_size
            if diff_size != 0:
                action = common.ORDER_ACTION.BUY if diff_size > 0 else common.ORDER_ACTION.SELL
        
                order = FixedPriceTypeOrder.new_order(sec, action, 0.0, abs(diff_size), self.ctx.trade_date, 0)
                if algo == 'vwap':
                    order.price_target = 'vwap'  # TODO
                elif algo == '':
                    order.price_target = 'vwap'
                else:
                    raise NotImplementedError("goal_portfolio algo = {}".format(algo))

                order.task_id = task_id
                orders.append(order)

        # Generate Task
        task = Task(task_id,
                    algo=algo, algo_param=algo_param, data=orders,
                    function_name='goal_portfolio', trade_date=self.ctx.trade_date)

        self.ctx.pm.add_task(task)

        # Send Orders to Exchange
        for order in orders:
            entrust_no = self._simulator.add_order(order)
            # task.data.entrust_no = entrust_no
            self.entrust_no_task_id_map[entrust_no] = task.task_id
            
            order_status_ind = OrderStatusInd(order)
            order_status_ind.order_status = common.ORDER_STATUS.ACCEPTED
            self._order_status_callback(order_status_ind)
コード例 #6
0
ファイル: tradegateway.py プロジェクト: sukeyisme/JAQS
    def place_order(self, security, action, price, size, algo="", algo_param={}, userdata=""):
        if size <= 0:
            print("Invalid size {}".format(size))
            return
        
        # Generate Order
        if algo == 'vwap':
            order_type = common.ORDER_TYPE.VWAP
        else:
            order_type = common.ORDER_TYPE.LIMIT
        order = Order.new_order(security, action, price, size, self.ctx.trade_date, self.ctx.time,
                                order_type=order_type)

        # Generate Task
        task_id = self._get_next_task_id()
        order.task_id = task_id
        
        task = Task(task_id,
                    algo=algo, algo_param=algo_param, data=order,
                    function_name='place_order', trade_date=self.ctx.trade_date)
        # task.task_no = task_id
        
        # Send Order to Exchange
        entrust_no = self._orderbook.add_order(order)
        task.data.entrust_no = entrust_no
        
        self.ctx.pm.add_task(task)
        self.entrust_no_task_id_map[entrust_no] = task.task_id

        order_status_ind = OrderStatusInd(order)
        order_status_ind.order_status = common.ORDER_STATUS.ACCEPTED
        # order_status_ind.task_no = task_id
        self._order_status_callback(order_status_ind)


        '''
        # TODO: not necessary
        rsp = OrderRsp(entrust_no=entrust_no, task_id=task_id, msg="")
        self.ctx.instance.strategy.on_order_rsp(rsp)
        '''
        
        return task_id, ""