在中国商品期货投机市场中,价格的涨跌就像多方和空方拔河比赛,哪方的力量更强大,价格趋势就会跟着哪个方向走,因此分析期货市场中的双方力量就很重要,而RSI指标就是分析多方和空方力量的神器。
RSI英文全称Relative Strength Index,即相对强弱指标,由著名的技术分析派大师威尔斯·维尔德于1786年6月创造。它是根据一段时间内,上涨幅度的和与下跌幅度的和的比率绘制的一种技术曲线,能够反映出市场一定时期内的景气程度,最早就是应用于期货交易,尤其是适合用于短线交易。
RSI的原理很简单,就是通过一系列的数学运算,得出商品期货市场中买卖双方的力量强弱对比,从而预测未来价格的趋势方向。比如在螺纹钢期货市场中,如果超过一半的人要买,这就是买方市场,价格自然就会上涨;如果超过一半的人要卖,这就是卖方市场,价格就会下跌。
RSI指标的数值范围是0~100,但大部分都是在20~80之间波动,如果RSI的值超过80就说明该品种被过度买入,在这段时期内,多头获利丰厚,落袋为安卖出纷涌而至,抛售压力相应增大,容易导致价格回落。如果RSI的值低于20就说明该品种被过度卖出,价格容易出现反弹。
第1步:计算价格上涨(U)和下跌幅度(D)
注意:U和D不能是负数,如果相邻K线价格相同,则U和D均等于零
YC := REF(C, 1); // 上根K线收盘价
U := MAX(C - YC, 0); // 计算收盘价与上根K线收盘价的差,在该差值与0之间取最大值
D := ABS(C - YC); // 计算收盘价与上根K线收盘价的差,取该差值绝对值的2周期移动平均值
第2步:计算相对强弱
RS := SMA(U, 2, 1) / SMA(D, 2, 1); // 分别计算U和D的2周期平均值,计算U和D的比值
第3步:计算相对强弱指标
RSI ^^ RS * 100; // 将比率乘以100,保证了其值范围在0~100之间
从上面的公式可以看出,RSI的计算过程非常简单,一句话可以概括为:在某个时间段价格上涨所产生的波动占整个波动的百分比。
回测配置 品种:豆一主力连续合约 数据周期:2015-02-22至2020-12-16 K线周期:日线 滑点:开平仓各2跳
回测绩效 资金曲线
世界上没有完美的预测工具,RSI也不例外,根据选择K线周期的不同,RSI给出的结果也不同,理论上短周期的RSI能及时给出交易信号,但可靠性较差。中长周期的RSI信号可靠,但反应滞后,常常错过交易机会。
总的来说,RSI指标主要用于辅助参考,并不意味着市场趋势一定会向它预示的方向发展,尤其在市场波动剧烈时,还应该参考其他指标进行综合分析。
注意:本文内容旨在对量化交易初学者进行基础教育,本文策略不可直接实盘使用。
(*backtest start: 2015-02-22 00:00:00 end: 2020-12-16 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}] args: [["VALUE",90],["ContractType","a888",126961]] *) YC := REF(C, 1); // 上根K线收盘价 U := MAX(C - YC, 0); // 计算收盘价与上根K线收盘价的差,在该差值与0之间取最大值 D := ABS(C - YC); // 计算收盘价与上根K线收盘价的差,取该差值绝对值的2周期移动平均值 RS := SMA(U, 2, 1) / SMA(D, 2, 1); // 分别计算U和D的2周期平均值,计算U和D的比值 RSI ^^ RS * 100; // 将比率乘以100,保证了其值范围在0~100之间 AVERAGE ^^ MA(C, LEN); C < AVERAGE AND RSI < 100 - VALUE, BK; C > AVERAGE AND RSI < 100 - VALUE, BP; C > AVERAGE AND RSI > VALUE, SK; C < AVERAGE AND RSI > VALUE, SP; AUTOFILTER;template: strategy.tpl:40:21: executing "strategy.tpl" at <.api.GetStrategyListByName>: wrong number of args for GetStrategyListByName: want 7 got 6