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/

    Easy Strategy: Begginer RSI

    General Discussion
    3
    6
    118
    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.
    • P
      Petter_Axcell last edited by

      Hello,
      I'm begginer with this library. I've developed this code... It's a simply RSI.
      But it doesn't function.

      My cerebro is with this code:

      from __future__ import (absolute_import, division, print_function,unicode_literals)
      #from backtrader_plotting import Bokeh
      import datetime
      from plot import *
      from MyStrategy import * 
      
      from TestStrategy import*
      
      #Create a cerebro entity
      cerebro = bt.Cerebro()
      
       #Add a my strategy
      cerebro.addstrategy(MyStrategy)
      
      # Add TestStrategy
      #cerebro.addstrategy(TestStrategy)
      
      #Set our desired cash start
      cerebro.broker.set_cash(1000)
      cerebro.broker.setcommission(commission=0.001)
      
      data = bt.feeds.GenericCSVData(
          dataname='BTCUSDT.csv',
      
          fromdate=datetime.datetime(2019, 1, 1),
          todate=datetime.datetime(2020, 12, 31),
      
          nullvalue=0.0,
      
          dtformat=('%Y-%m-%d'),
          tmformat=('%H:%M:%S'),
      
          date=0,
          time=6,
          high=2,
          low=3,
          open=1,
          close=4,
          volume=5,
          openinterest=-1,
      )
      
      #Add Data Feed to Cerebro
      cerebro.adddata(data)
      
      #Set our desired cash start
      cerebro.broker.set_cash(1000.0)
      
      #Set the comission
      cerebro.broker.setcommission(commission=0.001)
      
      # Print out the starting conditions
      print('Starting Portfolio Value: %.2f' % cerebro.broker.getvalue())
      
      # Run over everything
      cerebro.run()
      
      # Print out the final result
      print('Final Portfolio Value: %.2f' % cerebro.broker.getvalue())
      
      

      And MyStrategy is with:

      import backtrader as bt
      import numpy as np
      
      class MyStrategy (bt.Strategy):
      
          #Parametros de los indicadores
          params = (('BBandsperiod', 20),('devfactor',2), ('RSIperiod',14))
      
          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
              self.dataclose = self.datas[0].close
              
              #add a BBand and RSI
              self.rsi=bt.indicators.RSI_SMA(period=self.p.RSIperiod,plotname='mysma')
              self.bband = bt.indicators.BollingerBands(period=self.p.BBandsperiod, devfactor=self.p.devfactor)
      
          def next(self):
              
                  if self.rsi[0] < 30:
                      self.log('BUY CREATE, %.2f' % self.dataclose[0])
                      self.buy()
           
                  if self.rsi[0] >70:
                      self.log('SELL CREATE, %.2f' % self.dataclose[0])
                      self.sell()
      
      
      

      If someone can explain me why it doesn't function... I will be very grateful.

      P.S: Sorry for my English

      1 Reply Last reply Reply Quote 0
      • P
        Petter_Axcell last edited by

        It show me:

        ...
        2020-09-05, SELL CREATE, 10243.70
        2020-09-05, BUY CREATE, 10061.94
        2020-09-05, BUY CREATE, 10099.79
        2020-09-05, BUY CREATE, 10033.66
        2020-09-05, BUY CREATE, 9898.82
        2020-09-06, SELL CREATE, 10256.06
        2020-09-06, SELL CREATE, 10217.32
        Final Portfolio Value: 134084.88
        
        vladisld 1 Reply Last reply Reply Quote 0
        • P
          Petter_Axcell last edited by

          But with only buying, it happens:

          2020-09-05, BUY EXECUTED, Price: 0.00, Cost: 0.00, Comm 0.00
          2020-09-05, BUY EXECUTED, Price: 0.00, Cost: 0.00, Comm 0.00
          2020-09-05, BUY EXECUTED, Price: 0.00, Cost: 0.00, Comm 0.00
          2020-09-05, BUY EXECUTED, Price: 0.00, Cost: 0.00, Comm 0.00
          2020-09-05, BUY EXECUTED, Price: 0.00, Cost: 0.00, Comm 0.00
          2020-09-05, BUY EXECUTED, Price: 0.00, Cost: 0.00, Comm 0.00
          2020-09-05, BUY EXECUTED, Price: 0.00, Cost: 0.00, Comm 0.00
          Final Portfolio Value: 1000.00
          
          A 1 Reply Last reply Reply Quote 0
          • A
            ab_trader @Petter_Axcell last edited by

            @Petter_Axcell said in Easy Strategy: Begginer RSI:

            But with only buying, it happens:

            Your code has no means to print this.

            @Petter_Axcell said in Easy Strategy: Begginer RSI:

            If someone can explain me why it doesn't function... I will be very grateful.

            First, your code is functioning, it prints logs. Second, if somehow it doesn't, show us what did you do to debug your own code before post the question on the community forum?
            To avoid duplicate steps.

            1 Reply Last reply Reply Quote 1
            • vladisld
              vladisld @Petter_Axcell last edited by

              @Petter_Axcell said in Easy Strategy: Begginer RSI:

              2020-09-05, BUY CREATE, 10061.94

              The log shows the close price IIUC:

              self.log('BUY CREATE, %.2f' % self.dataclose[0])
              

              you initialize your cash with just 1000:

              cerebro.broker.set_cash(1000)
              

              seems not to be enough to satisfy the above buy order.

              1 Reply Last reply Reply Quote 2
              • P
                Petter_Axcell last edited by

                Thanks,
                I knew about the close prices but I didn't know about the quantity of purchase

                1 Reply Last reply Reply Quote 0
                • 1 / 1
                • First post
                  Last post
                Copyright © 2016, 2017, 2018 NodeBB Forums | Contributors
                $(document).ready(function () { app.coldLoad(); }); }