Tendencia tras la estrategia de cruce de la media móvil

El autor:¿ Qué pasa?, Fecha: 2023-11-01 17:18:13
Las etiquetas:

img

Resumen general

Esta estrategia utiliza los principios de la cruz de oro y la cruz de la muerte de los promedios móviles, combinados con el indicador RSI para ayudar en la identificación y seguimiento de tendencias.

Estrategia lógica

La estrategia se basa en los siguientes principios:

  1. Utilice EMA en lugar de SMA para reflejar mejor los últimos cambios de precios y reaccionar más rápidamente a las rupturas.

  2. Sistema doble de cruce de promedios móviles: el cruce de la EMA a corto plazo por encima de la EMA a largo plazo indica una entrada larga, mientras que el cruce de la EMA a corto plazo por debajo de la EMA a largo plazo indica una entrada corta.

  3. El indicador RSI ayuda a filtrar las falsas rupturas al indicar condiciones de sobrecompra/sobreventa.

  4. Múltiples promedios móviles apilados juntos: EMA de 55 períodos para la señal a corto plazo, EMA de 100 períodos para la tendencia a mediano plazo y EMA de 200 períodos para el filtrado de tendencias a largo plazo.

  5. Ajustes razonables de stop loss y toma de ganancias para controlar el riesgo.

La lógica principal del comercio es:

  1. En el caso de las entidades de crédito, el valor de la exposición será el valor de la inversión.

  2. En el caso de las entidades de crédito, el valor de los derivados de las operaciones de inversión se calcula en función de la posición de mercado de la entidad.

  3. Configurar stop loss y tomar ganancias después de la entrada para optimizar los retornos.

  4. Las posiciones largas/cortas se cierran cuando el índice RSI muestra sobrecompra/sobreventa para evitar los riesgos de reversión.

  5. La combinación de varios períodos de medias móviles explica tanto el seguimiento de la tendencia como la confirmación de la reversión, evitando así quedar atrapados en una consolidación prolongada mientras se sigue la tendencia principal.

Ventajas

Las principales ventajas de esta estrategia son las siguientes:

  1. Lógica simple basada en cruces de promedio móvil, fácil de entender e implementar.

  2. Una reacción más rápida a los cambios de precios y a las inversiones de tendencia mediante el uso de la EMA.

  3. Los períodos de media móvil múltiples son responsables tanto del seguimiento de tendencias como de la identificación de la reversión.

  4. El RSI filtra las fallas y aumenta la precisión de la señal.

  5. Los parámetros de stop loss/take profit por defecto controlan eficazmente los riesgos comerciales.

  6. El valor de las pérdidas se calcula en función de las pérdidas obtenidas en el período de referencia.

Los riesgos

Los principales riesgos de esta estrategia son:

  1. Suelen ser golpeados en mercados volátiles, generando señales inactivas excesivas.

  2. Es posible que los parámetros predeterminados no se adapten a todos los productos y plazos, lo que requiere una optimización.

  3. Es una señal puramente técnica, propensa a cambios fundamentales y riesgos de eventos.

  4. Puede tener un rendimiento inferior cuando el índice sube pero la amplitud del mercado diverge.

  5. El riesgo de obtener ganancias demasiado pronto y perder la mayor parte del movimiento de la tendencia.

Para hacer frente a estos riesgos, se pueden realizar las siguientes optimizaciones:

  1. Añadir filtros como el volumen para evitar falsos brotes.

  2. Prueba posterior para encontrar parámetros óptimos para cada producto.

  3. Stop loss más estrictos y toma de ganancias para limitar los riesgos de la sierra en mercados variados.

  4. Incorpore filtros fundamentales para evitar señales antes de eventos importantes.

Direcciones de optimización

La estrategia se puede optimizar en los siguientes aspectos:

  1. Optimizar los períodos de promedio móvil para encontrar las mejores combinaciones a corto, mediano y largo plazo, mediante el aprendizaje automático, etc.

  2. Pruebe el precio de cierre frente al precio típico para el rendimiento.

  3. Añadir un filtro de volumen para recibir sólo señales en barras de alto volumen.

  4. Optimice las relaciones stop loss/take profit para una mayor precisión o establezca paradas dinámicas basadas en porcentajes.

  5. Construir modelos compuestos con indicadores adicionales como el estocástico, el MACD, las bandas de Bollinger para mejorar el rendimiento.

  6. Pruebas de retroceso en diferentes productos, plazos y condiciones de mercado para determinar la robustez.

  7. Utilice el aprendizaje automático para la optimización de parámetros multidimensionales.

Conclusión

Esta es una estrategia de seguimiento de tendencia fácil de entender basada en una lógica de cruce de promedio móvil simple. Tiene ventajas como una implementación fácil, confiabilidad y alto potencial de personalización. Pero también conlleva riesgos inherentes al mercado, que requieren una optimización continua de parámetros y módulos basados en los resultados de backtest, para hacer que la estrategia sea más robusta e inteligente. Combinar el análisis técnico con la investigación fundamental puede mejorar aún más su integridad y confiabilidad.


/*backtest
start: 2023-10-24 00:00:00
end: 2023-10-31 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © pernath

//@version=5
strategy("TREND_CATCHER", overlay=true, commission_value=0.05, commission_type=strategy.commission.percent, initial_capital=1000)

//#####variables##############
profit_short=input(title='profit_short', defval=27)
stop_short=input(title='stop_short', defval=2)

stop_long=input(title='stop_long', defval=3)
profit_long=input(title='profit_long', defval=35)


media_1=input(title='media_1', defval=55)
media_2=input(title='media_2', defval=100)
resta_medias=input(title='resta_medias', defval=0)
resta_medias2=input(title='resta_medias2', defval=0)

RSI_periodos=input(title='RSI_periodos', defval=42)
//###############VARIABLES###################




//#####Alert#####
id_bot = ""
email_token = ""
long_open =""
long_close =""
short_open =""
short_close =""
//#  {{strategy.order.alert_message}}


//#############################
//#############################

//###############EMA##############/
//plot(ta.ema(close, 1), title='ema 5', color=color.white)
plot(ta.ema(close, 12), title='ema 12', color=color.white)
plot(ta.ema(close, 25), title='ema 25', color=color.white)
plot(ta.ema(close, 30), title='ema 30', color=color.white, linewidth=1)
plot(ta.ema(close, 40), title='ema 40', color=color.white, linewidth=1)
plot(ta.ema(close, 55), title='ema 55', color=color.orange, linewidth=1)
plot(ta.ema(close, 100), title='ema 100', color=color.red, linewidth=1)
plot(ta.ema(close, 200), title='ema 200', color=color.white, linewidth=3)

//#############################/





//######VISUAL#############
EMA50 = ta.ema(close, 55)
EMA100 = ta.ema(close, 100)


estado_medias=EMA50-EMA100




a = plot(EMA50, title="EMA(50)", color=color.orange, linewidth=1 ) 
b = plot(EMA100, title="EMA(100)", color=color.red, linewidth=1 )


var color col = na
col := estado_medias>resta_medias ? color.green : color.red
fill(a,b,color=col,transp=40)


//######VISUAL#############





Go_Short=(ta.crossunder(ta.ema(close,100),ta.ema(close,200)))
Go_Long=((ta.crossover(ta.ema(close,55),ta.ema(close,100))and(ta.ema(close,12)>ta.ema(close,200))))


strategy.close("enter long", (Go_Short),alert_message=long_open)

cancelar_short=((ta.crossunder(ta.ema(close,25),ta.ema(close,6))))



if Go_Short
    strategy.entry("enter short", strategy.short,1, alert_message=short_open) 
  
strategy.exit("cerrar short", "enter short", 1, profit=close*profit_short/100/syminfo.mintick, loss=close*stop_short/100/syminfo.mintick, alert_message=short_close)




strategy.close("enter short", (Go_Long),alert_message=short_close)
cancelar=((ta.crossunder(ta.ema(close,12),ta.ema(close,30))))



if Go_Long
    strategy.entry("enter long", strategy.long,1,alert_message=long_open)

strategy.exit("cerrar long", "enter long", 1, profit=close*profit_long/100/syminfo.mintick, loss=close*stop_long/100/syminfo.mintick, alert_message=long_close)




strategy.close("enter short", (cancelar_short),alert_message=short_close)

strategy.close("enter long", (cancelar),alert_message=long_close)


//posiciones abiertas
bgcolor((strategy.position_size > 0 or strategy.position_size < 0) ? color.blue : na, transp=70)









Más.