Hello, is there someone that coud help to feed Datastream data into Backtrader using the following example ?
from datetime import datetime
import backtrader as bt
# Create a subclass of Strategy to define the indicators and logic
class SmaCross(bt.Strategy):
# list of parameters which are configurable for the strategy
params = dict(
pfast=10, # period for the fast moving average
pslow=30 # period for the slow moving average
)
def __init__(self):
sma1 = bt.ind.SMA(period=self.p.pfast) # fast moving average
sma2 = bt.ind.SMA(period=self.p.pslow) # slow moving average
self.crossover = bt.ind.CrossOver(sma1, sma2) # crossover signal
def next(self):
if not self.position: # not in the market
if self.crossover > 0: # if fast crosses slow to the upside
self.buy() # enter long
elif self.crossover < 0: # in the market & cross to the downside
self.close() # close long position
# create a "Cerebro" engine instance
cerebro = bt.Cerebro()
# Create a data feed
data = ds.get_data(tickers='@MSFT';, fields=['PO','PH','PL','P','RI','VO'], start='-5Y', end='0D', freq='D')
cerebro.adddata(data) # Add the data feed
cerebro.addstrategy(SmaCross) # Add the trading strategy
cerebro.run() # run it all
cerebro.plot() # and plot it with a single command
The cerebro.adddata(data) # Add the data feed gives an error.
Any help would be highly appreciated !