En la carga de los recursos... Cargando...

Estrategia de cruce de dos medias móviles

El autor:¿ Qué pasa?, Fecha: 2023-11-13 10:55:09
Las etiquetas:

img

Resumen general

La estrategia de cruce de promedios móviles dobles es una estrategia común de seguimiento de tendencias. Utiliza dos promedios móviles de diferentes períodos para identificar la dirección de la tendencia y generar señales comerciales basadas en su cruce. Específicamente, cuando el promedio móvil de período más corto cruza por encima del período más largo, se forma una cruz dorada, lo que indica una tendencia al alza. Por el contrario, cuando el MA más corto cruza por debajo del MA más largo, se forma una cruz de muerte, lo que indica una tendencia a la baja.

Estrategia lógica

La estrategia utiliza principalmente líneas de EMA de 6 períodos, 14 períodos, 25 períodos y 80 períodos.

Cuando la EMA de 6 períodos cruza por encima de la EMA de 14 períodos o 25 períodos, y está por encima de la EMA de 80 períodos, se genera una señal de compra. Esto indica que la EMA a corto plazo está rompiendo las EMA a mediano y largo plazo, y una tendencia al alza puede comenzar, por lo que podemos considerar comprar.

Por el contrario, cuando la EMA de 6 períodos cruza por debajo de la EMA de 14 períodos o 25 períodos, y está por debajo de la EMA de 80 períodos, se genera una señal de venta. Esto indica que la EMA a corto plazo se rompe con las EMA a mediano y largo plazo, y una tendencia a la baja puede comenzar, por lo que podemos considerar vender.

Al generar la señal, la estrategia abrirá posiciones largas o cortas. También tiene una lógica de stop loss para salir de posiciones cuando la pérdida excede un umbral para controlar el riesgo.

Análisis de ventajas

Las ventajas de esta estrategia son:

  1. El uso del cruce MA para determinar la tendencia es un indicador técnico maduro y fiable.

  2. La combinación de múltiples marcos de tiempo reduce las señales falsas. El MA de 6 períodos genera señales, mientras que los MA de 14 períodos y 25 períodos confirman, y el MA de 80 períodos define la tendencia general.

  3. El stop loss controla el riesgo y protege el capital de manera efectiva.

  4. La lógica es simple y clara, fácil de entender y validar.

  5. Los períodos de admisión pueden ajustarse para adaptarse a las condiciones cambiantes del mercado.

Análisis de riesgos

Algunos riesgos de esta estrategia incluyen:

  1. El precio puede girar alrededor de los MA durante el rango, generando señales invalidas excesivas.

  2. El stop loss fijo puede ser demasiado rígido.

  3. El riesgo de que el stop loss se vea afectado por brechas repentinas en los precios.

  4. Incapaz de responder a las fluctuaciones de precios a corto plazo.

  5. Con un espacio de optimización limitado, considere el uso de promedios móviles adaptativos.

Direcciones de optimización

Algunas maneras de optimizar la estrategia:

  1. Prueba de diferentes combinaciones de períodos de admisión para encontrar parámetros más sensibles al mercado.

  2. Mejorar el mecanismo de stop loss mediante trailing o dynamic stops para reducir el riesgo de stop run.

  3. Agregue indicadores de filtro como KDJ, MACD para evitar operaciones excesivas durante el rango.

  4. Optimice las reglas de entrada, espere a que el cruce de MA se forme completamente antes de entrar para reducir las señales falsas.

  5. Emplear medias móviles adaptativas que ajusten automáticamente los períodos en función de la volatilidad.

  6. Añadir reglas de dimensionamiento de la posición para ajustar el tamaño de la posición en función de las condiciones del mercado.

  7. Incorporar las salidas de beneficios.

Resumen de las actividades

En resumen, esta doble estrategia de cruce de promedios móviles identifica fácilmente la dirección de la tendencia basada en una lógica simple de cruce de MA, y tiene un riesgo controlable. Es adecuado para el seguimiento de tendencias a mediano y largo plazo. Pero la estrategia tiene un amplio margen de optimización, a través de reglas de entrada, técnicas de stop loss, condiciones de filtro, etc. En general, sirve como una sólida tendencia de línea de base después de la estrategia, con pros y contras razonables. Vale la pena aprender y practicar.


/*backtest
start: 2022-11-06 00:00:00
end: 2023-11-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = " bhramaji 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(true,"UseStopLoss")


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


maSource   = input(defval = close, title = "MA Source")
maLength6   = input(defval = 6, title = "MA Period 6", minval = 1)
maLength14  = input(defval = 14, title = "MA Period 14", minval = 1)
maLength25  = input(defval = 25, title = "MA Period 25", minval = 1)
maLength80  = input(defval = 80, title = "MA Period 80", minval = 1)

ma6 = ema(maSource, maLength6)
ma14 = ema(maSource, maLength14)
ma25 = ema(maSource, maLength25)
ma80 = ema(maSource, maLength80)

ma_6_plot = plot(ma6 , title = "MA  6", color = red, linewidth = 2, style = line, transp = 50)
ma14_plot = plot(ma14, title = "MA 14", color = green, linewidth = 2, style = line, transp = 50)
ma25_plot = plot(ma25, title = "MA 25", color = blue, linewidth = 2, style = line, transp = 50)
ma80_plot = plot(ma80, title = "MA 80", color = silver, linewidth = 2, style = line, transp = 50)


longEMA = (crossover(ma6, ma14) or crossover(ma6, ma25)) and (ma6>ma80) 
exitLong = (crossunder(ma6, ma14) or crossunder(ma6, ma25)) 

shortEMA = (crossunder(ma6, ma14) or crossunder(ma6, ma25)) and (ma6< ma80)
exitShort =(crossover(ma6, ma14) or crossover(ma6, ma25))

if (longEMA)
    strategy.entry("LongId", strategy.long)
 
if (shortEMA)
    strategy.entry("ShortId", strategy.short)

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





Más.