La estrategia de ruptura de impulso RSI-BB combina el índice de fuerza relativa (RSI) y los indicadores de bandas de Bollinger (BB) para la negociación de ruptura. Utiliza RSI para determinar las tendencias del mercado y los niveles de sobrecompra / sobreventa, y BB para identificar los puntos de ruptura.
El código calcula primero los indicadores RSI y BB.
El RSI se calcula de la siguiente manera:
up = rma(max(change(close), 0), 30)
down = rma(-min(change(close), 0), 30)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
Donde el up mide el movimiento de los precios al alza durante 30 períodos, el down mide el movimiento de los precios a la baja, y rsi se calcula sobre la base de la relación de up a down.
El BB se calcula de la siguiente manera:
basis = sma(close, 50)
dev = 0.2 * stdev(close, 50)
upper = basis + dev
lower = basis - dev
Donde la base es la media móvil de 50 períodos, dev es 0,2 veces la desviación estándar, superior e inferior son las bandas.
bbi es el índice de ancho de banda de Bollinger, calculado como:
bbr = close>upper? 1 : close<lower? -1 : 0
bbi = bbr - bbr[1]
bbr comprueba si el cierre rompe la banda superior o inferior. La ruptura es 1, el desglose es -1, de lo contrario 0. bbi es la diferencia entre el bbr actual y el anterior. bbi positivo indica ruptura ascendente, negativo indica descendente.
Las señales estratégicas se determinan como:
long = rsi>52 and rsi<65 and bbi>0.11 and bbi<0.7
short = rsi<48 and rsi>35 and bbi<-0.11 and bbi>-0.7
Ir largo cuando el RSI está entre 52-65 y el BBI está entre 0.11 y 0.7.
La combinación de RSI y BB proporciona señales más confiables.
El RSI de 30 períodos filtra algo de ruido del mercado y se centra en las tendencias principales.
BB de 50 períodos con 0.2 desviación estándar ayuda a filtrar las flechas.
Los umbrales de BBI filtran las fugas falsas.
Las zonas RSI largo/corto de 52-65 y 35-48 proporcionan cierto amortiguador para evitar operaciones perdidas.
Las estrategias de breakout son propensas a ser atrapadas en los golpes, necesitan gestionar el riesgo con stop loss.
Los resultados de las pruebas de retroceso pueden estar sobreajustados, el rendimiento en vivo puede variar.
Los movimientos extremos del mercado pueden afectar al stop loss, lo que resulta en grandes pérdidas.
Es necesario optimizar los parámetros del índice de rendimiento y del índice de pérdida, incluidos los períodos y los umbrales.
El precio de la orden puede afectar significativamente el rendimiento en vivo.
Prueba diferentes combinaciones de parámetros RSI y BB para encontrar los ajustes óptimos.
Añadir otros indicadores como MACD, KD para la filtración de señales.
Optimice las zonas RSI larga / corta para filtrar más ruido.
Optimizar los umbrales dinámicos de BBI para filtrar mejor las falsificaciones.
Añadir filtro de tendencia para evitar el comercio contra la tendencia principal.
Prueba diferentes técnicas de stop loss para encontrar el control óptimo del riesgo.
Prueba diferentes tipos de orden para minimizar el impacto del deslizamiento.
La estrategia RSI-BB combina las ventajas de usar indicadores de tendencia y impulso. Los resultados de las pruebas de retroceso son prometedores, pero el rendimiento en vivo puede variar debido a factores del mundo real como deslizamiento y stop loss. Los parámetros y filtros deben optimizarse en función de los resultados de las pruebas de retroceso.
/*backtest start: 2023-10-03 00:00:00 end: 2023-11-02 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //Based on Larry Connors RSI-2 Strategy - Lower RSI strategy(title="Spyfrat Strat", shorttitle="SpyfratStrat", overlay=true) src = close, // BB Init source = close length = input(50, minval=1) mult = input(0.2, title="Mult Factor", minval=0.001, maxval=50) alertLevel=input(0.1) impulseLevel=input(0.75) showRange = input(false, type=bool) //RSI CODE up = rma(max(change(src), 0), 30) down = rma(-min(change(src), 0), 30) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) //BB CODE basis = sma(source, length) dev = mult * stdev(source, length) upper = basis + dev lower = basis - dev bbr = source>upper?(((source-upper)/(upper-lower))/10): source<lower?(((source-lower)/(upper-lower))/10) : 0.1 bbi = bbr - nz(bbr[1]) //Rule long = rsi>52 and rsi<65 and bbi>0.11 and bbi<0.7 short = rsi<48 and rsi>35 and bbi<-0.11 and bbi>-0.7 //Trade Entry strategy.entry("long", strategy.long, when=long) strategy.entry("short", strategy.short, when=short) //Trade Exit TP = input(250) * 10 SL = input(20) * 10 TS = input(0) * 10 CQ = 100 TPP = (TP > 0) ? TP : na SLP = (SL > 0) ? SL : na TSP = (TS > 0) ? TS : na strategy.exit("Close Long", "long", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP) strategy.exit("Close Short", "short", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP)