在使用backtrader进行量化回测时,涉及到将数据传递近期,使用feeds.PandasData只能传递特定的列值,现在将增加传递多列,如何实现?
如代码中想多传递一列 'close_nfq'但没有成功
df = df[['sec_code', 'open', 'high', 'low', 'close', 'close_nfq', 'volume', 'openinterest']]
data = bt.feeds.PandasData(dataname=df, fromdate=dt_start, todate=dt_end)
```python
class Addmoredata(PandasData):
lines = ('close_nfq',)
params = (('close_nfq',7),)
data = Addmoredata(dataname=data, fromdate=dt_start, todate=dt_end)
```
两边的参数个数要一致,这里添加了,调用那里也要添加
该回答引用GPTᴼᴾᴱᴺᴬᴵ
在 feeds.PandasData 中增加个性列,需要对数据进行预处理,将需要传递的列增加到数据中。
可以通过以下步骤来增加传递多列:
1.首先需要在原始数据中增加一列 'close_nfq',并赋值为需要传递的数据,例如:
df['close_nfq'] = [1.0, 2.0, 3.0, ...] # 这里的数据需要根据实际情况进行填充
2.然后将处理后的数据作为 dataname 传入 feeds.PandasData 中:
df = df[['sec_code', 'open', 'high', 'low', 'close', 'close_nfq', 'volume', 'openinterest']]
data = bt.feeds.PandasData(dataname=df, fromdate=dt_start, todate=dt_end)
这样,就可以将增加的个性列 'close_nfq' 传递到 backtrader 中进行使用。在 backtrader 中,可以通过以下方式来获取该列的数据:
class MyStrategy(bt.Strategy):
def __init__(self):
self.dataclose = self.datas[0].close
self.dataclose_nfq = self.datas[0].close_nfq