Larry Connors拉里·康纳斯 RSI2均值回归策略

Stella981
• 阅读 625

由来 From

我的好朋友燃哥去年曾多次问过我,能不能写一种日内策略。
也有很多朋友来问我,要求写一个网格、做市商策略。
但我一般都直接回绝了,关于这些策略,首先你要有很强的数学功底,起码得有一个数学博士。
另外高频量化比的更是财力,比如说资金量和宽带网速等等。
最重要的是这些违背了我对交易的理解。

那有没有其他办法可以做高频交易呢,当然有。
今天我们就来介绍这个基于 Larry Connors 开发的RSI均值回归策略。

介绍 Introduction

RSI2策略是一种相当简单的均值回归交易策略,由拉里·康纳斯(Larry Connors)开发。
主要是在价格修正期,操作买卖。
当RSI2跌破10时,被认为是超卖了,交易者应该寻找买入机会。
当RSI2涨破90时,被认为是超买了,交易者应该寻找卖出机会。
这是一种相当激进的短期策略,旨在参与持续的趋势。它并非旨在识别主要的顶部或底部。

策略 Strategy

此策略有四个步骤。
1,使用长期移动平均线确定主要趋势;
Connors建议200天移动平均线。长期趋势在高于200天均线时上升,在低于其200天均线时则下降。
交易者应该在200日均线上方寻找买入机会,在200日均线下方寻找卖空机会。

2,选择RSI范围确定买入或卖出机会。
Connors测试的RSI水平在0到10之间进行买入,在90到100之间进行卖出。(基于收盘价)
他发现,当RSI跌破5时买入的收益要高于跌破10时的收益。RSI越低,后续多头头寸的收益就越高。
相对应,在RSI高于95时卖空的收益高于在90上方时的收益。

3,涉及实际的买入或卖空订单及其下达时间。
Connors倡导采用“close”方法。 等待收盘开仓给交易者更大的灵活性,并可以提高进入水平。

4,设置出场位置。

stop应该放在哪里?
Connors不主张使用止损。是的,你没看错。
在经过数十万笔交易的定量测试中,康纳斯发现,使用stop的表现实际上是“损害”了业绩。

但在示例中,康纳斯建议在5天均线上方止损多头头寸,在5天均线下方止损空头头寸。
显然,这是一种短期交易策略,可以快速退出。
或者考虑设置追踪止损或采用SAR合成止损策略。
有时候市场确实确实有向上的漂移的现象,不使用止损可能会导致超额损失和大量亏损。
这就需要使用者自己去考量和决定了。

交易验证 Trading Examples

下图显示了道琼斯工业平均指数SPDR(DIA)以及200天SMA(红色),5周期SMA(粉红色)和2周期RSI。
当DIA高于200天SMA并且RSI(2)跌至5或更低时,出现看涨信号。
当DIA低于200天SMA并且RSI(2)升至95或更高时,会出现看跌信号。
在这12个月中,有7个信号,4个看涨和3个看跌。
在4个看涨信号中,DIA上涨了4次中的3个,这意味着这些信号可能是可以盈利的。
在4个看跌信号中,DIA仅下跌了1次。
在十月份出现看跌信号之后,DIA突破了200天均线。
一旦超过200天均线,则RSI2不会跌至5或更低以产生另一个买入信号。
至于损益,将取决于止损和获利的水平。
Larry Connors拉里·康纳斯 RSI2均值回归策略

第二个示例显示了苹果(APL),它在大部分时间段内都在200天均线上方。
在此期间,至少有十个买入信号。
由于APL从2011年2月下旬至6月中旬呈锯齿状走低,因此很难避免前五个指标的损失。
随着APL从8月至1月呈锯齿状上升,后五个信号的表现要好得多。
从该图表可以看出,许多信号很早。
换句话说,苹果在最初的买入信号之后跌至新低,然后反弹。

Larry Connors拉里·康纳斯 RSI2均值回归策略

结论 Conclusion

RSI2策略为交易者提供了参与持续趋势的机会。
Connors指出,交易者应该购买回调,而不是突破。
相反,交易者应该卖出超卖的反弹,而不是支撑突破。
这个策略符合他的哲学。
即使Connors的测试表明止损影响了业绩,但对于交易者而言,为任何交易系统制定退出和止损策略还是谨慎的。
当情况变得超买或设定止损时,交易者可以退出多头。
同样,当条件超卖时,交易者可以退出空头。
使用这些想法来增强您的交易风格,风险回报偏好和个人判断。

FMZ 源码展示

Connors的策略较简单,就单纯的使用麦语言编写好了。(大家都能看懂)
因为原策略设计标的为美股,采用200日均线作为参考。
而在波动较大的数字货币领域,恰好适合短周期价值回归。
所以我们调整了时间范围为15分钟,ma周期取70。
并使用1倍杠杆进行交易回测。

(*backtest
start: 2019-01-01 00:00:00
end: 2020-05-12 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_OKCoin","currency":"BTC_USD"}]
args: [["TradeAmount",5000,126961],["MaxAmountOnce",5000,126961],["ContractType","quarter",126961]]
*)

liang:=INTPART(1*MONEYTOT*REF(C,1)/100);
//使用一倍杠杆
LC := REF(CLOSE,1);
RSI2: SMA(MAX(CLOSE-LC,0),2,1)/SMA(ABS(CLOSE-LC),2,1)*100;
//RSI2值
ma1:=MA(CLOSE,70);
//MA值

CLOSE>ma1 AND RSI2>90,SK(liang);
CLOSE>ma1 AND RSI2<10,BP(SKVOL);
//大于均线的情况下,rsi>90 开空,rsi<10 平空



CLOSE<ma1 AND RSI2<10,BK(liang);
CLOSE<ma1 AND RSI2>90,SP(BKVOL);
//小于均线的情况下,rsi<10 开多,rsi>90 平多

AUTOFILTER;

策略复制https://www.fmz.com/strategy/207157

回测效果

Larry Connors拉里·康纳斯 RSI2均值回归策略
Larry Connors拉里·康纳斯 RSI2均值回归策略
经过系统回测,我们看到,rsi策略总体胜率较高。其表现让我们比较满意。
最大回撤发生在312,极端行情会对震荡回归一类策略伤害较大。

调整及思考 Tweaking

在RSI2飙升至95以上后,行情可以继续走高;
在RSI2跌至5以下后,行情可以继续走低。
为了纠正这种情况,我们可能要涉及OHLCV分析,日内图表形态,其他动量指标等等。

在RSI2飙升至95以上后,行情可以继续走高,建立空头头寸很危险。
交易者可以考虑通过等待RSI2返回其中心线50以下来过滤此信号。

参考文献

https://school.stockcharts.com
https://www.tradingview.com/ideas/connorsrsi/
https://www.mql5.com/zh/code/22421

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
Oracle ADG究竟是否收费?
!(https://oscimg.oschina.net/oscnet/faaf5c218b3045fe9a38ffa00c48a996.png)前两天微信群中,有位朋友问了,OracleDatabaseStandardEdition11gR2标准版支持activedataguard么?可能平时
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
200的大额人民币即将面世?央行:Yes!
点击上方蓝字关注我们!(https://oscimg.oschina.net/oscnet/2a1c2ac00bf54458a78c48a6c2e547d5.png)点击上方“印象python”,选择“星标”公众号重磅干货,第一时间送达!!(
可莉 可莉
2年前
200的大额人民币即将面世?央行:Yes!
点击上方蓝字关注我们!(https://oscimg.oschina.net/oscnet/2a1c2ac00bf54458a78c48a6c2e547d5.png)点击上方“印象python”,选择“星标”公众号重磅干货,第一时间送达!!(
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
4个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这