Estrategia de trading cuantitativo basada en StochRSI


Fecha de creación: 2023-12-07 16:05:17 Última modificación: 2023-12-07 16:05:17
Copiar: 0 Número de Visitas: 630
1
Seguir
1621
Seguidores

Estrategia de trading cuantitativo basada en StochRSI

Descripción general

Esta estrategia se desarrolló basándose en el indicador StochRSI. La estrategia utiliza principalmente el indicador StochRSI para determinar el exceso de compra y venta, en combinación con el indicador RSI para filtrar algunas señales falsas y obtener ganancias cuando el indicador StochRSI muestra áreas de venta libre y áreas de venta libre.

Principio de estrategia

Esta estrategia utiliza principalmente el indicador StochRSI para determinar las zonas de sobreventa y sobreventa en el mercado. El indicador StochRSI se compone de líneas K y D, donde la línea K refleja el valor del RSI actual en el rango de precios RSI en el período más reciente, y la línea D es la media móvil de la línea K. Cuando la línea K cruza la línea D, se puede hacer más para la zona de sobreventa; cuando la línea K cruza la línea D para la zona de sobreventa, se puede hacer vacío.

Concretamente, la estrategia primero calcula el valor del indicador RSI de longitud 14, y luego aplica el indicador StochRSI al indicador RSI. La configuración de los parámetros del indicador StochRSI tiene una longitud de 14, la línea de ciclo de suavización K es 3, y la línea D es 3. Cuando la línea K atraviesa la zona de venta por exceso configurada por el usuario (por defecto 1), haga más; cuando la línea K debajo atraviesa la zona de venta por exceso configurada por el usuario (por defecto 99), haga vacío.

Además, la estrategia también establece los parámetros de stop loss y trailing. El parámetro de stop loss es por defecto 10000; el stop loss está configurado según el parámetro como una parada de trailing curva, con un número de trailing points por defecto de 300 y un desplazamiento de 0 .

Análisis de las ventajas

  1. El uso del indicador StochRSI para determinar zonas de sobreventa es más fiable que el indicador RSI solo
  2. Combinación de las señales de filtro RSI para evitar falsas rupturas
  3. Configuración de los riesgos de control del mecanismo de frenado de parada

Análisis de riesgos

  1. El StochRSI podría estar en una situación de falsedad
  2. Se necesita una configuración razonable de los parámetros de sobrecompra y sobreventa, de lo contrario se operará mal
  3. Un punto de parada demasiado pequeño es fácilmente engañable, y un punto de parada demasiado grande puede generar ganancias limitadas.

Para los riesgos anteriores, se puede establecer un ciclo de parámetros más largo o considerar su uso en combinación con otros indicadores para filtrar señales, adaptar los parámetros de sobreventa a los diferentes mercados y probar diferentes parámetros de stop-loss.

Dirección de optimización

  1. Se puede considerar su uso en combinación con otros indicadores, como MACD, líneas de Brin, etc., para filtrar señales falsas
  2. Se pueden probar diferentes configuraciones de ciclo de parámetros para adaptarse a más situaciones de mercado
  3. Puede optimizar el punto de parada de pérdidas, probar varias veces en la prueba de respuesta para encontrar el parámetro óptimo

Resumir

Esta estrategia se basa en el indicador StochRSI para determinar las zonas de sobreventa y sobreventa. En comparación con el indicador RSI solo, el StochRSI combina la idea de KDJ para determinar con mayor precisión el punto de inflexión. Al mismo tiempo, combina el RSI para filtrar las señales falsas y configurar el riesgo de control de stop loss.

Código Fuente de la Estrategia
/*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")