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, ""
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, ""
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, ""
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)
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)
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, ""