def get_orders(self, action: int, portfolio: 'Portfolio') -> 'Order': order = None # print(action, '-', self.action, ' =====action step: ', self.clock.step) '''action | sel.action | trade 1 | 0 | BUY 0 | 1 | SELL 0 | 0 | Do NTH 1 | 1 | Do NTH ''' hasOrder = False if abs(action - self.action) > 0: src = self.cash if self.action == 0 else self.asset tgt = self.asset if self.action == 0 else self.cash if src.balance == 0: # We need to check, regardless of the proposed order, if we have balance in 'src' return [] # Otherwise just return an empty order list order = proportion_order(portfolio, src, tgt, 1.0) self.action = action hasOrder = True for listener in self.listeners: listener.on_action(action, hasOrder, self.clock.step) return [order]
def get_orders(self, action: int, portfolio: 'Portfolio'): order = None if abs(action - self.action) > 0: src = self.cash if self.action == 0 else self.asset tgt = self.asset if self.action == 0 else self.cash order = proportion_order(portfolio, src, tgt, 1.0) self.action = action for listener in self.listeners: listener.on_action(action) return [order]
def get_orders(self, action: int, portfolio: 'Portfolio') -> 'Order': order = None if abs(action - self.action) > 0: src = self.cash if self.action == 0 else self.asset tgt = self.asset if self.action == 0 else self.cash if src.balance == 0: # We need to check, regardless of the proposed order, if we have balance in 'src' return [] # Otherwise just return an empty order list order = proportion_order(portfolio, src, tgt, 1.0) self.action = action for listener in self.listeners: listener.on_action(action) return [order]
def get_orders(self, action: int, portfolio: 'Portfolio'): order = None action = Actions(action) if self.action != action: src = self.cash if action == Actions.BUY else self.asset tgt = self.asset if action == Actions.BUY else self.cash # if src.balance.free().as_float() > 0: order = proportion_order(portfolio, src, tgt, 1.0) self.action = action for listener in self.listeners: listener.on_order(order) for listener in self.listeners: listener.on_action(action) return [order]