首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python错误: FileNotFoundError:[Errno 2]没有这样的文件或目录:'AAPL‘

Python错误: FileNotFoundError:[Errno 2]没有这样的文件或目录:'AAPL‘
EN

Stack Overflow用户
提问于 2020-03-17 01:12:48
回答 3查看 4.6K关注 0票数 1

我试图使用Python3.8中的套餐AAPL历史上的股票价格进行回溯测试,使用backtraderYahooFinanceData模块从雅虎金融获得的股票价格。

问题:数据似乎是从Yahoo下载的,但是在回溯测试过程中,我们得到了一个错误:

FileNotFoundError: Errno 2没有这样的文件或目录:'AAPL‘

知道我们怎么能解决这个问题吗?

系统:

  • Mac 10.15.3
  • Python 3.8.0
  • backtrader 1.9.74.123

Python代码复制错误

代码语言:javascript
复制
from datetime import datetime
import backtrader as bt

class SmaSignal(bt.Signal):
    param = (('period', 20), )

    def __init__(self):
        self.lines.signal = self.data - bt.ind.SMA(period=self.p.period)

data = bt.feeds.YahooFinanceData(dataname='AAPL',
                                fromdate=datetime(2018, 1, 1),
                                todate=datetime(2018, 12, 31))
cerebro = bt.Cerebro(stdstats=False)
cerebro.adddata(data)
cerebro.broker.setcash(1000.0)
cerebro.add_signal(bt.SIGNAL_LONG, SmaSignal)
cerebro.addobserver(bt.observers.BuySell)
cerebro.addobserver(bt.observers.Value)

print(f'Starting Portfolio Value: {cerebro.broker.getvalue():.2f}')
cerebro.run()
print(f'Final Portfolio Value: {cerebro.broker.getvalue():.2f}')
cerebro.plot(iplot=True, volume=False)

错误堆栈

代码语言:javascript
复制
Traceback (most recent call last):
  File "02.py", line 21, in <module>
    cerebro.run()
  File "/Users/x/opt/anaconda3/envs/test/lib/python3.8/site-packages/backtrader/cerebro.py", line 1127, in run
    runstrat = self.runstrategies(iterstrat)
  File "/Users/x/opt/anaconda3/envs/test/lib/python3.8/site-packages/backtrader/cerebro.py", line 1210, in runstrategies
    data._start()
  File "/Users/x/opt/anaconda3/envs/test/lib/python3.8/site-packages/backtrader/feed.py", line 203, in _start
    self.start()
  File "/Users/x/opt/anaconda3/envs/test/lib/python3.8/site-packages/backtrader/feeds/yahoo.py", line 352, in start
    super(YahooFinanceData, self).start()
  File "/Users/x/opt/anaconda3/envs/test/lib/python3.8/site-packages/backtrader/feeds/yahoo.py", line 94, in start
    super(YahooFinanceCSVData, self).start()
  File "/Users/x/opt/anaconda3/envs/test/lib/python3.8/site-packages/backtrader/feed.py", line 674, in start
    self.f = io.open(self.p.dataname, 'r')
FileNotFoundError: [Errno 2] No such file or directory: 'AAPL'
EN

回答 3

Stack Overflow用户

发布于 2020-03-17 05:17:28

我在他们的论坛网站上搜索了一下,发现了12,这表明Yahoo已经有几年没起作用了。要么使用不同的数据提要,要么将数据保存为csv文件并将其读取。

票数 4
EN

Stack Overflow用户

发布于 2021-07-15 13:48:30

错误是,对Yahoo的请求失败了,然后backtrader返回到尝试读取数据的本地副本,但在某种程度上也失败了。几年前,Yahoo发生了变化,自那以后,backtrader一直没有更新过。这是一个大问题,因为就连教程示例也坏了!

@mathias在他的回答中提到的更改被建议包含在backtrader in 此拉请求中,但它被关闭了。backtrader已经减缓了开发速度,一个叉子backtrader2正在争夺它的接班人。backtrader2发现差异修正解决了Yahoo请求失败的根本原因。他们在此拉请求的上游此拉请求中提出了同样的解决方案,并于最近进行了合并。然而,随着创建者的离去,没有办法向PyPI发布新的版本。backtrader2还不能接管backtrader (https://pypi.org/project/backtrader/)的PyPI名称空间。

那么,如果没有在backtrader上发布,如何安装固定版本的backtrader2或更新更多的backtrader2?您可以使用以下两种方法从GitHub安装最新的开发版本

  • pip install git+https://github.com/mementum/backtrader.git#egg=backtrader
  • pip install git+https://github.com/backtrader2/backtrader.git#egg=backtrader

backtrader使用最新的matplotlib时也会出现问题,修复程序已经合并,但没有发布。您可以从源代码(https://stackoverflow.com/a/66871735/6068036)中找到类似的安装方法。

票数 2
EN

Stack Overflow用户

发布于 2020-05-11 18:54:24

Yahoo最近改变了它们的输出,特别是API响应的内容类型(预期为“text/csv”,但返回“text/平原”)。要修复它,您必须更改为backtrader/feed/yahoo.py文件中的代码。

在第330行中,将:

代码语言:javascript
复制
if 'text/csv' not in ctype:

通过以下方式:

代码语言:javascript
复制
if ctype not in ['text/csv', 'text/plain']:

有一个拉请求与backtrader打开,以修复这个包,但它还没有被执行。

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

https://stackoverflow.com/questions/60715059

复制
相关文章

相似问题

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