Esta estrategia es una versión mejorada del indicador RSI desarrollado por John Ehlers.
Calcule el precio promedio xValue utilizando 6 barras.
Calcular la suma ascendente CU23 y la suma descendente CD23 sobre la base de xValue.
Se calculará el valor normalizado de RES nRes como CU23/(CU23 + CD23).
Generar señales largas/cortas comparando las nRes con los umbrales.
Opción para revertir las señales.
Introduzca largo / corto basado en las señales.
La estrategia suaviza efectivamente la curva RSI mejorando su cálculo, reduciendo las señales falsas hasta cierto punto. El filtrado adicional y la optimización de parámetros pueden mejorar el rendimiento. Pero persiste algún retraso como un sistema de impulso. En general, un sistema de ruptura simple y confiable vale la pena una mayor investigación y optimización.
/*backtest start: 2023-09-13 00:00:00 end: 2023-09-19 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 20/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 Backtest ver.2") Length = input(10, minval=1) TopBand = input(0.8, step=0.01) LowBand = input(0.2, step=0.01) reverse = input(false, title="Trade reverse") hline(TopBand, color=red, linestyle=line) hline(LowBand, color=green, linestyle=line) 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))) 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")