Example #1
0
    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]
Example #2
0
 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]
Example #3
0
    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]
Example #4
0
    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]