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.
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.
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.
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")