Exemplo n.º 1
0
    def add_comb(self, comb, settings):
        """ 添加策略组合组合

        Args:
            comb (list): 一个策略组合
        """
        self._combs.append(comb)
        num_strategy = len(comb)
        if 'capital' not in settings:
            settings['capital'] = 1000000.0  # 默认资金
            logger.info('BackTesting with default capital 1000000.0.')

        assert (settings['capital'] > 0)
        if num_strategy == 1:
            settings['ratio'] = [1]
        elif num_strategy > 1 and 'ratio' not in settings:
            settings['ratio'] = [1.0 / num_strategy] * num_strategy
        assert ('ratio' in settings)
        assert (len(settings['ratio']) == num_strategy)
        assert (sum(settings['ratio']) - 1.0 < 0.000001)
        assert (num_strategy >= 1)
        ctxs = []
        for i, s in enumerate(comb):
            iset = {}
            if settings:
                iset = {'capital': settings['capital'] * settings['ratio'][i]}
                # logger.debug(iset)
            ctxs.append(StrategyContext(s.name, iset))
        self.context.add_strategy_context(ctxs)
        return blotter.Profile(ctxs, self._all_data, self.pcontracts[0],
                               len(self._combs) - 1)
Exemplo n.º 2
0
 def add_comb(self, comb, settings = { }):
     """ 添加策略组合组合
     
     Args:
         comb (list): 一个策略组合
     """
     self._combs.append(comb)
     if settings:
         num_strategy = len(comb) 
         assert (settings['captial'] > 0)
         assert len(settings['ratio']) == num_strategy
         assert(sum(settings['ratio']) == 1)
     ctxs = []
     for i, s in enumerate(comb):
         iset = { }
         if settings:
             iset = { 'captial': settings['captial'] * settings['ratio'][i] }
             logger.debug(iset)
         ctxs.append(StrategyContext(s.name, iset))
     self.context.add_strategy_context(ctxs)
     blotters = [ ctx.blotter for ctx in  ctxs]
     return blotter.Profile(blotters, self.all_data, self.pcontracts[0], len(self._combs)-1)