首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Backtrader问题中获取数据

在Backtrader问题中获取数据
EN

Stack Overflow用户
提问于 2021-07-02 18:38:03
回答 3查看 2.9K关注 0票数 3

我试图用Python在Backtrader上编写一个反测试策略,下面是给我错误的代码。从2021年7月2日起,我使用的是最新版本的反向交易者。

代码语言:javascript
复制
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()

我所犯的错误是

回溯(最近一次调用):文件"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(迭代)文件"C:\Users\risha\anaconda3\lib\site-packages\backtrader\cerebro.py",第1210行,在运行策略()文件"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行,在开始超级(YahooFinanceData,self).start()文件"C:\Users\risha\anaconda3\lib\site-packages\backtrader\feeds\yahoo.py",第94行,在开始超级(YahooFinanceCSVData,文件"C:\Users\risha\anaconda3\lib\site-packages\backtrader\feed.py",第674行,在StartSel.f= io.open(self.p.dataname,'r') FileNotFoundError: Errno 2中没有这样的文件或目录:“间谍”

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-07-05 16:18:34

实际上我想出了解决办法。如果您使用,代码:

代码语言:javascript
复制
import yfinance as yf

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

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

代码语言:javascript
复制
pip install yfinance

在你运行这个代码之前。

票数 3
EN

Stack Overflow用户

发布于 2021-07-19 06:01:36

雅虎!金融稍微改变了它们的结构。现在需要用于http请求上的数据retreival的headers。因为backtrader在第271行有一个“旧版本”的yahoo.py,所以您需要添加标题。一旦做好就行了。

这种情况也发生在熊猫和熊猫数据采集器上,如果你使用它,就需要升级它们。(已经排序)

对于yahoo.py第271行中的Backtrader:

代码语言:javascript
复制
 crumb = None
 sess = requests.Session()
 ## ADD HEADERS
 sess.headers['User-Agent'] = 'backtrader'
 ## END HERE
 for i in range(self.p.retries + 1):  # at least once
     resp = sess.get(url, **sesskwargs)
     if resp.status_code != requests.codes.ok:

这里有yahoo.py 变化的原始链接。

后援交易者可能很快就会推出升级。

用于Pandas和Pandas-DataReader

代码语言:javascript
复制
pip install --upgrade pandas
pip install --upgrade pandas-datareader

祝你今天愉快;)

票数 2
EN

Stack Overflow用户

发布于 2021-07-04 17:55:32

试着升级你的后援交易者。7月3日有一个新的发行版。我确实更新了它,但它仍然不起作用。问题是它没有bt.feed.YahooFinance,以正确的格式获取数据。是一种新的虫子..。我也在等他们把它修好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68229953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档