Estrategia de cruce de medias móviles RSI


Fecha de creación: 2023-11-07 15:35:58 Última modificación: 2023-11-07 15:35:58
Copiar: 0 Número de Visitas: 1008
1
Seguir
1621
Seguidores

Estrategia de cruce de medias móviles RSI

Descripción general

La estrategia de cruce de línea media RSI es una estrategia aplicada a la negociación de criptomonedas. La estrategia aplica el promedio móvil al indicador RSI y emite señales de compra y venta según el cruce del RSI con su promedio móvil.

Principio de estrategia

La estrategia primero calcula el indicador RSI. El indicador RSI se basa en cambios de alza y bajada en un período de tiempo determinado, lo que refleja la fortaleza de los precios. El RSI mayor a 70 es un área de sobrecompra y menor a 30 es una zona de sobreventa.

Luego, la estrategia aplica un promedio móvil basado en el indicador RSI. El promedio móvil puede filtrar las fluctuaciones aleatorias y determinar la dirección de la tendencia. Aquí se establece un promedio móvil RSI de 10 ciclos.

Cuando el RSI está por encima de su promedio móvil, se considera una señal de compra; cuando el RSI está por debajo de su promedio móvil, se considera una señal de venta. Se negocia de acuerdo con estas dos señales.

En el código, primero se calcula el indicador RSI de los períodos de longitud. Luego se calcula el promedio móvil de los períodos de 10 RSI ma. Cuando ma pasa por rsi, se compra; cuando ma pasa por rsi, se vende.

Además, el código traza un gráfico lineal de rsi, ma, y un gráfico columnar de rsi-ma. Traza una línea divisoria de rsi=70, rsi=30 y marca la correspondiente flecha de señal en el gráfico al comprar y vender.

Análisis de las ventajas estratégicas

  • El indicador RSI puede juzgar sobrecompras y sobreventas, y el promedio móvil puede filtrar las fluctuaciones aleatorias, que se combinan para encontrar puntos de cambio de tendencia.
  • El cruce de línea media RSI es una estrategia de negociación más madura que puede filtrar algunas señales falsas.
  • El código de la estrategia es sencillo, claro y fácil de entender. La cartografía es completa y las señales de negociación se pueden observar claramente.
  • La estrategia es más efectiva para las criptomonedas con una tendencia más clara.

Análisis de riesgos estratégicos

  • El RSI y las medias móviles utilizan parámetros periódicos incorrectos que pueden generar demasiadas señales erróneas.
  • La mera intersección de indicadores no puede evitar completamente la estafa.
  • Las comisiones de transacción tienen un cierto impacto en las ganancias.
  • El mercado de las criptomonedas es muy volátil y hay que estar atento al riesgo de pérdidas.

En función del riesgo, se pueden ajustar los parámetros para optimizar el efecto del indicador, reducir adecuadamente las posiciones, establecer líneas de stop loss y filtrar las señales con el análisis de tendencias.

Dirección de optimización de la estrategia

  • La mejor combinación de RSI y línea media que se puede estudiar con diferentes parámetros de ciclo
  • Puede aumentar su posición cuando la tendencia es fuerte y reducir su posición cuando la tendencia no es clara
  • Se puede configurar el stop loss dinámico para seguir la tendencia
  • Se puede explorar la combinación de otros indicadores con el RSI para formar nuevas señales de negociación
  • Se pueden explorar modelos de aprendizaje automático basados en esta estrategia para mejorar la probabilidad de éxito de la estrategia

Resumir

La estrategia de cruce de línea media RSI combina las ventajas de los indicadores de tendencia y los indicadores de filtración, es relativamente madura y confiable. La lógica de la estrategia es simple y fácil de entender, la implementación del código es completa y, en general, es una mejor estrategia de comercio de criptomonedas. Pero cualquier estrategia tiene lugares que necesitan ser optimizados, que necesitan ser constantemente probados y ajustados, y complementados con el juicio de tendencia, para obtener un mejor efecto de la estrategia.

Código Fuente de la Estrategia
/*backtest
start: 2022-10-31 00:00:00
end: 2023-11-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("RSI w MA Strategy", shorttitle="RSI w MA Strategy", overlay=false, initial_capital=10000, currency='USD',process_orders_on_close=true)

//TIME FRAME AND BACKGROUND CONTROL/////////////////////////////////////////////
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(01, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)
testStopYear = input(2022, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ? 
   color.teal : na
//bgcolor(testPeriodBackgroundColor, transp=50)
testPeriod() => true
////////////////////////////////////////////////////////////////////////////////

src = close, len = input(27, minval=1, title="Length")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
window = input(10, "RSI MA Window")
ma = sma(rsi,window)
plot(rsi, color=color.orange)
colorr= ma > rsi ? color.red : color.green
plot(ma,color=colorr)
band1 = hline(70)
band0 = hline(30)
fill(band1, band0, color=color.purple, transp=90)
diff = rsi - ma

plot(diff,style= plot.style_columns,transp=50,color = colorr)

plotshape(crossunder(rsi,ma)?rsi:na,title="top",style=shape.triangledown,location=location.absolute,size=size.tiny,color=color.red,transp=0)
plotshape(crossover(rsi,ma)?rsi:na,title="bottom",style=shape.triangleup,location=location.absolute,size=size.tiny,color=color.lime,transp=0)

buySignal = crossover(rsi,ma)
sellSignal = crossunder(rsi,ma)

//TRADE CONTROL/////////////////////////////////////////////////////////////////
if testPeriod()
    if buySignal
        strategy.close("Short", qty_percent = 100, comment = "Close Short")
        strategy.entry("Long", strategy.long, qty=.1)

    if sellSignal
        strategy.close("Long", qty_percent = 100, comment = "Close Long")
        strategy.entry("Short", strategy.short, qty=.1)

////////////////////////////////////////////////////////////////////////////////