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/

    Tweaking code parameters always gives the same portfolio value

    General Code/Help
    2
    2
    51
    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.
    • W
      WhiteAlucard last edited by

      Hi there guys, i'm new to backtrader, i have some simple code and no matter what i change i even added a new 'if' condition for the selling in the strategy and the final portfolio value it's always the same. For instance if i change my RSI indicator time period from 14 to 4 the final portfolio value it's still the same. There must been something that i'm doing wrong. Could you help me?

      the .csv file it's an historical data of ethusd price that i've dowloaded from Binance with the API. The only thing that i modify of them it's that i convert the timestamps to date.

      from __future__ import (absolute_import, division, print_function,
                              unicode_literals)
      
      import datetime
      
      import backtrader 
      import backtrader.feeds as btfeeds
      #from Strategy_Example import TestStrategy
      #from Strategy_Example import BuyAndSell
      from Strategy_Example import RSIStrategy
      
      
      
      if __name__ == '__main__':
          cerebro = backtrader.Cerebro()
          cerebro.broker.set_cash(100000)
      
          data = btfeeds.GenericCSVData(
              dataname='ETHUSDT-1HOUR.csv',
      
              fromdate=datetime.datetime(2021, 1, 1),
              todate=datetime.datetime(2021, 1, 10),
      
              nullvalue=0.0,
         
              timeframe=backtrader.TimeFrame.Minutes,            
              compression=1,                            
              dtformat=('%Y-%m-%d %H:%M:%S'), 
              datetime=0,
              high=1,
              low=2,
              open=3,
              close=4,
              volume=5,
              openinterest=-1
      )
      
          cerebro.adddata(data)
          cerebro.addstrategy(RSIStrategy)
          print('Starting Portfolio Value: %.4f' % cerebro.broker.getvalue())
      
          cerebro.run()
      
          print('Final Portfolio Value: %.4f' % cerebro.broker.getvalue())
          
      
          
          cerebro.plot(iplot=False)
      

      this is the strategy:

      class RSIStrategy(bt.Strategy):
          
          
          def log(self, txt, dt=None):
              ''' Logging function fot 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
              
              #RSI indicator
              self.rsi = bt.talib.RSI(self.data, period = 4)
              self.buyprice = 0
              self.stoploss = self.buyprice * 0.99
          
          def next(self):
              
              if (self.rsi > 70 and  self.position) or (self.dataclose[0]  <= self.stoploss and self.position):
                  self.close()
                  self.log('SELL CREATE, %.2f' % self.dataclose[0])
              if self.rsi < 30 and not  self.position:
                  self.buy(size = 1)
                  self.log('BUY CREATE, %.2f' % self.dataclose[0])
                  self.buyprice = self.dataclose[0]
      

      and this are two results that i'm getting from changing the RSI time period:

      First time period 14:

      Starting Portfolio Value: 100000.0000
      2021-01-01, BUY CREATE, 742.15
      2021-01-01, SELL CREATE, 736.90
      2021-01-01, BUY CREATE, 735.65
      2021-01-01, SELL CREATE, 740.69
      2021-01-01, BUY CREATE, 737.01
      2021-01-01, SELL CREATE, 730.17
      2021-01-01, BUY CREATE, 726.13
      2021-01-01, SELL CREATE, 725.94
      2021-01-02, BUY CREATE, 726.38
      2021-01-02, SELL CREATE, 731.98
      2021-01-02, BUY CREATE, 728.90
      2021-01-02, SELL CREATE, 736.50
      2021-01-02, BUY CREATE, 757.27
      2021-01-02, SELL CREATE, 771.98
      2021-01-02, BUY CREATE, 779.28
      2021-01-02, SELL CREATE, 774.10
      2021-01-02, BUY CREATE, 768.50
      2021-01-02, SELL CREATE, 780.63
      2021-01-03, BUY CREATE, 771.85
      2021-01-03, SELL CREATE, 775.72
      2021-01-03, BUY CREATE, 794.40
      2021-01-03, SELL CREATE, 804.99
      2021-01-03, BUY CREATE, 883.37
      2021-01-03, SELL CREATE, 929.98
      2021-01-03, BUY CREATE, 922.99
      2021-01-03, SELL CREATE, 930.75
      2021-01-03, BUY CREATE, 964.07
      2021-01-04, SELL CREATE, 982.21
      2021-01-04, BUY CREATE, 1052.02
      2021-01-04, SELL CREATE, 977.00
      2021-01-04, BUY CREATE, 1018.31
      2021-01-04, SELL CREATE, 1017.00
      2021-01-04, BUY CREATE, 1019.11
      2021-01-04, SELL CREATE, 1022.53
      2021-01-04, BUY CREATE, 1001.62
      2021-01-04, SELL CREATE, 1018.13
      2021-01-04, BUY CREATE, 1072.02
      2021-01-05, SELL CREATE, 1021.02
      2021-01-05, BUY CREATE, 1022.87
      2021-01-05, SELL CREATE, 1053.59
      2021-01-05, BUY CREATE, 1023.55
      2021-01-05, SELL CREATE, 1036.65
      2021-01-05, BUY CREATE, 1063.29
      2021-01-05, SELL CREATE, 1097.57
      2021-01-05, BUY CREATE, 1082.05
      2021-01-05, SELL CREATE, 1108.65
      2021-01-05, BUY CREATE, 1086.97
      2021-01-06, SELL CREATE, 1088.82
      2021-01-06, BUY CREATE, 1094.23
      2021-01-06, SELL CREATE, 1121.42
      2021-01-06, BUY CREATE, 1128.42
      2021-01-06, SELL CREATE, 1145.67
      2021-01-06, BUY CREATE, 1176.00
      2021-01-06, SELL CREATE, 1193.74
      2021-01-06, BUY CREATE, 1177.97
      2021-01-06, SELL CREATE, 1201.50
      2021-01-06, BUY CREATE, 1189.52
      2021-01-07, SELL CREATE, 1208.56
      2021-01-07, BUY CREATE, 1197.46
      2021-01-07, SELL CREATE, 1203.80
      2021-01-07, BUY CREATE, 1209.98
      2021-01-07, SELL CREATE, 1232.34
      2021-01-07, BUY CREATE, 1231.57
      2021-01-07, SELL CREATE, 1237.15
      2021-01-07, BUY CREATE, 1245.85
      2021-01-08, SELL CREATE, 1171.11
      2021-01-08, BUY CREATE, 1143.43
      2021-01-08, SELL CREATE, 1178.48
      2021-01-08, BUY CREATE, 1226.85
      2021-01-08, SELL CREATE, 1263.57
      2021-01-08, BUY CREATE, 1232.30
      2021-01-08, SELL CREATE, 1183.91
      2021-01-08, BUY CREATE, 1204.04
      2021-01-09, SELL CREATE, 1209.52
      2021-01-09, BUY CREATE, 1195.99
      2021-01-09, SELL CREATE, 1211.72
      2021-01-09, BUY CREATE, 1214.00
      2021-01-09, SELL CREATE, 1221.09
      2021-01-09, BUY CREATE, 1221.95
      2021-01-09, SELL CREATE, 1241.08
      2021-01-09, BUY CREATE, 1270.37
      2021-01-09, SELL CREATE, 1302.65
      Final Portfolio Value: 100278.4700

      second time period 4:

      Starting Portfolio Value: 100000.0000
      2021-01-01, BUY CREATE, 742.15
      2021-01-01, SELL CREATE, 736.90
      2021-01-01, BUY CREATE, 735.65
      2021-01-01, SELL CREATE, 740.69
      2021-01-01, BUY CREATE, 737.01
      2021-01-01, SELL CREATE, 730.17
      2021-01-01, BUY CREATE, 726.13
      2021-01-01, SELL CREATE, 725.94
      2021-01-02, BUY CREATE, 726.38
      2021-01-02, SELL CREATE, 731.98
      2021-01-02, BUY CREATE, 728.90
      2021-01-02, SELL CREATE, 736.50
      2021-01-02, BUY CREATE, 757.27
      2021-01-02, SELL CREATE, 771.98
      2021-01-02, BUY CREATE, 779.28
      2021-01-02, SELL CREATE, 774.10
      2021-01-02, BUY CREATE, 768.50
      2021-01-02, SELL CREATE, 780.63
      2021-01-03, BUY CREATE, 771.85
      2021-01-03, SELL CREATE, 775.72
      2021-01-03, BUY CREATE, 794.40
      2021-01-03, SELL CREATE, 804.99
      2021-01-03, BUY CREATE, 883.37
      2021-01-03, SELL CREATE, 929.98
      2021-01-03, BUY CREATE, 922.99
      2021-01-03, SELL CREATE, 930.75
      2021-01-03, BUY CREATE, 964.07
      2021-01-04, SELL CREATE, 982.21
      2021-01-04, BUY CREATE, 1052.02
      2021-01-04, SELL CREATE, 977.00
      2021-01-04, BUY CREATE, 1018.31
      2021-01-04, SELL CREATE, 1017.00
      2021-01-04, BUY CREATE, 1019.11
      2021-01-04, SELL CREATE, 1022.53
      2021-01-04, BUY CREATE, 1001.62
      2021-01-04, SELL CREATE, 1018.13
      2021-01-04, BUY CREATE, 1072.02
      2021-01-05, SELL CREATE, 1021.02
      2021-01-05, BUY CREATE, 1022.87
      2021-01-05, SELL CREATE, 1053.59
      2021-01-05, BUY CREATE, 1023.55
      2021-01-05, SELL CREATE, 1036.65
      2021-01-05, BUY CREATE, 1063.29
      2021-01-05, SELL CREATE, 1097.57
      2021-01-05, BUY CREATE, 1082.05
      2021-01-05, SELL CREATE, 1108.65
      2021-01-05, BUY CREATE, 1086.97
      2021-01-06, SELL CREATE, 1088.82
      2021-01-06, BUY CREATE, 1094.23
      2021-01-06, SELL CREATE, 1121.42
      2021-01-06, BUY CREATE, 1128.42
      2021-01-06, SELL CREATE, 1145.67
      2021-01-06, BUY CREATE, 1176.00
      2021-01-06, SELL CREATE, 1193.74
      2021-01-06, BUY CREATE, 1177.97
      2021-01-06, SELL CREATE, 1201.50
      2021-01-06, BUY CREATE, 1189.52
      2021-01-07, SELL CREATE, 1208.56
      2021-01-07, BUY CREATE, 1197.46
      2021-01-07, SELL CREATE, 1203.80
      2021-01-07, BUY CREATE, 1209.98
      2021-01-07, SELL CREATE, 1232.34
      2021-01-07, BUY CREATE, 1231.57
      2021-01-07, SELL CREATE, 1237.15
      2021-01-07, BUY CREATE, 1245.85
      2021-01-08, SELL CREATE, 1171.11
      2021-01-08, BUY CREATE, 1143.43
      2021-01-08, SELL CREATE, 1178.48
      2021-01-08, BUY CREATE, 1226.85
      2021-01-08, SELL CREATE, 1263.57
      2021-01-08, BUY CREATE, 1232.30
      2021-01-08, SELL CREATE, 1183.91
      2021-01-08, BUY CREATE, 1204.04
      2021-01-09, SELL CREATE, 1209.52
      2021-01-09, BUY CREATE, 1195.99
      2021-01-09, SELL CREATE, 1211.72
      2021-01-09, BUY CREATE, 1214.00
      2021-01-09, SELL CREATE, 1221.09
      2021-01-09, BUY CREATE, 1221.95
      2021-01-09, SELL CREATE, 1241.08
      2021-01-09, BUY CREATE, 1270.37
      2021-01-09, SELL CREATE, 1302.65
      Final Portfolio Value: 100278.4700

      i have two files in the same working directory. One for the Strategies and other for the main code. I'm using Spyder IDE version: 4.1.5

      D 1 Reply Last reply Reply Quote 0
      • D
        davidavr @WhiteAlucard last edited by

        @whitealucard I'm not sure if this is it, but for the talib version of RSI, shouldn't the argument be timeperiod and not period?

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