'Fail if the magnitude of the given order exceeds either self.max_shares
or self.max_notional.'

def validate(self, asset, amount, portfolio, algo_datetime, algo_current_data):

    if ((self.asset is not None) and (self.asset != asset)):
        return
    if ((self.max_shares is not None) and (abs(amount) > self.max_shares)):
        self.handle_violation(asset, amount, algo_datetime)
    current_asset_price = algo_current_data.current(asset, 'price')
    order_value = (amount * current_asset_price)
    too_much_value = ((self.max_notional is not None) and (abs(order_value) > self.max_notional))
    if too_much_value:
        self.handle_violation(asset, amount, algo_datetime)
