Navigation

    Backtrader Community

    • Register
    • 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/

    Why do my algorithm stop after one trade?

    General Code/Help
    1
    2
    57
    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.
    • Bo Vargas
      Bo Vargas last edited by

      The algorithm seems to run one, but I never get another next called. What I'm I missing? After the first trade, I would expect to see the holding... to continue to happen in the console until the next trade is triggered.

      def runstrats(args=None):
          args = parse_args(args)
      
          cerebro = bt.Cerebro(stdstats=True)
      
          fromdate = None
          if args.fromdate:
              dtformat = '%Y-%m-%d' + ('T%H:%M:%S' * ('T' in args.fromdate))
              fromdate = datetime.datetime.strptime(args.fromdate, dtformat)
      
          todate = None
          if args.todate:
              dtformat = '%Y-%m-%d' + ('T%H:%M:%S' * ('T' in args.todate))
              todate = datetime.datetime.strptime(args.todate, dtformat)
      
          # This is the Interactive Broker client
          store = ibstore.IBStore(host='127.0.0.1', # env('IB_URL'),
                                  port=7496, # env('IB_PORT'),
                                  clientId=35,
                                  notifyall=True
                                  # _debug=True
                                  )
      
          # Add Data
          data0 = store.getdata(dataname=ib_symbol,
                                timeframe=bt.TimeFrame.Minutes,
                                fromdate=fromdate,
                                todate=todate,
                                compression=1,
                                rtbar=True)
      
          # Resample Data
          cerebro.resampledata(data0,
                               timeframe=bt.TimeFrame.Minutes,
                               compression=1
                               )
      
          data0.addfilter(bt.filters.Renko, size=0.0001)
          cerebro.adddata(data0)
      
          # Set the behavior
          cerebro.signal_accumulate(False)
          cerebro.signal_concurrent(False)
      
          # Broker
          cerebro.broker = store.getbroker()
          cerebro.broker.setcommission(commission=2.47, margin=2000.0, mult=10.0)
      
          # Sizer
          cerebro.addsizer(bt.sizers.FixedReverser, stake=5)
      
          # Observer
          cerebro.addobserver(bt.observers.FundValue)
      
          # Strategy
          cerebro.addstrategy(TwoBlock, **eval('dict(' + args.strat + ')'))
      
          # Execute
          kwargs = dict(stdstats=True)
          kwargs.update(**eval('dict(' + args.cerebro + ')'))
          cerebro.run(**kwargs)
      

      Output below

      Server Version: 76
      TWS Time at connection:20200901 17:04:03 Central Standard Time
      01-Sep-20 17:04:06 INFO      holding...
      01-Sep-20 17:05:03 INFO      holding...
      01-Sep-20 17:06:02 INFO      holding...
      01-Sep-20 17:07:02 INFO      holding...
      01-Sep-20 17:08:03 INFO      holding...
      01-Sep-20 17:09:03 INFO      holding...
      01-Sep-20 17:10:03 INFO      Buying position
      01-Sep-20 17:10:03 INFO      2020-09-01: Oref 1 / Buy at 1.19185
      01-Sep-20 17:10:03 INFO      2020-09-01: Oref 2 / Sell Stop at 1.1911500000000002
      01-Sep-20 17:10:03 INFO      2020-09-01: Oref 3 / Sell TP Limit at 1.2016
      01-Sep-20 17:10:03 INFO      2020-09-01: Oref 4 / Sell Tail STOP 0.06
      01-Sep-20 17:11:03 INFO      2020-09-01: Order ref: 1 / Type Buy / Status Submitted
      01-Sep-20 17:11:03 INFO      ORDER ACCEPTED/SUBMITTED 01/09/1970, 12:54:29
      01-Sep-20 17:11:03 INFO      2020-09-01: Order ref: 2 / Type Sell / Status Submitted
      01-Sep-20 17:11:03 INFO      ORDER ACCEPTED/SUBMITTED 01/09/1970, 12:54:29
      01-Sep-20 17:11:03 INFO      2020-09-01: Order ref: 3 / Type Sell / Status Submitted
      01-Sep-20 17:11:03 INFO      ORDER ACCEPTED/SUBMITTED 01/09/1970, 12:54:29
      01-Sep-20 17:11:03 INFO      2020-09-01: Order ref: 4 / Type Sell / Status Submitted
      01-Sep-20 17:11:03 INFO      ORDER ACCEPTED/SUBMITTED 01/09/1970, 12:54:29
      
      
      1 Reply Last reply Reply Quote 0
      • Bo Vargas
        Bo Vargas last edited by

        I found the bug. I turned on _debug=true and was able to see the issue. The realtimebars were coming in as I expected.

        1 Reply Last reply Reply Quote 0
        • 1 / 1
        • First post
          Last post
        Copyright © 2016, 2017, 2018, 2019, 2020, 2021 NodeBB Forums | Contributors