进口 backtrader 作为 bt 进口 backtrader.feeds 作为 btfeed 进口 backtrader.analyzers 作为 btanalyzers 进口 talib 作为 ta 进口 numpy 作为 np 进口 pandas 作为 pd
从日期时间导入日期时间
MACross 类(bt.Strategy):
def __init__(self):
ma_fast = bt.ind.SMA(period = 10)
ma_slow = bt.ind.SMA(period = 50)
self.crossover = bt.ind.CrossOver(ma_fast, ma_slow)
def next(self):
if not self.position:
if self.crossover >0:
self.buy()
elif self.crossover <0:
self.close()
class dataFeed(btfeed.GenericCSVData):
params = (
('dtformat', '%m/%d/%Y %H:%M'),
('datetime', 0),
('open', 1),
('high', 2),
('low', 3),
('close', 4),
('volume', 5),
('openinterest', -1)
)
cerebro = bt.Cerebro()
data = dataFeed(dataname='data.csv')
cerebro.addstrategy(MACross)
cerebro.adddata(data)
back = cerebro.run()
cerebro.broker.getvalue()
back[0].analyzers.sharpe.get_analysis()
cerebro.plot()
[[<Figure size 640x480 with 5 Axes>]]