Quickstart code but Strategy not working
-
This code is same as mentioned in Quickstart code but Strategy not working
import backtrader as bt
import pandas as pd
import datetime
import requestsclass TestStrategy(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 def __next__(self): # Simply log the closing price of the series from the reference self.log('Close, %.2f' % self.dataclose[0]) if self.dataclose[0] < self.dataclose[-1]: # current close less than previous close if self.dataclose[-1] < self.dataclose[-2]: # previous close less than the previous close # BUY, BUY, BUY!!! (with all possible default parameters) self.log('BUY CREATE, %.2f' % self.dataclose[0]) self.buy()
if name == "main":
# ce = bt.Cerebro()
# ce.addstrategy(A2)
# ce.broker.set_cash(10000)
# # df = pd.read_csv("INFY.NS.CSV", delimiter=",", parse_dates=True, index_col="Date")
# # print(df.head(5))
# # print(df)
data = bt.feeds.YahooFinanceData(dataname="Csv.csv", fromdate=datetime.datetime(2020, 3, 30),todate=datetime.datetime(2021, 3, 29), reverse=False)
# ce.adddata(data)
#
# ce.run()# Create a cerebro entity cerebro = bt.Cerebro() # Add a strategy cerebro.addstrategy(TestStrategy) # Datas are in a subfolder of the samples. Need to find where the script is # because it could have been called from anywhere # modpath = os.path.dirname(os.path.abspath(sys.argv[0])) # datapath = os.path.join(modpath, '../../datas/orcl-1995-2014.txt') # Create a Data Feed # data = bt.feeds.YahooFinanceCSVData( # dataname=datapath, # # Do not pass values before this date # fromdate=datetime.datetime(2000, 1, 1), # # Do not pass values before this date # todate=datetime.datetime(2000, 12, 31), # # Do not pass values after this date # reverse=False) # Add the Data Feed to Cerebro cerebro.adddata(data) # Set our desired cash start cerebro.broker.setcash(100000.0) # 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())
-
@pradeepofc1 When you say
not working
what exaclty do you mean? -
@run-out output not rendering
-
@pradeepofc1
I have the same problem. There is no logs making by "next" method of the TestStrategy. -
Data feed was changed, so the code is not a
quickstart
code anymore. I bet data feed is incorrectly imported. Hard to say since the script is shown badly. Pay attention to the top of the page where the requirement to how the code should be posted are written.