La estrategia RSI reverse breakout es una estrategia que utiliza el indicador RSI para identificar situaciones de sobreventa y sobreventa y realizar operaciones reversales cuando el precio rompe la línea media. La estrategia combina la tendencia y el indicador de sobreventa y sobreventa para operar cuando se produce una señal de reversión en el precio de la acción, con el objetivo de capturar oportunidades de reversión a corto plazo en el precio de la acción.
La estrategia se basa principalmente en los siguientes principios:
Utiliza el RSI ((2) para determinar si el precio de la acción está sobrecomprado o sobrevendido. El RSI menor a 25 se considera sobrevendido; el RSI mayor a 80 se considera sobrecomprado.
Utilice la EMA de 200 días para determinar la dirección de la tendencia a largo plazo de las acciones. Una EMA superior es considerada una señal de alza y una EMA inferior es considerada una señal de baja.
Cuando el RSI muestre una señal de sobreventa y el precio cruza por encima de la EMA, realice una operación de beca y haga más. Esta es la típica señal de reversión que indica que el precio de la acción se aleja de la zona de sobreventa y comienza a rebotar.
Cuando el RSI muestra una señal de sobrecompra y el precio baja por encima de la EMA, se realiza una operación bajista, que también es una señal de reversión, que indica que el precio de la acción se desprende de la zona de sobrecompra y comienza a descender.
Con este modo de operación de reversión, esperamos poder entrar en el campo antes de que aparezca una nueva tendencia en el precio de las acciones y capturar oportunidades de reversión.
Concretamente, la condición de entrada de la estrategia es que el RSI sea menor a 25 y el precio haga más cuando se rompa el tren; el RSI sea mayor a 80 y el precio se quede en blanco cuando se rompa el tren. La condición de posición cerrada es la posición cerrada más alta de un día de negociación por debajo del precio más alto del día.
La estrategia de ruptura inversa del RSI combina la tendencia y los factores de reversión y tiene las siguientes ventajas:
Capturar la oportunidad de reversión: mediante el RSI, se puede detectar el momento en que los precios de las acciones se revierten, lo que es clave para lograr ganancias excedentarias.
La razón por la cual es importante: al mismo tiempo, en combinación con la EMA, determinar la dirección de la tendencia general y evitar la operación de contratiempo. La señal de reversión solo se considera cuando la dirección de la tendencia general coincide.
Control de riesgos: El modo de operación inverso permite que el tiempo de mantenimiento de las posiciones en cada dirección no sea demasiado largo, lo que permite controlar el riesgo.
Flexibilidad de los parámetros: los ciclos RSI y EMA se pueden ajustar y optimizar según las condiciones del mercado, lo que hace que la estrategia sea más adaptable.
Frecuencia de negociación moderada: La frecuencia de aparición de la señal de reversión es moderada, no se negocian con demasiada frecuencia y no permanecen inactivos durante mucho tiempo.
Simple y claro: las reglas de la estrategia son simples y claras, no son demasiado complejas. Es fácil de operar en el disco.
La estrategia también tiene los siguientes riesgos:
Riesgo de reversión: el precio de las acciones puede volver a la tendencia original después de que aparezca la señal de reversión, y la reversión fracasará, en este momento la estrategia sufrirá pérdidas. El riesgo se puede controlar tomando un stop loss.
Riesgo de que la tendencia no sea evidente: cuando el precio de las acciones no tiene una tendencia clara, la EMA no puede orientar bien la dirección general, y la estrategia genera más incertidumbre. Se puede optimizar para no invertir cuando el precio de las acciones no tiene una tendencia evidente.
Riesgo de optimización de parámetros: La elección de los parámetros RSI y los períodos EMA tiene una gran influencia en la eficacia de la estrategia. La optimización debe ser repetidamente probada en función de los datos históricos y elegir los parámetros óptimos.
Riesgo de optimización excesiva: en la búsqueda de la combinación óptima de parámetros, es posible que la optimización excesiva conduzca a una sobreadaptación. Se debe realizar una prueba de estabilidad para evitar que funcione bien durante la prueba pero falle en el disco real.
Riesgo de frecuencia de negociación: Si la señal de inversión aparece con demasiada frecuencia, puede causar un exceso de operaciones. Se puede ajustar adecuadamente el parámetro del ciclo RSI para controlar la frecuencia de las operaciones.
La estrategia también puede ser optimizada en los siguientes aspectos:
Evaluar la calidad de las acciones: puede combinar los indicadores básicos de las acciones y seleccionar solo acciones de buena calidad para operaciones estratégicas.
Combinación con otros indicadores: Se pueden introducir otros indicadores como MACD, KD para verificar la señal de reversión y mejorar la fiabilidad de la estrategia.
Parámetros de ajuste dinámico: los parámetros RSI y los ciclos EMA se pueden ajustar dinámicamente según los cambios en el entorno del mercado para mejorar la adaptabilidad de la estrategia.
Optimización de la hora de ingreso: optimización adicional de la hora de ingreso específica, por ejemplo, esperando la confirmación inversa para ingresar.
Estrategia de suspensión: establezca un nivel de suspensión razonable para evitar el retroceso de las ganancias.
Considere los costos de transacción: evalúe el impacto de los puntos de deslizamiento y otros costos de transacción en la estrategia.
Tenga en cuenta la volatilidad de los precios de las acciones: solo las acciones con grandes fluctuaciones como objetivo de la estrategia, lo que hace que la estrategia sea más confiable.
La estrategia de RSI reversión breakout integra la tendencia y la señal de reversión, entrar en el campo antes de que el precio de la acción se revuelva, para capturar una oportunidad más grande. La frecuencia de negociación de la estrategia es moderada, puede controlar el riesgo de manera efectiva.
/*backtest
start: 2022-10-01 00:00:00
end: 2023-10-07 00:00:00
period: 2d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © jocker.soad
//@version=4
// strategy("My Script", overlay=true, initial_capital=10000, default_qty_value=100)
min = input(title="Valor minimo de entrada", defval=25)
qtdAtivos = input(title="Quantidade de ações", defval=1)
// overBuyLine = hline(80)
// overSellLine = hline(min)
var comprado = false
var valorComprado = 0.0
var qtdDiasComprado = 0
var valorLucro = 0.0
valueRsi = rsi(close, 2)
valueSma = sma(close, 200)
valueEma = ema(close, 200)
lastHighPrice = high[2]
buyValidation = valueRsi <= min
sellValidation = close >= lastHighPrice
// plot(lastHighPrice, trackprice=true, offset=-99999, color=color.olive, linewidth=3, style=plot.style_area)
// plot(valueRsi)
// plot(valueSma)
// plot(valueEma)
// plotshape(sellValidation, style=shape.triangledown, color=color.blue)
// plotshape(comprado, style=shape.triangledown, color=color.blue)
startDate = input(title="Inicio Dia", type=input.integer, defval=1, minval=1, maxval=31)
startMonth = input(title="Inicio Mes", type=input.integer, defval=1, minval=1, maxval=12)
startYear = input(title="Inicio Ano", type=input.integer, defval=2018, minval=1800, maxval=2100)
endDate = input(title="Final Dia", type=input.integer, defval=1, minval=1, maxval=31)
endMonth = input(title="Final Mes", type=input.integer, defval=12, minval=1, maxval=12)
endYear = input(title="Final Ano", type=input.integer, defval=2020, minval=1800, maxval=2100)
inDateRange = true
if inDateRange
if close >= valueEma
if comprado == false and buyValidation
qtdDiasComprado := 0
comprado := true
valorComprado := close
strategy.order("buy", true, qtdAtivos, when=buyValidation)
if sellValidation and comprado == true
comprado := false
valorLucro := valorLucro + (close - valorComprado)
valorComprado := 0
strategy.order("sell", false, qtdAtivos, when=sellValidation)
if comprado == true and sellValidation == false
qtdDiasComprado := qtdDiasComprado + 1
// plot(valorLucro, color=color.lime)