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/

    find bugs when using the DemarkPivotPoint indicator

    Indicators/Strategies/Analyzers
    4
    5
    198
    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.
    • da zhang
      da zhang last edited by

      when I try to run the example code with "DemarkPivotPoint " in the ppsample.py in the folder of \backtrader\backtrader-master\samples\pivot-point, the pic could not show the three lines. I think there is something wrong with CmpEx function. please fix the bug.

      #!/usr/bin/env python
      # -*- coding: utf-8; py-indent-offset:4 -*-
      ###############################################################################
      #
      # Copyright (C) 2015-2020 Daniel Rodriguez
      #
      # This program is free software: you can redistribute it and/or modify
      # it under the terms of the GNU General Public License as published by
      # the Free Software Foundation, either version 3 of the License, or
      # (at your option) any later version.
      #
      # This program is distributed in the hope that it will be useful,
      # but WITHOUT ANY WARRANTY; without even the implied warranty of
      # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      # GNU General Public License for more details.
      #
      # You should have received a copy of the GNU General Public License
      # along with this program.  If not, see <http://www.gnu.org/licenses/>.
      #
      ###############################################################################
      from __future__ import (absolute_import, division, print_function,
                              unicode_literals)
      
      import argparse
      
      import backtrader as bt
      import backtrader.feeds as btfeeds
      import backtrader.utils.flushfile
      
      
      class St(bt.Strategy):
          params = (('usepp1', False),
                    ('plot_on_daily', 1))
      
          def __init__(self):
              autoplot = self.p.plot_on_daily
              self.pp = pp = bt.ind.DemarkPivotPoint(self.data1, _autoplot=autoplot)
      
          def next(self):
              txt = ','.join(
                  ['%04d' % len(self),
                   '%04d' % len(self.data0),
                   '%04d' % len(self.data1),
                   self.data.datetime.date(0).isoformat(),
                   '%04d' % len(self.pp),
                   '%.2f' % self.pp[0]])
      
              print(txt)
      
      
      def runstrat():
          args = parse_args()
      
          cerebro = bt.Cerebro()
          data = btfeeds.BacktraderCSVData(dataname=args.data)
          cerebro.adddata(data)
          cerebro.resampledata(data, timeframe=bt.TimeFrame.Months)
          cerebro.addstrategy(St)
          # cerebro.addstrategy(St,
                              # usepp1=args.usepp1,
                              # plot_on_daily=args.plot_on_daily)
          cerebro.run(runonce=False)
          if args.plot:
              cerebro.plot(**eval('dict(' + args.plot + ')'))
      
      
      def parse_args():
          parser = argparse.ArgumentParser(
              formatter_class=argparse.ArgumentDefaultsHelpFormatter,
              description='Sample for pivot point and cross plotting')
      
          parser.add_argument('--data', required=False,
                              default='......ktrader/backtrader-master/datas/2005-2006-day-001.txt',
                              help='Data to be read in')
      
          parser.add_argument('--plot', required=False, default='',
                              nargs='?', const='{}',
                              metavar='kwargs', help='kwargs in key=value format')
      
          parser.add_argument('--plot-on-daily', required=False, action='store_true',
                              help=('Plot the indicator on the daily data'))
      
          return parser.parse_args()
      
      
      if __name__ == '__main__':
          runstrat()
      
      
      1 Reply Last reply Reply Quote 0
      • run-out
        run-out last edited by

        @da-zhang said in find bugs when using the DemarkPivotPoint indicator:

        DemarkPivotPoint

        Please include the error message/faulty pic or chart so we can help you.

        RunBacktest.com

        1 Reply Last reply Reply Quote 0
        • vladisld
          vladisld last edited by

          It seems there is indeed a bug in CmpEx function as you correctly noticed.

          when the CmpEx.next() method is changed to:

              def next(self):
                  if self.a[0] < self.b[0]:
                      self[0] = self.r1[0]
                  elif self.a[0] > self.b[0]:
                      self[0] = self.r3[0]
                  else:
                      self[0] = self.r2[0]
          

          the resulted plot seems to be ok:

          demark_pivot_point_test.png

          I've submitted the issue: https://github.com/backtrader2/backtrader/issues/42

          da zhang M 2 Replies Last reply Reply Quote 1
          • da zhang
            da zhang @vladisld last edited by

            @vladisld good job, many thanks.

            1 Reply Last reply Reply Quote 1
            • M
              Mark @vladisld last edited by

              @vladisld nice, indeed a bug, the p r1 s1 is not correct.

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