Backtrader Community

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    1. Home
    2. bidstopper
    For code/output blocks: Use ``` (aka backtick or grave accent) in a single line before and after the block. See: http://commonmark.org/help/
    B
    • Profile
    • Following 0
    • Followers 0
    • Topics 1
    • Posts 1
    • Best 0
    • Controversial 0
    • Groups 0

    bidstopper

    @bidstopper

    0
    Reputation
    220
    Profile views
    1
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    bidstopper Unfollow Follow

    Latest posts made by bidstopper

    • Problems on using renko bricks with forex, Oanda EUR_USD

      Hello!

      I want to try to use renko bricks in a strategy, and also test it, but I see that the renko plot is not working fine.
      One brick up and one brick down.
      I am trying to use it with EUR_USD. I got the data from Oanda and stored it into a CSV.
      I think the problem is because the price contains 5 decimals.
      Any help will be really appreciated.

      My code looks like this:

      
      import backtrader as bt
      from datetime import datetime # For datetime objects
      import os.path  # To manage paths
      
      class logging(bt.Strategy):
      
          def log(self, txt, dt=None):
              ''' Logging function for this strategy'''
              dt = dt or self.datas[0].datetime.date(0)
              print('%s, %s' % (dt.isoformat(), txt))
      
          def __init__(self):
              # Keep a reference to the "close" line in the data[0] dataseries
              self.dataclose = self.datas[0].close
      
          def next(self):
              # Simply log the closing price of the series from the reference
              self.log('Close, %.4f' % self.dataclose[0])
      
      
      class OandaCSVData(bt.feeds.GenericCSVData):
          params = (
              ('nullvalue', 0.0),
              ('dtformat', '%Y-%m-%dT%H:%M:%S'),
              ('datetime', 0),
              ('time', -1),
              ('open', 1),
              ('high', 2),
              ('low', 3),
              ('close', 4),
              ('volume', 5),
              ('openinterest', -1),
          )
      
      
      #Variable for our starting cash
      startcash = 10000
      
      #Create an instance of cerebro
      cerebro = bt.Cerebro()
      
      #Add our strategy
      cerebro.broker.setcash(startcash)
      
      #create our data list
      datalist = [
          ('EUR_USD.M1.csv', 'CADCHF'), #[0] = Data file, [1] = Data name
      ]
      
      data = OandaCSVData(dataname='EUR_USD.M1.csv',
                          fromdate=datetime(2017, 7, 1),
                          todate=datetime(2017, 7, 5),
                          timeframe=bt.TimeFrame.Minutes)
      
      
      data.addfilter(bt.filters.Renko, **dict(size=0.0008))
      cerebro.adddata(data, name='EUR_USD')
      
      # Set our desired cash start
      cerebro.addstrategy(logging)
      
      # Run over everything
      cerebro.run(**dict(stdstats=False))
      
      #Get final portfolio Value
      portvalue = cerebro.broker.getvalue()
      pnl = portvalue - startcash
      
      #Print out the final result
      print('Final Portfolio Value: ${}'.format(portvalue))
      print('P/L: ${}'.format(pnl))
      
      #Finally plot the end results
      cerebro.plot(style='candle', barup='green', bardown='red')
      

      My logger prints this:

      ...
      2017-07-04, Close, 1.1352
      2017-07-04, Close, 1.1360
      2017-07-04, Close, 1.1344
      2017-07-04, Close, 1.1360
      2017-07-04, Close, 1.1344
      2017-07-04, Close, 1.1360
      2017-07-04, Close, 1.1344
      2017-07-04, Close, 1.1336
      2017-07-04, Close, 1.1352
      2017-07-04, Close, 1.1360
      2017-07-04, Close, 1.1344
      2017-07-04, Close, 1.1360
      2017-07-04, Close, 1.1344
      2017-07-04, Close, 1.1360
      ...
      

      And it plots like this:
      alt text

      posted in Indicators/Strategies/Analyzers
      B
      bidstopper