python - cerebro pandas 数据框加载并运行
问题描述
数据框 ( df
) 看起来像:
Open High Low Close VWAP Volume
Date
1996-01-01 83.0 83.00 83.0 83.0 83.00 100
1996-01-02 83.0 83.95 80.6 80.6 82.79 700
1996-01-03 82.0 82.90 82.0 82.7 82.35 400
1996-01-04 82.5 82.50 82.5 82.5 82.50 200
1996-01-05 80.0 80.00 79.0 79.0 79.50 200
使用这些定义和加载数据:
class pandasDataFeed(bt.feeds.PandasData):
lines = ('vwap')
params = (
('fromdate', dt.datetime(2005, 1, 1)),
('todate', dt.datetime.now().date()),
('dtformat', '%Y-%m-%d'),
('datetime', None),
('high', 'High'),
('low', 'Low'),
('open', 'Open'),
('close', 'Close'),
('volume', 'Volume'),
('vwap', 'VWAP')
)
data = pandasDataFeed(dataname=df)
cerebro.adddata(data)
但是,如果我执行cerebro.run()
它会给AttributeError: 'datetime.date' object has no attribute 'to_pydatetime'
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "venv\lib\site-packages\backtrader\cerebro.py", line 1127, in run
runstrat = self.runstrategies(iterstrat)
File "venv\lib\site-packages\backtrader\cerebro.py", line 1212, in runstrategies
data.preload()
File "venv\lib\site-packages\backtrader\feed.py", line 438, in preload
while self.load():
File "venv\lib\site-packages\backtrader\feed.py", line 479, in load
_loadret = self._load()
File "venv\lib\site-packages\backtrader\feeds\pandafeed.py", line 268, in _load
dt = tstamp.to_pydatetime()
AttributeError: 'datetime.date' object has no attribute 'to_pydatetime'
我究竟做错了什么?
解决方案
知道了。
索引在dt.datetime.date
,将其更改为dt.datetime
。现在可以了。
推荐阅读
- python - 将 Python 中的 Python 列表插入 SQL 表中
- java - 尝试使用 setCellRenderer 将 JLabel 转换为 JList
- r - 致命错误:无法初始化 JIT - R 3.5.1 和 RStudio 1.4463
- sftp - sftp ls - 将最后一个 mod 时间格式更改为始终显示年份和时间
- amazon-ec2 - SSH 与多个虚拟机
- sql - SQL Server:检查列中是否存在特定字符串
- node.js - heroku 的下一个/节点应用程序部署错误
- netsuite - 使用 Suite Script 2.0 在销售订单中添加新行项目
- git - Azure devops——确保本地文件匹配存储库分支
- javascript - 使用 setTimeout() 的 Promise.all() 问题,状态未更新