Backtrader Community

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    For code/output blocks: Use ``` (aka backtick or grave accent) in a single line before and after the block. See: http://commonmark.org/help/

    Bug: cerebro.py generating a type error when importing data.

    General Code/Help
    2
    2
    664
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • I
      iHustling last edited by iHustling

      Whenever I try to add my own generic CSV data to my code, I get an error:

      Starting Portfolio Value: 10000.00
      Traceback (most recent call last):
      
        File "<ipython-input-17-d193ded4a7a8>", line 1, in <module>
          runfile('/Users/developer/SleeplessCrossover/Sleeplessv1.1.py', wdir='/Users/developer/SleeplessCrossover')
      
        File "/anaconda3/lib/python3.7/site-packages/spyder_kernels/customize/spydercustomize.py", line 786, in runfile
          execfile(filename, namespace)
      
        File "/anaconda3/lib/python3.7/site-packages/spyder_kernels/customize/spydercustomize.py", line 110, in execfile
          exec(compile(f.read(), filename, 'exec'), namespace)
      
        File "/Users/developer/SleeplessCrossover/Sleeplessv1.1.py", line 93, in <module>
          cerebro.run()
      
        File "/anaconda3/lib/python3.7/site-packages/backtrader/cerebro.py", line 1127, in run
          runstrat = self.runstrategies(iterstrat)
      
        File "/anaconda3/lib/python3.7/site-packages/backtrader/cerebro.py", line 1217, in runstrategies
          strat = stratcls(*sargs, **skwargs)
      
      TypeError: 'str' object is not callable
      

      If you guys want to see my strategy, here it is:

      # Create Cerebro instance
      if __name__ == '__main__':
          # Create a Cerebro identity
          cerebro = bt.Cerebro()
          
          # Add a strategy to cerebro
          cerebro.addstrategy('SleeplessCrossover')
          
          data = btfeeds.GenericCSVData(
          dataname='BTCUSDT.csv',
          
          fromdate=dt.datetime(2019, 3, 23),
          todate=dt.datetime(2019, 4, 12),
      
          nullvalue=0.0,
      
          datetime=0,
          high=2,
          low=3,
          open=1,
          close=4,
          volume=5,
          openinterest=-1
      )
      
          print('Starting Portfolio Value: %.2f' % cerebro.broker.getvalue())
          
          cerebro.adddata(data)
      
          cerebro.run()
      
          print('Final Portfolio Value: %.2f' % cerebro.broker.getvalue())
      

      Edit: I finally found the issue. It wasn't importing the data, it was me adding a strategy as a string that caused the issue. What I don't understand is, when the cerebro.addstrategy() function does not have a string as an argument I get an error saying there's no variable called SleeplessCrossover.

      A 1 Reply Last reply Reply Quote 0
      • A
        ab_trader @iHustling last edited by

        @ihustling

        What I don't understand is, when the cerebro.addstrategy() function does not have a string as an argument I get an error saying there's no variable called SleeplessCrossover

        If you use only the script you posted here, than there is no such variable (no strategy) in the script.

        You may want to read Quickstart first to figure out how bt works and what should be in the script.

        • If my answer helped, hit reputation up arrow at lower right corner of the post.
        • Python Debugging With Pdb
        • New to python and bt - check this out
        1 Reply Last reply Reply Quote 0
        • 1 / 1
        • First post
          Last post
        Copyright © 2016, 2017, 2018, 2019, 2020, 2021 NodeBB Forums | Contributors