该策略通过结合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 )