我如何在 streamlit 中显示 return by backtrader 的图表?
How I display the graph that return by backtrader in streamlit?
我尝试使用 python 中的回溯交易库对股票数据进行回溯测试。我使用这个简单的策略
class CrossOver(bt.SignalStrategy):
def __init__(self):
sma=bt.ind.SMA(period=50)
price=self.data
crossover=bt.ind.CrossOver(price,sma)
self.signal_add(bt.SIGNAL_LONG,crossover)
然后我 运行 它并尝试绘制它并在 streamlit
中显示
cerebro=bt.Cerebro()
cerebro.addstrategy(CrossOver)
cerebro.adddata(data)
cerebro.run()
pl=cerebro.plot()
st.pyplot(pl)
但我无法在流光中看到图表。有谁知道如何在 streamlit 中显示 backtrader 的图表?提前致谢。
我对 backtrader 不太熟悉,所以我从他们的 documentation on how to create a plot. The data used in the plot can be downloaded from their github repository 中举了一个例子。
解决方案包含以下步骤:
确保我们使用不向用户显示图表的 matplotlib 后端,因为我们想在 Streamlit 应用程序中显示它,而 backtrader 的 plot() 函数显示图表。这可以使用:
matplotlib.use('Agg')
从 backtrader 的 plot() 函数中获取 matplotlib 图。这可以使用:
figure = cerebro.plot()[0][0]
以流光显示情节。这可以使用:
st.pyplot(figure)
总计:
import streamlit as st
import backtrader as bt
import matplotlib
# Use a backend that doesn't display the plot to the user
# we want only to display inside the Streamlit page
matplotlib.use('Agg')
# --- Code from the backtrader plot example
# data can be found in there github repo
class St(bt.Strategy):
def __init__(self):
self.sma = bt.indicators.SimpleMovingAverage(self.data)
data = bt.feeds.BacktraderCSVData(dataname='2005-2006-day-001.txt')
cerebro = bt.Cerebro()
cerebro.adddata(data)
cerebro.addstrategy(St)
cerebro.run()
figure = cerebro.plot()[0][0]
# show the plot in Streamlit
st.pyplot(figure)
输出:
我尝试使用 python 中的回溯交易库对股票数据进行回溯测试。我使用这个简单的策略
class CrossOver(bt.SignalStrategy):
def __init__(self):
sma=bt.ind.SMA(period=50)
price=self.data
crossover=bt.ind.CrossOver(price,sma)
self.signal_add(bt.SIGNAL_LONG,crossover)
然后我 运行 它并尝试绘制它并在 streamlit
中显示cerebro=bt.Cerebro()
cerebro.addstrategy(CrossOver)
cerebro.adddata(data)
cerebro.run()
pl=cerebro.plot()
st.pyplot(pl)
但我无法在流光中看到图表。有谁知道如何在 streamlit 中显示 backtrader 的图表?提前致谢。
我对 backtrader 不太熟悉,所以我从他们的 documentation on how to create a plot. The data used in the plot can be downloaded from their github repository 中举了一个例子。
解决方案包含以下步骤:
确保我们使用不向用户显示图表的 matplotlib 后端,因为我们想在 Streamlit 应用程序中显示它,而 backtrader 的 plot() 函数显示图表。这可以使用:
matplotlib.use('Agg')
从 backtrader 的 plot() 函数中获取 matplotlib 图。这可以使用:
figure = cerebro.plot()[0][0]
以流光显示情节。这可以使用:
st.pyplot(figure)
总计:
import streamlit as st
import backtrader as bt
import matplotlib
# Use a backend that doesn't display the plot to the user
# we want only to display inside the Streamlit page
matplotlib.use('Agg')
# --- Code from the backtrader plot example
# data can be found in there github repo
class St(bt.Strategy):
def __init__(self):
self.sma = bt.indicators.SimpleMovingAverage(self.data)
data = bt.feeds.BacktraderCSVData(dataname='2005-2006-day-001.txt')
cerebro = bt.Cerebro()
cerebro.adddata(data)
cerebro.addstrategy(St)
cerebro.run()
figure = cerebro.plot()[0][0]
# show the plot in Streamlit
st.pyplot(figure)
输出: