text: #!/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 pandas
  
  
  def runstrat():
      args = parse_args()
  
      # Create a cerebro entity
      cerebro = bt.Cerebro(stdstats=False)
  
      # Add a strategy
      cerebro.addstrategy(bt.Strategy)
  
      # Get a pandas dataframe
      datapath = ('../candlestick1')
  
      # Simulate the header row isn't there if noheaders requested
      skiprows = 1 if args.noheaders else 0
      header = None if args.noheaders else 0
  
      dataframe = pandas.read_csv(
          datapath,
          skiprows=skiprows,
          header=header,
          # parse_dates=[0],
          parse_dates=True,
          index_col=0,
      )
  
      if not args.noprint:
          print('--------------------------------------------------')
          print(dataframe)
          print('--------------------------------------------------')
  
      # Pass it to the backtrader datafeed and add it to the cerebro
      data = bt.feeds.PandasData(dataname=dataframe,
                                 # datetime='Date',
                                 nocase=True,
                                 )
  
      cerebro.adddata(data)
  
      # Run over everything
      cerebro.run()
  
      # Plot the result
      cerebro.plot(style='bar')
  
  
  def parse_args():
      parser = argparse.ArgumentParser(
          description='Pandas test script')
  
      parser.add_argument('--noheaders', action='store_true', default=False,
                          required=False,
                          help='Do not use header rows')
  
      parser.add_argument('--noprint', action='store_true', default=False,
                          help='Print the dataframe')
  
      return parser.parse_args()
  
  
  if __name__ == '__main__':
      runstrat()
  