backtrader 绘图错误加载后端 'TkAgg'
backtrader plot error loading backend 'TkAgg'
我尝试使用 backtrader 但每次我尝试绘制一些东西时都会出错...
这段代码,一个工作示例的简单复制粘贴让我犯了这个错误:
ImportError:无法加载需要 'tk' 交互框架的后端 'TkAgg',因为 'qt5' 目前是 运行
import backtrader as bt
from datetime import datetime
class firstStrategy(bt.Strategy):
def __init__(self):
self.rsi = bt.indicators.RSI_SMA(self.data.close, period=21)
def next(self):
if not self.position:
if self.rsi < 30:
self.buy(size=100)
else:
if self.rsi > 70:
self.sell(size=100)
#Variable for our starting cash
startcash = 10000
#Create an instance of cerebro
cerebro = bt.Cerebro()
#Add our strategy
cerebro.addstrategy(firstStrategy)
#Get Apple data from Yahoo Finance.
data = bt.feeds.Quandl(
dataname='AAPL',
fromdate = datetime(2016,1,1),
todate = datetime(2017,1,1),
buffered= True
)
#Add the data to Cerebro
cerebro.adddata(data)
# Set our desired cash start
cerebro.broker.setcash(startcash)
# Run over everything
cerebro.run()
#Get final portfolio Value
portvalue = cerebro.broker.getvalue()
pnl = portvalue - startcash
#Print out the final result
print('Final Portfolio Value: ${}'.format(portvalue))
print('P/L: ${}'.format(pnl))
#Finally plot the end results
cerebro.plot(style='candlestick')
我正在使用最新更新的 anaconda spyder4 python 和 matplotlib
你可以试试:
import matplotlib
matplotlib.use('QT5Agg')
我尝试使用 backtrader 但每次我尝试绘制一些东西时都会出错... 这段代码,一个工作示例的简单复制粘贴让我犯了这个错误: ImportError:无法加载需要 'tk' 交互框架的后端 'TkAgg',因为 'qt5' 目前是 运行
import backtrader as bt
from datetime import datetime
class firstStrategy(bt.Strategy):
def __init__(self):
self.rsi = bt.indicators.RSI_SMA(self.data.close, period=21)
def next(self):
if not self.position:
if self.rsi < 30:
self.buy(size=100)
else:
if self.rsi > 70:
self.sell(size=100)
#Variable for our starting cash
startcash = 10000
#Create an instance of cerebro
cerebro = bt.Cerebro()
#Add our strategy
cerebro.addstrategy(firstStrategy)
#Get Apple data from Yahoo Finance.
data = bt.feeds.Quandl(
dataname='AAPL',
fromdate = datetime(2016,1,1),
todate = datetime(2017,1,1),
buffered= True
)
#Add the data to Cerebro
cerebro.adddata(data)
# Set our desired cash start
cerebro.broker.setcash(startcash)
# Run over everything
cerebro.run()
#Get final portfolio Value
portvalue = cerebro.broker.getvalue()
pnl = portvalue - startcash
#Print out the final result
print('Final Portfolio Value: ${}'.format(portvalue))
print('P/L: ${}'.format(pnl))
#Finally plot the end results
cerebro.plot(style='candlestick')
我正在使用最新更新的 anaconda spyder4 python 和 matplotlib
你可以试试:
import matplotlib
matplotlib.use('QT5Agg')