LOADING
564 字
3 分钟
bt_06信号模式之RSI

参考文章:常用技术指标之一文读懂RSI指标:https://blog.csdn.net/richardzhutalk/article/details/125348446

公式代码(略)#

信号策略研发#

趋势(区间突破)#

实例#


交易思路:
RSI指标大于70,认为牛市信号,买入
RSI指标小于60,认为牛市结束,平多
RSI指标小于30,认为熊市,做空
RSI指标大于40,认为熊市结束,平空

抽象化和信号表达式#

信号表达式:

open_signal= if(rsi> 70,1,if(ris<30,-1,0))
exit_signal_long=rsi-60
exit_signal_short=rsi-40

bt代码#

class RSI_101(bt.Indicator):
lines = ('signal',)#k-d
params = dict(period=10)
plotinfo = dict(subplot=True)
def __init__(self):
rsi = bt.talib.RSI(self.datas[0].close, timeperiod=self.p.period)
self.lines.signal = bt.If(rsi>70,1,bt.If(rsi<30,-1,0))
class RSI_60(bt.Indicator):
lines = ('signal',)
params = dict(period=10)
# plotinfo = dict(subplot=False)
def __init__(self):
rsi = bt.talib.RSI(self.datas[0].close, timeperiod=self.p.period)
self.lines.signal = rsi-60
class RSI_40(bt.Indicator):
lines = ('signal',)
params = dict(period=10)
# plotinfo = dict(subplot=False)
def __init__(self):
rsi = bt.talib.RSI(self.datas[0].close, timeperiod=self.p.period)
self.lines.signal = rsi - 40

可视化和正确性验证#

python ./signal_template.py --plot --market_type longshort --open_signal RSI_101 --exit_signal_long RSI_60 --exit_signal_short RSI_40 --fromdate 2022-01-10 --todate 2023-01-01

del02
验证: 开仓点:开多时rsi>70,开空时rsi<30
平多:rsi死叉60
平空:rsi金叉40
成立,可见思路无问题

波动(区间震荡)#

实例#

交易思路:
RSI指标小于70(死叉70水平线),认为即将回调,开空
RSI指标小于60,认为回调结束,平空
RSI指标大于30(金叉30水平线),认为即将反转上涨,做多
RSI指标大于40,认为反转结束,平多

抽象化和信号表达式#

信号表达式:

open_signal_tmp01= bt.min(crossover(rsi,70),0)# 将-1,0,1转为-1,0.也就是只保留死叉那部分信号(丢弃金叉信号)
open_signal_tmp02= bt.max(crossover(rsi,30),0)# 将-1,0,1转为1,0.也就是只保留金叉那部分信号(丢弃死叉信号)
open_signal=open_signal_tmp01+open_signal_tmp02
exit_signal_long=rsi-60
exit_signal_short=rsi-40

bt代码#

class RSI_inner101(bt.Indicator):
lines = ('signal',)
params = dict(period=10)
plotinfo = dict(subplot=True)
def __init__(self):
rsi = bt.talib.RSI(self.datas[0].close, timeperiod=self.p.period)
open_signal_tmp01 = bt.Min(bt.ind.CrossOver(rsi, 70), 0) # 将-1,0,1转为-1,0.也就是只保留死叉那部分信号(丢弃金叉信号)
open_signal_tmp02 = bt.Max(bt.ind.CrossOver(rsi, 30), 0) # 将-1,0,1转为1,0.也就是只保留金叉那部分信号(丢弃死叉信号)
open_signal = open_signal_tmp01 + open_signal_tmp02
self.lines.signal = open_signal

可视化和正确性验证#

python ./signal_template.py --plot --market_type longshort --open_signal RSI_inner101 --exit_signal_long RSI_60 --exit_signal_short RSI_40 --fromdate 2022-01-10 --todate 2023-01-01 --stock_id 300760.XSHE

del02

回测#

趋势(区间突破)#

多头模式#

多空模式#

波动(区间震荡)#

多头模式#

多空模式#

总结#

整体效果并不好,主要是rsi指标变化较快,容易急速突破导致假信号

bt_06信号模式之RSI
/posts/quant/153bec4f/
作者
思想的巨人
发布于
2023-06-23
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时