def __new__(self, identity, modules, strategy_conf): if 'algorithm' not in modules: raise InvalidEngine(id=identity, reason='no algorithm module provided') algo_obj = utils.intuition_module(modules['algorithm']) algo_obj.identity = identity trading_algo = algo_obj(properties=strategy_conf.get('algorithm', {})) trading_algo.set_logger(dna.logging.logger('algo.' + identity)) # Use a portfolio manager if modules.get('manager'): log.info('initializing manager {}'.format(modules['manager'])) # Linking to the algorithm the configured portfolio manager trading_algo.manager = utils.intuition_module(modules['manager'])( strategy_conf.get('manager', {})) else: trading_algo.manager = None log.info('no portfolio manager used') return trading_algo
def __new__(self, identity, modules, strategy_conf): if 'algorithm' not in modules: raise InvalidEngine( id=identity, reason='no algorithm module provided') algo_obj = utils.intuition_module(modules['algorithm']) algo_obj.identity = identity trading_algo = algo_obj(properties=strategy_conf.get('algorithm', {})) trading_algo.set_logger(dna.logging.logger('algo.' + identity)) # Use a portfolio manager if modules.get('manager'): log.info('initializing manager {}'.format(modules['manager'])) # Linking to the algorithm the configured portfolio manager trading_algo.manager = utils.intuition_module(modules['manager'])( strategy_conf.get('manager', {})) else: trading_algo.manager = None log.info('no portfolio manager used') return trading_algo
def __enter__(self): # Use the given context module to grab configuration Loader = utils.intuition_module(self._ctx_module) log.info('building context', driver=self._ctx_module, data=self._ctx_infos) config, strategy = Loader(self._ctx_infos).build() # TODO Validate strategy as well self._validate(config) # From a human input (forex,4), setup a complete market structure market = universe.Market() market.parse_universe_description(config.pop('universe')) # Remove holidays and other market closed periods config['index'] = market.filter_open_days(config['index']) return {'config': config, 'strategy': strategy, 'market': market}