Estrategia de negociación VSTOP y RSI

El autor:¿ Qué pasa?, Fecha: 2023-10-09 15:48:46
Las etiquetas:

Resumen general

Esta estrategia combina los indicadores VSTOP y RSI para ir largo cuando el RSI está sobrecomprado y ir corto cuando el RSI está sobrevendido, mientras que utiliza VSTOP para determinar la dirección de la tendencia y reducir las pérdidas a tiempo cuando la tendencia se invierte.

Estrategia lógica

  1. Calcule el valor del indicador RSI y establezca líneas de sobrecompra y sobreventa.

  2. Calcule el VSTOP, que es una línea de stop loss basada en el rango de fluctuación de precios.

    • Calcular el indicador ATR y establecer el coeficiente ATR multiplicado

    • Registre el precio máximo y el precio mínimo

    • Según el estado de tendencia alcista is_uptrend, calcule la línea de stop loss actual: stop = is_uptrend? max - mult * ATR : min + mult * ATR

    • Actualizar la línea de stop loss: vstop1 = is_uptrend? max(vstop_prev, stop) : min(vstop_prev, stop)

    • Cuando ocurre la inversión de tendencia, restablecer la línea stop loss entrar

  3. Cuando el RSI está sobrevendido, si el precio cruza por encima de VSTOP, corta; cuando el RSI está sobrecomprado, largo.

Análisis de ventajas

  • La combinación del indicador de tendencia y el indicador de sobrecompra/sobreventa ayuda a captar las oportunidades de reversión en los mercados de tendencia.

  • El uso de VSTOP para establecer el stop loss controla los riesgos de manera efectiva.

  • Los parámetros flexibles de RSI se pueden optimizar para diferentes productos.

  • VSTOP rastrea sistemáticamente las pérdidas de parada sin intervención manual.

Riesgos y soluciones

  • Si el parámetro ATR se establece demasiado grande o demasiado pequeño, la línea de stop loss no tendría sentido.

  • En los mercados de rango limitado, el RSI puede desencadenar señales de negociación frecuentes, aumentando la frecuencia de negociación y el costo de deslizamiento.

  • La inversión fallida es el principal riesgo de esta estrategia. Los operadores deben observar la dirección de la tendencia en un marco de tiempo más largo para evitar el comercio contra tendencia. Los promedios móviles a largo plazo se pueden usar para determinar la tendencia.

Direcciones de optimización

  • Considere combinar otros indicadores para filtrar señales no válidas, por ejemplo, volumen, canal de Donchian, etc.

  • Optimizar los parámetros basados en los resultados de las pruebas de retroceso para encontrar la combinación óptima de parámetros.

  • Investigar cómo ajustar dinámicamente el coeficiente ATR para adaptarlo a diferentes entornos de mercado.

  • Explorar el cierre de la estrategia durante los períodos de alto riesgo.

Conclusión

Esta estrategia integra el juicio de tendencia y los niveles de sobrecompra / sobreventa para capturar oportunidades de reversión en los mercados de tendencia. VSTOP proporciona una gestión sistemática de stop loss para el control de riesgos. La estrategia se puede mejorar aún más a través de la optimización de parámetros y la combinación de otros indicadores.


/*backtest
start: 2022-10-02 00:00:00
end: 2023-10-08 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Vstop and RSI", overlay=true)

//RSI Section
length = input(2, "RSI Period") 
overSold = input(30, "Oversold Level") 
overBought = input(70, "Overbought Level") 
price = close 
vrsi = rsi (price, length) 

//VSTOP Section
vlength = input(2, "Vstop Length") 
mult = input(2, "Vstop Mult") 
atr_ = atr(vlength) 

max1=0.0 
min1=0.0 
is_uptrend_prev = false 
stop=0.0 
vstop_prev=0.0 
vstop1=0.0 
is_uptrend=false 
is_trend_changed=false 
max_ = 0.0 
min_ = 0.0 
vstop=0.0 

max1 := max(nz(max_[1]), close)
min1 := min(nz(min_[1]), close)


is_uptrend_prev := nz(is_uptrend[1], true)

stop := is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_
vstop_prev := nz(vstop[1])
vstop1 := is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend := close - vstop1 >= 0
is_trend_changed := is_uptrend != is_uptrend_prev
max_ := is_trend_changed ? close : max1
min_ := is_trend_changed ? close : min1
vstop := is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1
plot(vstop, color = is_uptrend ? green : red, style=cross, linewidth=2)

if vrsi > overBought
    strategy.entry("Buy", strategy.long, comment="Buy")
     
if vrsi < overSold and vstop > price
    strategy.entry("Sell", strategy.short, comment="Sell")

Más.