607 字
3 分钟
bt_03信号模式之双均线
基于信号思路实现常见策略系列。 参考前文的backtrader信号交易机制,各个技术必须转化为[1,0,-1]的表达方式后(这里用1代表正数,-1代表负数),才能利用backtrader信号交易机制。
公式代码
由于其产生的信号,本身就是非正即负(或0),所以不需要特别处理。
信号策略研发
实例,抽象化,交易信号,bt代码
实例

交易思路:
点1:快均线由下至上穿过慢均线,说明行情由跌转涨,应该平空仓,开多仓
点2:快均线由上至下穿过慢均线,说明行情由涨转跌,应该平多仓,开空仓
双均线金叉买入(快线从下至上穿过慢线),死叉卖出(快线从上至下穿过慢线)。
抽象化和信号表达式

图中红色为多(1),蓝色为空(-1),采用蓝色代替绿色,考虑到部分人红绿色盲。
交易信号表达式
open_singal=fast_ma-close_mabt代码
class DoubleMA(bt.Indicator): lines = ('signal',) # 声明 signal 线,交易信号放在 signal line 上 params = dict( short_period=5, long_period=20)
def __init__(self): self.s_ma = bt.ind.SMA(period=self.p.short_period) self.l_ma = bt.ind.SMA(period=self.p.long_period) # 短期均线上穿长期均线,取值为1;反之,短期均线下穿长期均线,取值为-1 self.lines.signal = self.s_ma-self.l_ma可视化和正确性验证

主图蓝线就是signal线(做了平移和缩放,否则主图上显示不明显(由于是diff,取值较小))
可见和2均线的交叉点对应,所以信号计算没问题。
回测
多头模式(longonly)
股票模式,只允许做多,不允许做空
python ./signal_template.py --plot --main_signal_type longonly --main_signal DoubleMA --fromdate 2022-01-10 --todate 2023-01-01v3:python ./signal_template.py --plot --market_type longonly --open_signal DoubleMA_11 --fromdate 2022-01-10 --todate 2023-01-01
标的:002466天齐锂业时间:20220110-20230101参数:快均线5,慢均线10回测命令:python ./signal_template.py --plot --market_type longonly --open_signal DoubleMA_11 --fromdate 2022-01-10 --todate 2023-01-01 --stock_id 002466.XSHE回测结果:从5w到7.5w,收益率约50%

多空模式(longshort)
期货模式,既允许做多,也允许做空
python ./signal_template.py --plot --main_signal_type longonly --main_signal DoubleMA --fromdate 2022-01-10 --todate 2023-01-01v3:python ./signal_template.py --plot --market_type longshort --open_signal DoubleMA_11 --fromdate 2022-01-10 --todate 2023-01-01
标的:002466天齐锂业时间:20220110-20230101参数:快均线5,慢均线15可做空(融券)模式下回测结果:初始资金5w,期末资金9w,收益率约80%

总结
整个区间,趋势性较强,没有反复震荡导致频繁的亏损清仓+反向加仓等操作。
部分信息可能已经过时