For code/output blocks: Use ``` (aka backtick or grave accent) in a single line before and after the block. See:

How to pass a list of dicts to optstrategy?

  • I want to optimize my strategy with customized parameters, for example:

    cerebro.optstrategy(bt.strategies.MA_CrossOver, fast=range(2,8), slow=range(4, 16))

    The above configuration generates a lot of parameters that I don't want.

    Instead, I want to specify parameters manually as the following:

    cerebro.optstrategy(bt.strategies.MA_CrossOver, myparams=[
      {'fast': 2, 'slow': 4},
      {'fast': 4, 'slow': 8},
    {'fast': 3, 'slow': 7},

    How can I achieve this? Thanks

  • Pass parameters to cerebro as you shown above. In the strategy:

    params = ((`myprams`, {'fast': 1, 'slow': 5}),)
    p1 = self.p.myparams['fast']
    p2 = self.p.myparams['slow']
    self.ind1 = bt.Indicators.SMA(period=p1)
    self.ind2 = bt.Indicators.SMA(period=p2)

    I didn't test it, but I don't see any reasons that this should not work.

  • @ab_trader Good idea, I'll try it, thanks!

Log in to reply