该策略通过结合123反转形态与平滑RSI指标,实现更准确地捕捉趋势反转点,以获得更高的胜率。策略可用于任何周期的任何品种,是一种非常通用的趋势反转交易策略。
123反转形态判断:当前两日收盘价构成高低点,第三日收盘价高于前一日收盘价时,为底部反转信号;当前两日收盘价构成低高点,第三日收盘价低于前一日收盘价时,为顶部反转信号。
平滑RSI指标判断:平滑RSI指标通过加权移动平均的方法,减少RSI指标的滞后性。当RSI指标上穿设定的高位阈值线时,为买入信号;当RSI指标下穿设定的低位阈值线时,为卖出信号。
策略信号:只有当123反转形态信号和平滑RSI指标信号同向时,才产生交易信号。做多信号为123反转形成底部信号且RSI指标上穿高位;做空信号为123反转形成顶部信号且RSI指标下穿低位。
将趋势判断指标RSI与反转形态结合,可更准确判断趋势反转点。
平滑RSI指标通过平滑处理,可减少普通RSI指标的滞后性问题。
123反转形态简单清晰,容易判断实现。
可灵活调整参数,适用于不同品种和周期,使用范围广泛。
可方便优化和改进,有很高的拓展空间。
123反转形态较为简单,对小波段调整不敏感,可能产生虚假信号。
平滑RSI指标优化程度不够,调参数容易过优化。
需要反转形态和RSI指标同向才产生信号,信号产生频率可能不高。
未考虑交易成本,小资金可能难以盈利。
缺乏止损机制,无法控制单笔损失。
优化平滑RSI参数,找到最佳的参数组合。
添加其他指标或形态进行过滤,提高信号质量。
添加止损机制,控制单笔损失。
考虑交易成本,调整参数以适应不同资金量。
测试不同品种和周期的参数设置,寻找最优参数组合。
增加自动参数优化功能。
该策略整体思路清晰简单,通过反转形态结合趋势判断指标,可有效判断潜在的趋势反转点。策略优势在于可广泛适用和方便优化,但也存在一定的风险,需要注意防范并持续优化。整体来说,该策略是一种通用且实用的短线反转交易策略,值得深入研究与应用。
/*backtest
start: 2023-09-15 00:00:00
end: 2023-10-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 20/07/2021
// This is combo strategies for get a cumulative signal.
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50.
// The strategy sells at market, if close price is lower than the previous close price
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// 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.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
vFast = sma(stoch(close, high, low, Length), KSmoothing)
vSlow = sma(vFast, DLength)
pos = 0.0
pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0)))
pos
SRSI(Length, TopBand,LowBand) =>
pos = 0.0
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 > TopBand, 1,
iff(nRes < LowBand, -1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & Smoothed RSI", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- Smoothed RSI ----")
LengthRSI = input(10, minval=1)
TopBand = input(0.8, step=0.01)
LowBand = input(0.2, step=0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posSRSI = SRSI(LengthRSI, TopBand,LowBand )
pos = iff(posReversal123 == 1 and posSRSI == 1 , 1,
iff(posReversal123 == -1 and posSRSI == -1, -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)
if (possig == 0)
strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )