该策略运用John Ehlers开发的一种改进型相对强弱指数(RSI)指标,该指标通过特殊的平滑方法降低滞后,从而产生更可靠的交易信号。该策略可以在参数设置中轻松改变做多和做空方向。
该策略首先计算一个平滑价格,即当前收盘价与前3日的收盘价平均值。然后计算该平滑价格上涨和下跌的momentum,再通过normalize的方式计算出0-1之间的RSI值。最后根据RSI高于0.5为看多信号,RSI低于0.5为看空信号,产生交易指令。
该策略的核心在于改进的RSI指标计算方式。传统RSI仅看一个周期的价格变化,这导致随着周期参数增大,滞后也越严重。Ehlers的思路是考量多个周期的价格变化趋势,并进行加权平均,这样就能在降低滞后的情况下平滑价格变化带来的短期噪声。
具体来说,该策略不是简单看涨跌比例,而是计算价格上涨和下跌的momentum值。然后再normalize求出0-1区间的RSI。这样便能充分反映出价格变化趋势,并产生更可靠的交易信号。
相比传统RSI指标,该策略通过改进后的平滑RSI具有以下优势:
总的来说,该策略集成了RSI指标的优点,并改进了其中的滞后、平滑度等弱点。这使得我们能利用改进后更强大和可靠的RSI信号,在降低市场噪声干扰的同时,及时抓住趋势变化机会。
尽管该策略对RSI指标进行了有益改进,但仍然存在一定风险需要注意:
建议通过以下方法降低策略风险:
该策略可以从以下方面进行进一步优化:
通过不断优化参数设置、信号过滤和组合等方法,可以将该策略打造成一个更强大、可靠、带有趋势意识的RSI交易系统。这将大幅提高策略的胜率和盈利能力。
该策略通过改进RSI的计算方法实现更好的平滑效果,有效降低滞后并提高信号质量。策略优势主要体现在平滑价格变化、及时捕捉趋势转折等方面。但仍需要注意一定的风险,并通过持续优化不断提升策略效果。总体来说,该策略为RSI指标的应用提供了新的思路和方法,也为我们的交易决策带来更多价值。
/*backtest
start: 2022-09-19 00:00:00
end: 2023-09-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 16/11/2017
// This is new version of RSI oscillator indicator, developed by John Ehlers.
// The main advantage of his way of enhancing the RSI indicator is smoothing
// with minimum of lag penalty.
//
// You can change long to short in the Input Settings
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Smoothed RSI")
Length = input(10, minval=1)
reverse = input(false, title="Trade reverse")
xValue = (close + 2 * close[1] + 2 * close[2] + close[3] ) / 6
CU23 = sum(iff(xValue > xValue[1], xValue - xValue[1], 0), Length)
CD23 = sum(iff(xValue < xValue[1], xValue[1] - xValue, 0), Length)
nRes = iff(CU23 + CD23 != 0, CU23/(CU23 + CD23), 0)
pos = iff(nRes == 0, -1,
iff(nRes == 1, 1, nz(pos[1], 0)))
possig = iff(reverse and pos == 1, -1,
iff(reverse and pos == -1, 1, pos))
if (possig == 1)
strategy.entry("Long", strategy.long)
if (possig == -1)
strategy.entry("Short", strategy.short)
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(nRes, color=blue, title="Smoothed RSI")