I ran sample code but I did not work. what should I do?
Mohamad Rafiee last edited by
from future import (absolute_import, division, print_function,
import datetime # For datetime objects
import os.path # To manage paths
import sys # To find out the script name (in argv)
Import the backtrader platform
import backtrader as bt
Create a Stratey
def log(self, txt, dt=None): ''' Logging function fot this strategy''' dt = dt or self.datas.datetime.date(0) print('%s, %s' % (dt.isoformat(), txt)) def __init__(self): # Keep a reference to the "close" line in the data dataseries self.dataclose = self.datas.close def next(self): # Simply log the closing price of the series from the reference self.log('Close, %.2f' % self.dataclose) if self.dataclose < 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) self.buy()
if name == 'main':
# 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)) datapath = os.path.join(modpath, '/Users/javad/Trading/Bt/Untitled-1.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())
Things you can do
1. Read have you have just before your eyes
For code/output blocks: Use ``` (aka backtick or grave accent) in a single line before and after the block. See: http://commonmark.org/help/
This is at the top of each and every page of the forum. The advice is actually generic and helps for everything.
If not your code cannot be read by others
2. Nobody knows what went wrong.
You say it did not work.
- What's the error?
- What's the data?
- What's XXX? (anything that can help)