'Before any order is executed by TradingAlgorithm, this method should be
called *exactly once* on each registered TradingControl object.
If the specified asset and amount do not violate this TradingControl\'s
restraint given the information in `portfolio`, this method should
return None and have no externally-visible side-effects.
If the desired order violates this TradingControl\'s contraint, this
method should call self.fail(asset, amount).'

@abc.abstractmethod
def validate(self, asset, amount, portfolio, algo_datetime, algo_current_data):

    raise NotImplementedError
