La estrategia de ruptura del RSI es una estrategia de negociación cuantitativa

El autor:¿ Qué pasa?, Fecha: 2023-12-22 14:06:45
Las etiquetas:

img

Resumen general

La estrategia de ruptura del RSI es una estrategia de negociación cuantitativa basada en el indicador del índice de fuerza relativa (RSI). La estrategia genera señales de negociación cuando el RSI rompe los valores de umbral de sobrecompra y sobreventa preestablecidos, es decir, ir largo cuando el RSI está por debajo de 30 y ir corto cuando el RSI está por encima de 70.

Estrategia lógica

La idea central de la estrategia de ruptura del RSI es utilizar el indicador RSI para determinar las condiciones de sobrecompra y sobreventa en el mercado. El RSI calcula la relación de ganancias y pérdidas de precios promedio durante un período de tiempo para reflejar la fortaleza o debilidad reciente de una acción.

La estrategia establece primero los valores de umbral de sobreventa y sobrecompra para el RSI, con valores predeterminados de 30 y 70. Luego, monitorea la línea RSI en tiempo real. Cuando el RSI cruza por debajo del umbral de 70 de arriba a abajo, se genera una señal de venta. Esto indica que el mercado ha entrado en la zona de sobrecompra y es probable que se invierta hacia abajo, por lo que se toma una posición corta. Por el contrario, cuando el RSI rompe por encima del umbral de 30, se genera una señal de compra, lo que indica que es probable que el mercado de sobreventa vuelva a subir, por lo que se toma una posición larga.

De esta manera, la estrategia intenta capturar los puntos de reversión de precios durante las fluctuaciones de las acciones y ajustar las posiciones en consecuencia para "comprar bajo y vender alto".

Ventajas

La estrategia de ruptura del RSI tiene las siguientes ventajas:

  1. El indicador RSI es fácil de calcular e interpretar simplemente observando si la línea del indicador rompe los valores de umbral. Las operaciones se pueden tomar rápidamente cuando se producen señales sin reglas complejas.

  2. Las operaciones se generan por el indicador RSI sin interferencia humana. Al mismo tiempo, las señales de sobrecompra y sobreventa de RSI tienden a ser efectivas, lo que conduce a retornos de estrategia decentes en las pruebas de retroceso.

  3. Los operadores pueden ajustar flexiblemente los parámetros del RSI como los umbrales de sobrecompra / sobreventa para adaptarse a diferentes dinámicas de acciones y mercado.

Los riesgos

La estrategia de ruptura de RSI también conlleva algunos riesgos:

  1. Los parámetros pueden ajustarse para filtrar algunas señales de whippy.

  2. No hay juicio de tendencia. El RSI solo produce señales basadas en niveles de sobrecompra / sobreventa sin juzgar bien la tendencia general. La estrategia tiende a quedar atascada en mercados agitados. Se pueden agregar filtros de tendencia para evitar operaciones contra tendencia.

  3. El RSI suele mostrar una divergencia alcista cuando el precio continúa subiendo mientras que el RSI tiene tendencias a la baja.

Áreas de mejora

La estrategia de ruptura de los índices de crecimiento puede mejorarse de las siguientes maneras:

  1. Incorporar múltiples indicadores para superar las limitaciones del RSI, por ejemplo, promedios móviles para determinar la tendencia del mercado, indicadores de fuerza y filtros de volumen para confirmar las señales.

  2. Optimizar los parámetros del RSI para una mayor estabilidad, incluida la regulación de los umbrales de sobrecompra / sobreventa, el ajuste del filtro de duración de la señal, etc. a través de pruebas rigurosas.

  3. Implementar stop loss y take profit para controlar los riesgos. Por ejemplo, establecer porcentajes o puntos de parada. Evitar pérdidas de un solo comercio de gran tamaño en las ganancias totales. También considere la tendencia y los puntos técnicos para tomar ganancias.

Conclusión

La estrategia de ruptura del RSI es una estrategia cuantitativa de reversión media basada en señales de sobrecompra y sobreventa. Tiene señales simples y claras, capacidades de automatización completa y alta personalización, pero sufre riesgos de corte y descenso. Al optimizar con combinaciones de indicadores y controles de riesgo, se puede sintonizar en una estrategia estable.


/*backtest
start: 2023-11-21 00:00:00
end: 2023-12-21 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Bunghole 2021

strategy(title="My New Strategy", initial_capital = 100000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0, currency = 'USD', overlay=true)

//// Stoploss and Take Profit Parameters
// Enable Long Strategy
enable_long_strategy = input(true, title="Enable Long Strategy", group="SL/TP For Long Strategy",inline="1")
long_stoploss_value = input(defval=50, title='Stoploss %', type=input.float, minval=0.1, group="SL/TP For Long Strategy",inline="2")
long_stoploss_percentage = (close * (long_stoploss_value / 100)) / syminfo.mintick
long_takeprofit_value = input(defval=50, title='Take Profit %', type=input.float, minval=0.1, group="SL/TP For Long Strategy",inline="2")
long_takeprofit_percentage = (close * (long_takeprofit_value / 100)) / syminfo.mintick

// Enable Short Strategy
enable_short_strategy = input(true, title="Enable Short Strategy", group="SL/TP For Short Strategy",inline="3")
short_stoploss_value = input(defval=50, title='Stoploss %', type=input.float, minval=0.1, group= "SL/TP For Short Strategy",inline="4")
short_stoploss_percentage = (close * (short_stoploss_value / 100)) / syminfo.mintick
short_takeprofit_value = input(defval=50, title='Take Profit %', type=input.float, minval=0.1, group="SL/TP For Short Strategy",inline="4")
short_takeprofit_percentage = (close * (short_takeprofit_value / 100)) / syminfo.mintick

// Plot Stoploss & Take Profit Levels
long_stoploss_price = strategy.position_avg_price * (1 - long_stoploss_value/100)
long_takeprofit_price = strategy.position_avg_price * (1 + long_takeprofit_value/100)
short_stoploss_price = strategy.position_avg_price * (1 + short_stoploss_value/100)
short_takeprofit_price = strategy.position_avg_price * (1 - short_takeprofit_value/100)
plot(enable_long_strategy and not enable_short_strategy ? long_stoploss_price: na, color=#ff0000, style=plot.style_linebr, linewidth=2, title="Long SL Level")
plot(enable_long_strategy and not enable_short_strategy ? long_takeprofit_price: na, color=#008000, style=plot.style_linebr, linewidth=2, title="Long TP Level")
plot(enable_short_strategy and not enable_long_strategy ? short_stoploss_price: na, color=#ff0000, style=plot.style_linebr, linewidth=2, title="Short SL Level")
plot(enable_short_strategy and not enable_long_strategy ? short_takeprofit_price: na, color=#008000, style=plot.style_linebr, linewidth=2, title="Short TP Level")

// Date Range
start_date = input(title="Start Date", type=input.integer, defval=1, minval=1, maxval=31, group="Date Range")
start_month = input(title="Start Month", type=input.integer, defval=1, minval=1, maxval=12, group="Date Range")
start_year = input(title="Start Year", type=input.integer, defval=1804, minval=1800, maxval=3000, group="Date Range")
end_date = input(title="End Date", type=input.integer, defval=1, minval=1, maxval=3, group="Date Range")
end_month = input(title="End Month", type=input.integer, defval=1, minval=1, maxval=12, group="Date Range")
end_year = input(title="End Year", type=input.integer, defval=2077, minval=1800, maxval=3000, group="Date Range")
in_date_range = (time >= timestamp(syminfo.timezone, start_year, start_month, start_date, 0, 0)) and (time < timestamp(syminfo.timezone, end_year, end_month, end_date, 0, 0))

//// Inputs   **This is where you enter your indicators for your strategy. For example, I added the RSI indicator.**
//RSI
rsi = rsi(close, 14)
rsi_over_sold = rsi < 30
rsi_over_bought = rsi > 70


//// Strategy  **This is where you create your strategy. For example, We have or buy and sell signals.**
// Creating Long and Short Strategy
buy_signal = rsi_over_sold
sell_signal = rsi_over_bought

// Long Strategy
if buy_signal and in_date_range and enable_long_strategy == true
    strategy.entry("Long", true, when=buy_signal, alert_message="Open Long Position")
    strategy.exit("Long  SL/TP", from_entry="Long", loss=long_stoploss_percentage, profit=long_takeprofit_percentage, alert_message="Your Long SL/TP Limit As Been Triggered.")
    strategy.close("Long", when=sell_signal, alert_message="Close Long Position")
    
// Short Strategy
if sell_signal and in_date_range and enable_short_strategy == true
    strategy.entry("Short", false, when = sell_signal, alert_message="Open Short Position")
    strategy.exit("Short SL/TP", from_entry="Short", loss=short_stoploss_percentage, profit=short_takeprofit_percentage, alert_message="Your Short SL/TP Limit As Been Triggered.")
    strategy.close("Short", when=buy_signal, alert_message="Close Short Position")


Más.