def runstrat(): args = parse_args() # Create a cerebro entity cerebro = bt.Cerebro(stdstats=False) cerebro.addstrategy( SMAStrategy, # args for the strategy period=args.period, ) # Load the Data datapath = args.dataname or '../datas/sample/2006-day-001.txt' data = btfeeds.BacktraderCSVData(dataname=datapath) tframes = dict(daily=bt.TimeFrame.Days, weekly=bt.TimeFrame.Weeks, monthly=bt.TimeFrame.Months) # Handy dictionary for the argument timeframe conversion # Resample the data data_replayed = bt.DataReplayer(dataname=data, timeframe=tframes[args.timeframe], compression=args.compression) # First add the original data - smaller timeframe cerebro.adddata(data_replayed) # Run over everything cerebro.run(preload=False) # Plot the result cerebro.plot(style='bar')
def test_run(main=False): for i in [True, False]: data = testcommon.getdata(0) if i: data = bt.DataReplayer( dataname=data, timeframe=bt.TimeFrame.Weeks, compression=1) else: data.replay( timeframe=bt.TimeFrame.Weeks, compression=1) datas = [data] testcommon.runtest(datas, testcommon.TestStrategy, main=main, plot=main, chkind=chkind, chkmin=chkmin, chkvals=chkvals, chknext=chknext, chkargs=chkargs, runonce=False, preload=False)
def runstrat(): args = parse_args() # Create a cerebro entity cerebro = bt.Cerebro() # Add a strategy if not args.indicators: cerebro.addstrategy(bt.Strategy) else: cerebro.addstrategy( SMAStrategy, # args for the strategy period=args.period, onlydaily=args.onlydaily, ) # Load the Data datapath = args.dataname or '../../datas/2006-day-001.txt' data = btfeeds.BacktraderCSVData(dataname=datapath) tframes = dict(daily=bt.TimeFrame.Days, weekly=bt.TimeFrame.Weeks, monthly=bt.TimeFrame.Months) # Handy dictionary for the argument timeframe conversion # Resample the data if args.noresample: datapath = args.dataname2 or '../../datas/2006-week-001.txt' data2 = btfeeds.BacktraderCSVData(dataname=datapath) else: if args.oldrs: if args.replay: data2 = bt.DataReplayer(dataname=data, timeframe=tframes[args.timeframe], compression=args.compression) else: data2 = bt.DataResampler(dataname=data, timeframe=tframes[args.timeframe], compression=args.compression) else: data2 = bt.DataClone(dataname=data) if args.replay: if args.timeframe == 'daily': data2.addfilter(ReplayerDaily) elif args.timeframe == 'weekly': data2.addfilter(ReplayerWeekly) elif args.timeframe == 'monthly': data2.addfilter(ReplayerMonthly) else: if args.timeframe == 'daily': data2.addfilter(ResamplerDaily) elif args.timeframe == 'weekly': data2.addfilter(ResamplerWeekly) elif args.timeframe == 'monthly': data2.addfilter(ResamplerMonthly) # First add the original data - smaller timeframe cerebro.adddata(data) # And then the large timeframe cerebro.adddata(data2) # Run over everything cerebro.run(runonce=not args.runnext, preload=not args.nopreload, stdstats=False) # Plot the result cerebro.plot(style='bar')