LOADING
607 字
3 分钟
bt_03信号模式之双均线

基于信号思路实现常见策略系列。 参考前文的backtrader信号交易机制,各个技术必须转化为[1,0,-1]的表达方式后(这里用1代表正数,-1代表负数),才能利用backtrader信号交易机制。

公式代码#

由于其产生的信号,本身就是非正即负(或0),所以不需要特别处理。

信号策略研发#

实例,抽象化,交易信号,bt代码

实例#

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

抽象化和信号表达式#


图中红色为多(1),蓝色为空(-1),采用蓝色代替绿色,考虑到部分人红绿色盲。

交易信号表达式

open_singal=fast_ma-close_ma

bt代码#

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

可视化和正确性验证#

Figure_0
主图蓝线就是signal线(做了平移和缩放,否则主图上显示不明显(由于是diff,取值较小))
可见和2均线的交叉点对应,所以信号计算没问题。

回测#

多头模式(longonly)#

股票模式,只允许做多,不允许做空

python ./signal_template.py --plot --main_signal_type longonly --main_signal DoubleMA --fromdate 2022-01-10 --todate 2023-01-01
v3: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%
del01

多空模式(longshort)#

期货模式,既允许做多,也允许做空

python ./signal_template.py --plot --main_signal_type longonly --main_signal DoubleMA --fromdate 2022-01-10 --todate 2023-01-01
v3: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%
del02

总结#

整个区间,趋势性较强,没有反复震荡导致频繁的亏损清仓+反向加仓等操作。

bt_03信号模式之双均线
/posts/quant/326f39d5/
作者
思想的巨人
发布于
2023-06-07
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时