Пример #1
0
    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
Пример #2
0
    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
Пример #3
0
    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}