code: def set_max_position_size(self,
                                asset=None,
                                max_shares=None,
                                max_notional=None,
                                on_error='fail'):
          
          control = MaxPositionSize(asset=asset,
                                    max_shares=max_shares,
                                    max_notional=max_notional,
                                    on_error=on_error)
          self.register_trading_control(control)
docs: Set a limit on the number of shares and/or dollar value held for the
          given sid. Limits are treated as absolute values and are enforced at
          the time that the algo attempts to place an order for sid. This means
          that it's possible to end up with more than the max number of shares
          due to splits/dividends, and more than the max notional due to price
          improvement.
  
          If an algorithm attempts to place an order that would result in
          increasing the absolute value of shares/dollar value exceeding one of
          these limits, raise a TradingControlException.
  
          Parameters
          ----------
          asset : Asset, optional
              If provided, this sets the guard only on positions in the given
              asset.
          max_shares : int, optional
              The maximum number of shares to hold for an asset.
          max_notional : float, optional
              The maximum value to hold for an asset.