用backtrader对浦发银行股票进行移动平均策略,并用Backtrader_plotting作图
时间: 2023-07-12 12:45:54 浏览: 169
backtrader_plotting:为 backtrader 绘制插件以支持 Bokeh(也许更多)
好的,我会为您介绍如何使用backtrader对浦发银行股票进行移动平均策略,并用Backtrader_plotting作图。
首先,您需要安装backtrader和backtrader_plotting。您可以使用以下命令进行安装:
```
pip install backtrader
pip install backtrader_plotting
```
接下来,您可以使用以下代码创建一个backtrader策略类,该策略基于20天和50天移动平均线的交叉:
```python
import backtrader as bt
from datetime import datetime
class MyStrategy(bt.Strategy):
params = (
('sma1', 20),
('sma2', 50),
)
def __init__(self):
self.sma1 = bt.indicators.SimpleMovingAverage(self.data, period=self.params.sma1)
self.sma2 = bt.indicators.SimpleMovingAverage(self.data, period=self.params.sma2)
self.crossover = bt.indicators.CrossOver(self.sma1, self.sma2)
def next(self):
if not self.position:
if self.crossover > 0:
self.buy()
elif self.crossover < 0:
self.close()
```
在这个策略中,我们使用了两个简单移动平均线(SMA),一个20天SMA和一个50天SMA。我们使用CrossOver指标来检测这两个SMA何时交叉。
接下来,我们可以使用以下代码来获取浦发银行股票数据,并将其加载到backtrader中:
```python
data = bt.feeds.YahooFinanceData(
dataname='600000.SS',
fromdate=datetime(2019, 1, 1),
todate=datetime(2021, 1, 1),
reverse=False
)
cerebro = bt.Cerebro()
cerebro.adddata(data)
cerebro.addstrategy(MyStrategy)
```
在这个代码片段中,我们使用了bt.feeds.YahooFinanceData来获取浦发银行的股票数据。我们指定了数据的起始时间和结束时间,并将数据加载到backtrader中。
最后,我们可以使用以下代码来运行backtrader并使用backtrader_plotting进行绘图:
```python
cerebro.run()
from backtrader_plotting import Bokeh
plot = Bokeh(style='bar', plot_mode='single', scheme=BokehTradimo())
cerebro.plot(plot)
```
在这个代码片段中,我们首先使用cerebro.run()来运行backtrader。接下来,我们使用backtrader_plotting中的Bokeh类来创建一个交互式图表,并使用cerebro.plot()方法将策略的结果绘制到图表中。
完成上述步骤后,您就可以看到浦发银行股票的移动平均策略图表了。
阅读全文