获取 Backtrader 问题中的数据

Ris*_*hab 4 python backtrader

我正在尝试用 Python 在 Backtrader 上编写回溯测试策略,下面是给我错误的代码。我使用的是截至 2021 年 7 月 2 日的最新版本的 backtrader。

import backtrader as bt
import backtrader.feeds as btfeeds
from datetime import datetime

cerebro = bt.Cerebro()
cerebro.broker.setcash(100000)
data = btfeeds.YahooFinanceData(dataname="SPY", fromdate=datetime(2016, 6, 25), 
todate=datetime(2021, 6, 25))
cerebro.adddata(data)
cerebro.run()
Run Code Online (Sandbox Code Playgroud)

我得到的错误是

回溯(最近一次调用最后一次):文件“c:\Users\risha\PycharmProjects\PythonDataScience\BacktraderBacktesting\TestingData.py”,第 9 行,在 cerebro.run() 文件“C:\Users\risha\anaconda3\lib\ site-packages\backtrader\cerebro.py”,第 1127 行,运行 runstrat = self.runstrategies(iterstrat) 文件“C:\Users\risha\anaconda3\lib\site-packages\backtrader\cerebro.py”,第 1210 行,在 runstrategies data._start() 文件“C:\Users\risha\anaconda3\lib\site-packages\backtrader\feed.py”中,第 203 行,在 _start self.start() 文件“C:\Users\risha \anaconda3\lib\site-packages\backtrader\feeds\yahoo.py”,第 355 行,在 start super(YahooFinanceData, self).start() 文件“C:\Users\risha\anaconda3\lib\site-packages\ backtrader\feeds\yahoo.py”,第 94 行,在 start super(YahooFinanceCSVData, self).start() 文件“C:\Users\risha\anaconda3\lib\site-packages\backtrader\feed.py”中,第 674 行,在开始 self.f = io.open(self.p.dataname, 'r') FileNotFoundError: [Errno 2] 没有这样的文件或目录: 'SPY'

我很困惑为什么会发生这种情况。我也尝试通过在 Cebro 中添加策略来运行此程序,但这仍然导致相同的错误。有人可以帮我解决这个问题吗?

Ris*_*hab 8

我实际上找到了解决方案。如果使用的话,代码:

import yfinance as yf

data = bt.feeds.PandasData(dataname=yf.download('SPY', '2015-07-06', '2021-07-01', auto_adjust=True))
Run Code Online (Sandbox Code Playgroud)

这将允许您从网上获取任何股票的数据。您还必须使用:

pip install yfinance
Run Code Online (Sandbox Code Playgroud)

在运行此代码之前。