code: def validate(self,
                   asset,
                   amount,
                   portfolio,
                   algo_datetime,
                   algo_current_data):
          
  
          if self.asset is not None and self.asset != asset:
              return
  
          current_share_count = portfolio.positions[asset].amount
          shares_post_order = current_share_count + amount
  
          too_many_shares = (self.max_shares is not None and
                             abs(shares_post_order) > self.max_shares)
          if too_many_shares:
              self.handle_violation(asset, amount, algo_datetime)
  
          current_price = algo_current_data.current(asset, "price")
          value_post_order = shares_post_order * current_price
  
          too_much_value = (self.max_notional is not None and
                            abs(value_post_order) > self.max_notional)
  
          if too_much_value:
              self.handle_violation(asset, amount, algo_datetime)
docs: Fail if the given order would cause the magnitude of our position to be
          greater in shares than self.max_shares or greater in dollar value than
          self.max_notional.