Estrategia de negociación cuantitativa basada en StochRSI

El autor:¿ Qué pasa?, Fecha: 2023-12-07 16:05:17
Las etiquetas:

img

Resumen general

Esta estrategia se desarrolla sobre la base del indicador StochRSI. La estrategia utiliza principalmente el indicador StochRSI para juzgar situaciones de sobrecompra y sobreventa. Combinado con el indicador RSI para filtrar algunas señales falsas, vaya corto cuando el indicador StochRSI muestra un área de sobrecompra y vaya largo cuando muestra un área de sobreventa para obtener ganancias.

Principio de la estrategia

Esta estrategia aplica principalmente el indicador StochRSI para juzgar las áreas de sobrecompra y sobreventa en el mercado. El indicador StochRSI consta de la línea K y la línea D. La línea K refleja la posición del valor actual del RSI en el rango de precios del RSI durante un período reciente. La línea D es el promedio móvil de la línea K. Cuando la línea K cruza por encima de la línea D, es un área de sobrecompra y se pueden tomar posiciones largas. Cuando la línea K cae por debajo de la línea D, es un área de sobreventa y se pueden tomar posiciones cortas.

Específicamente, la estrategia primero calcula el valor del indicador RSI de 14 períodos, y luego aplica el indicador StochRSI en el indicador RSI. Los parámetros del indicador StochRSI se establecen con una longitud de 14, período de línea K suavizado de 3 y período de línea D suavizado de 3. Cuando la línea K cruce por encima del área de sobreventa definida por el usuario (default es 1), se tomará una posición larga. Cuando la línea K caiga por debajo del área de sobrecompra definida por el usuario (default es 99), se tomará una posición corta.

Además, los parámetros de stop loss y take profit se establecen en la estrategia.

Análisis de ventajas

  1. El uso del indicador StochRSI para determinar las áreas sobrecompradas y sobrevendidas es más confiable que el indicador RSI único
  2. El filtrado de señales con RSI evita falsas rupturas
  3. Establecimiento de mecanismos de stop loss y take profit para controlar los riesgos

Análisis de riesgos

  1. El indicador StochRSI puede tener señales falsas
  2. Necesidad de establecer los parámetros de sobrecompra y sobreventa razonablemente, de lo contrario que causará mal funcionamiento
  3. Si el punto de stop loss es demasiado pequeño, es fácil quedar atrapado.

Para los riesgos anteriores, se pueden establecer parámetros de ciclo más largo o considerar su uso en combinación con otros indicadores para filtrar las señales, ajustar los parámetros de sobrecompra y sobreventa para adaptarse a diferentes mercados y probar diferentes parámetros de stop loss y take profit.

Direcciones de optimización

  1. Considere el uso en combinación con otros indicadores como MACD, bandas de Bollinger, etc. para filtrar señales falsas.
  2. Prueba de diferentes ajustes del ciclo de parámetros para adaptarse a más condiciones de mercado
  3. Optimizar el stop loss y tomar puntos de ganancia por múltiples pruebas de retroceso para encontrar los parámetros óptimos

Resumen de las actividades

Esta estrategia se opera en base a las áreas de sobrecompra y sobreventa juzgadas por el indicador StochRSI. En comparación con el indicador RSI único, StochRSI combina la idea de KDJ y puede juzgar los puntos de inflexión con más precisión. Al mismo tiempo, las señales falsas se filtran por el RSI y los riesgos se controlan mediante stop loss y take profit. Todavía hay un gran margen de optimización, puede combinarse con otros indicadores o configuraciones de parámetros optimizadas.


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

//@version= 2
strategy("STOCHRSI JURE", overlay=false)
lengthrsi = input(10)
overSold = input( 1 )
overBought = input(99)

call_trail_stop = input(300)
call_trail_offset = input(0)
call_sl = input(10000)

price = ohlc4
vrsi = rsi(price, lengthrsi)

smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
lengthRSI = input(14, minval=1)
lengthStoch = input(14, minval=1)
src = input(close, title="RSI Source")

rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)


plot( k, color=blue, linewidth=1, title="K")
plot( d, color=red, linewidth=1, title="D")

if (crossover(k, overSold) ) 
    strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND",  comment="BUY")
    strategy.exit("BUY EXIT", "BUY", trail_points=call_trail_stop, trail_offset=call_trail_offset, loss = call_sl)


if (crossunder(k, overBought) ) 
    strategy.entry("SELL", strategy.short,stop=close, oca_name="TREND", comment="SELL")
    strategy.exit("SELL EXIT", "SELL", trail_points=call_trail_stop, trail_offset=call_trail_offset, loss = call_sl)
    

//if (  ( crossover(k,d)) and ( (vrsi<overSold) or crossover(vrsi,overSold) )  and   year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil) 
//    strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND", oca_type=strategy.oca.cancel, comment="BUY")
//else
//    strategy.cancel(id="BUY")

//if ( ( crossunder(k,d) ) and ( (vrsi >overBought) or crossunder(vrsi,overBought) ) and   year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil ) 
//    strategy.entry("SELL", strategy.short,stop=close, oca_name="TREND", oca_type=strategy.oca.cancel, comment="SELL")
//else
//    strategy.cancel(id="SELL")
    
    
    

Más.