
Esta estrategia es una mejora en el clásico indicador RSI, que establece líneas de alerta para comprar y vender, y realiza una operación de compra o venta correspondiente cuando el indicador RSI rompe la línea de alerta. Al mismo tiempo, la estrategia también ofrece una función de cambio de posición larga y corta.
La estrategia se utiliza para activar una señal de compra o venta a través del histograma del indicador RSI.
(1) Calcular el valor del indicador RSI con la fórmula:
RSIMain = (rsi(xPrice, RSIPeriod) - 50) * RSIHistoModify
De ellos, xPrice es la secuencia de precios, RSIPeriod es el parámetro para calcular el RSI, y RSIHistoModify es un factor de escala para el valor del RSI.
(2) Configurar las líneas de alerta BuyAlertLevel y SellAlertLevel. Cuando el indicador RSI está por encima de la línea de alerta de compra, es una señal de compra, y cuando está por debajo de la línea de alerta de venta, es una señal de venta.
(3) Trazar un histograma del RSI para visualizar las señales de compra y venta.
(4) Configurar posiciones pos, cuando se activa la señal, configurar las posiciones pos como 1 (hacer más) o -1 (hacer menos) y elegir entre el comercio hacia adelante o hacia atrás.
(5) La dirección de entrada y el precio según el valor de pos.
(1) Mejora en el uso del indicador RSI para mostrar las señales de compra y venta con mayor claridad.
(2) Parámetros personalizables para ajustar el indicador RSI y las líneas de alerta para adaptarse a diferentes mercados.
(3) Histogramas que muestran de forma intuitiva las señales de compra y venta.
(4) Se puede optar por el comercio hacia adelante o hacia atrás.
(5) La estrategia es simple, clara, fácil de entender y modificar.
(1) Es fácil generar señales erróneas, el indicador RSI es fácil generar señales erróneas.
(2) Sin considerar el stop loss, puede haber un riesgo de pérdidas más grandes.
(3) La configuración incorrecta de los parámetros también puede causar fallas.
(1) En combinación con otros indicadores, se filtran las señales para evitar señales erróneas. Por ejemplo, se considera la ruptura de la cantidad de transacciones.
(2) Establecer un mecanismo de detención de pérdidas
(3) Optimización de parámetros para encontrar el mejor parámetro.
(4) Se puede considerar la combinación con el aprendizaje automático para encontrar automáticamente los parámetros óptimos utilizando algoritmos.
Esta estrategia mejora el uso del indicador RSI, establece líneas de alerta de compra y venta y expresa más claramente las señales de compra y venta. Tiene una mayor utilidad en comparación con el indicador RSI original.
/*backtest
start: 2022-12-22 00:00:00
end: 2023-12-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 22/12/2016
// This simple indicator modified RSI
// You can use in the xPrice any series: Open, High, Low, Close, HL2, HLC3, OHLC4 and ect...
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="RSI HistoAlert Strategy")
RSIPeriod = input(13, minval=1)
BuyAlertLevel = input(-10)
SellAlertLevel = input(10)
RSIHistoModify = input(1.5)
reverse = input(false, title="Trade reverse")
hline(0, color=purple, linestyle=line)
hline(BuyAlertLevel, color=green)
hline(SellAlertLevel, color=red)
xPrice = close
RSIMain = (rsi(xPrice, RSIPeriod) - 50) * RSIHistoModify
rsiHcolor = iff(RSIMain >= 0 , green,
iff(RSIMain < 0, red, black))
pos = iff(RSIMain > BuyAlertLevel, 1,
iff(RSIMain < SellAlertLevel, -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(RSIMain, color=blue, title="RSI HistoAlert")
plot(RSIMain, color=rsiHcolor, title="Histogram", style = histogram, linewidth = 1)