代码之家  ›  专栏  ›  技术社区  ›  Dr.PB

braneopandas数据帧加载和运行

  •  0
  • Dr.PB  · 技术社区  · 3 年前

    数据帧( 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'
    

    我做错了什么?

    0 回复  |  直到 3 年前
        1
  •  2
  •   Dr.PB    3 年前

    知道了。

    索引在 dt.datetime.date ,更改为 dt.datetime 。它现在工作了。