Signal方式
最近发现Backtrader还提供一种Signal的方式来编辑策略,正好最近又看了一本书里面有一个RSI策略的例子用的就是Signal的方式,就分享出来。
首先大概介绍下Backtrader的Signal策略编译方式。有不懂的查阅官方文档
官方的例子是这样的
class MySignal(bt.Indicator):
lines = ('signal',)
params = (('period', 30),)
def __init__(self):
self.lines.signal = self.data - bt.indicators.SMA(period=self.p.period)
如果self.lines.signal
大于零 就是多头信号
小于零 就是空头信号
等于 0 没有信号
backtrader里有五种不同的Signal,分Main和Exit两组。
Main 组:
LONGSHORT: 接受多头和空头两种技术信号。
比如官方的例子:
import backtrader as bt
data = bt.feeds.OneOfTheFeeds(dataname='mydataname')
cerebro.adddata(data)
cerebro.add_signal(bt.SIGNAL_LONGSHORT, MySignal)
cerebro.run()
用的就是SIGNAL_LONGSHORT
LONG:
- 接受为多头信号
- 如果有LONGEXIT,那用来平仓这个多头仓位
- 如果有SHORT没有 LONGEXIT,会先平仓这个多头仓位再来一个空头单子。
SHORT: - 接