'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.'

@api_method
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)
