Estrategia de seguimiento de tendencias para cruces de RSI y MA


Fecha de creación: 2024-02-20 15:31:15 Última modificación: 2024-02-20 15:31:15
Copiar: 1 Número de Visitas: 850
1
Seguir
1617
Seguidores

Estrategia de seguimiento de tendencias para cruces de RSI y MA

Descripción general

La estrategia determina la tendencia del mercado y el momento de entrada en el mercado mediante el cruce del indicador RSI con la media MA de dos períodos diferentes. La estrategia solo hace más cuando el RSI está por encima de su propia media de 26 períodos, y toma una posición baja cuando el RSI está por debajo de su propia media de 26 períodos para controlar el riesgo.

Principio de estrategia

La estrategia utiliza dos líneas medias MA de 12 y 26 períodos. Cuando la línea rápida de 12 períodos atraviesa la línea lenta de 26 períodos, se considera que el mercado entra en una tendencia alcista; cuando la línea rápida atraviesa la línea lenta, se considera que el mercado entra en una tendencia descendente.

Al mismo tiempo, la estrategia introduce el indicador RSI para determinar las zonas de sobreventa y sobreventa. Sólo cuando el RSI está por encima de su propia línea media de 26 ciclos, se abre una posición más alta en el cruce de oro en la línea media; sólo cuando el RSI está por debajo de su propia línea media de 26 ciclos, se abre una posición más baja en el cruce de muerte en la línea media. Esto evita la apertura forzada de posiciones en caso de sobreventa o sobreventa, lo que controla el riesgo.

Análisis de las ventajas

Esta estrategia combina la línea media y el indicador RSI para determinar la tendencia y el momento de entrada, para poder seguir la tendencia de manera efectiva. Introducir el indicador RSI como condición de filtro, puede reducir el número de posiciones abiertas y evitar ser atrapado en situaciones de agitación. Sin establecer un stop loss, puede seguir la tendencia de manera adecuada para obtener mayores ganancias.

Análisis de riesgos

Debido a que no se establecen paros, si se hace un error de juicio, las pérdidas pueden aumentar. Si el mercado se desvía considerablemente, también puede causar grandes pérdidas. Además, las condiciones de filtración del RSI, si se establecen incorrectamente, también pueden perder una buena oportunidad de entrada.

Se puede considerar el establecimiento de un stop loss para controlar la pérdida máxima. Se pueden ajustar adecuadamente los parámetros del RSI para buscar mejores condiciones de filtración. Si las fluctuaciones en el mercado son más grandes, se pueden ajustar adecuadamente los parámetros de la media, utilizando una media más lenta para determinar la tendencia.

Dirección de optimización

La estrategia puede ser optimizada en los siguientes aspectos:

  1. Prueba la combinación de las medias de la MA de diferentes períodos para encontrar los parámetros de la media que mejor se correspondan con las características de la situación actual.

  2. Prueba de diferentes parámetros de ciclo de RSI, diferentes condiciones de filtrado, optimización de la hora de entrada.

  3. Añadir otros indicadores o condiciones de filtrado para mejorar la estabilidad del sistema. Por ejemplo, agregar indicadores de capacidad, indicadores de volumen de transacción, etc. Indicadores relacionados con el juicio de tendencias.

  4. Optimización de las estrategias de stop loss y control de los riesgos al mismo tiempo que se sigue la tendencia. Se pueden probar las estrategias de stop loss como el stop loss de seguimiento, el stop loss porcentual y el stop loss dinámico.

Resumir

La estrategia es en general más simple y directa, a través de la medianía de la tendencia de juicio cruzado, RSI evita la apertura forzada de la posición, por lo que el seguimiento de la tendencia de obtener mejores beneficios. Se puede perfeccionar la estrategia por medio de la optimización de los parámetros, la adición de otros indicadores, etc., para que sea más adecuado para el complejo y cambiante entorno del mercado.

Código Fuente de la Estrategia
/*backtest
start: 2023-02-13 00:00:00
end: 2024-02-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2

strategy(title = "EMA Cross Strategy", shorttitle = "EMA Cross",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
StartYear = input(2018, "Backtest Start Year")
StartMonth = input(1, "Backtest Start Month")
StartDay = input(1, "Backtest Start Day")
UseStopLoss = input(false,"UseStopLoss")
//rsiLong = true
rsi1 = rsi(close, 14)

window() => true

stopLoss = input(20, title = "Stop loss percentage(0.1%)")
//stopLoss = input(200, title = "Stop loss percentage(0.1%)")

maFastSource   = input(defval = open, title = "Fast MA Source")
maFastLength   = input(defval = 12, title = "Fast MA Period", minval = 1)
// long ma
maSlowSource   = input(defval = open, title = "Slow MA Source")
maSlowLength   = input(defval = 26, title = "Slow MA Period", minval = 1)

maFast = ema(maFastSource, maFastLength)
maSlow = ema(maSlowSource, maSlowLength)

//12 and 26=9%; 3 and8=2%; 26 and 55=2%; when selling on a cross under
//maFastRSI = ema(rsi1, 12)
//maSlowRSI = ema(rsi1, 26)

fast = plot(maFast, title = "Fast MA", color = #7a8598, linewidth = 2, style = line, transp = 50)
slow = plot(maSlow, title = "Slow MA", color = #e08937, linewidth = 2, style = line, transp = 50)


longEMA = crossover(maFast, maSlow)
exitLong = crossunder(maFast, maSlow) // 5% in 2018
//exitLong = crossunder(close, maFast) // 15% in 2018
//exitLong = crossunder(rsi1, maFastRSI) // 13%

shortEMA = crossover(maSlow, maFast)
exitShort = crossover(maFast, maSlow)

//if (rsi1 < ema(rsi1,7))
//rsiLong = false

//if (longEMA and (rsi1 >= highest(rsi1,10)))
//if (longEMA)
if (longEMA and (rsi1 > ema(rsi1,26)))  //RSI ema values optimal from 19 to 35
    strategy.entry("LongId", strategy.long, when=window())

//strategy.close_all(when = rsi1 > 60) // 80=26%, 90=n/a, 70=15%, 60=16% long only
//strategy.close_all(when = (shortEMA and (rsi1 <= ema(rsi1,26)))) //10% gain in 2018 long only
//strategy.close_all(when = (rsi1 <= ema(rsi1,120))) //26=17% 14=2% 42=15%
//strategy.close_all(when = (shortEMA)) // 5% gain in 2018 long only
//strategy.close_all(when = exitLong) 

//if (shortEMA and not(rsiLong))
//if (shortEMA)
if (shortEMA and (rsi1 <= ema(rsi1,26)))
    strategy.entry("ShortId", strategy.short, when=window())

if (UseStopLoss)
    strategy.exit("StopLoss", "LongId", loss = close * stopLoss / 1000 / syminfo.mintick)
    strategy.exit("StopLoss", "ShortId", loss = close * stopLoss / 1000 / syminfo.mintick)