import backtrader as bt class Backtest(bt.Strategy): def init(self): self.signal = self.datas[0].signal def next(self): if self.signal == 1: self.buy() elif self.signal == -1: self.sell() cerebro = bt.Cerebro() data = bt.feeds.PandasData(dataname=data) cerebro.adddata(data) cerebro.addstrategy(Backtest) cerebro.run()报错'Lines_LineSeries_DataSeries_OHLC_OHLCDateTime_Abst' object has no attribute 'signal'
时间: 2023-06-20 18:03:26 浏览: 652
Backtrader中文教程入门版.pdf
5星 · 资源好评率100%
这个错误是因为你的`data`对象并没有一个名为`signal`的属性。假设你的`data`对象是一个Pandas DataFrame,那么你需要在初始化函数中创建一个新列来存储你的信号,例如:
```
class Backtest(bt.Strategy):
def __init__(self):
self.data['signal'] = self.data['your_signal_column_name']
def next(self):
if self.data.signal == 1:
self.buy()
elif self.data.signal == -1:
self.sell()
```
其中,`your_signal_column_name`是你存储信号的列的名称。你需要将其替换为你实际使用的名称。这样就可以在策略中使用`self.data.signal`来获取你的信号了。
阅读全文