Estrategia de cruce de dos medias móviles

El autor:¿ Qué pasa?, Fecha: 2023-10-17 13:54:05
Las etiquetas:

img

Resumen general

Esta estrategia genera señales comerciales basadas en la diferencia entre dos promedios móviles con diferentes marcos de tiempo. Calcula una SMA más rápida y una SMA más lenta, y produce señales de compra cuando la SMA rápida cruza por encima de la SMA lenta desde abajo, y señales de venta cuando la SMA rápida cruza por debajo de la SMA lenta desde arriba.

Cómo funciona

La lógica central de esta estrategia es calcular dos promedios móviles, SMA ((len1) y SMA ((len2), y su diferencia dif. Aquí len1 representa el período del MA más rápido y len2 el MA más lento.

Cuando el MA más rápido cruza por encima del MA más lento desde abajo, indica que el precio a corto plazo ha comenzado a subir por encima de la tendencia a largo plazo, y por lo tanto se puede tomar una entrada larga.

Para filtrar señales falsas, la estrategia también utiliza out3 como la línea de señal de negociación, que es la diferencia suavizada entre el MA más rápido y el punto medio del precio.

Específicamente, la variable larga tiene valores positivos cuando out3 cruza por encima de dif, dando señales de compra. La variable corta tiene valores negativos cuando out3 cruza por debajo de dif, generando señales de venta.

Análisis de ventajas

Esta es una estrategia muy simple e intuitiva para seguir tendencias. Utiliza el cruce de dos MA de períodos diferentes para identificar puntos de inversión de tendencia, que pueden ser más confiables que un solo sistema MA. El filtro de la línea de señal de negociación también ayuda a evitar señales falsas en mercados agitados hasta cierto punto.

En comparación con el stop loss, adopta una mentalidad de seguimiento de tendencias para maximizar las ganancias durante tendencias más largas sin ser detenido.

Esta estrategia tiene pocos parámetros y es fácil de entender y ajustar, por lo que es adecuada como una estrategia de trading algo para principiantes.

Riesgos y mejoras

El riesgo más grande de esta estrategia es que los períodos de MA mal elegidos resulten en malas señales. Si el len1 es demasiado largo, se perderán los primeros movimientos de la tendencia; si es demasiado corto, aumentarán los whipssaws. Si el len2 es demasiado largo, los ajustes de posición se retrasarán; si es demasiado corto, puede ser perturbado por el ruido del mercado.

Los parámetros se pueden optimizar probando diferentes valores de len1 y len2 para encontrar la mejor combinación.

Las estrategias de seguimiento de tendencias también deben controlar las pérdidas en operaciones individuales, mediante el stop loss o el dimensionamiento de las posiciones.

Conclusión

La estrategia de doble MA es la quintaesencia de la tendencia que sigue al representante. Su simple sistema de doble MA proporciona señales estables, mientras que el filtro ayuda a evitar el ruido. Con períodos MA optimizados, puede lograr un buen rendimiento.


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

//by afrazium
//@version=3
strategy(title="SMA Diff strat", shorttitle="SMAD STR", overlay=false, initial_capital=1, precision=8, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, calc_on_order_fills= false, calc_on_every_tick=false, pyramiding=0)
len1 = input(50, minval=1, title="Length1"), len2 = input(100, minval=1, title="Length2"), smo = input(1, minval=1, title="Smoothing")
src = input(ohlc4, title="Source")

mid = src
expr1 = sma(src, len1), expr2 = sma(src, len2)
dif = (expr1 - expr2), out1 = (mid - expr1), out2 = (mid - expr2), out3 = sma(out1, smo)

long = crossover(out3, dif) ? out3 : na, short = crossunder(out3, dif) ? out3 : na

plot(out3, color=black, linewidth=2), hline(0)
clr = out2 >= out1 ? lime : red, plot(dif, color=clr, linewidth=2)
plot(long, title = 'Crossover', color = green, style = circles, linewidth=4), plot(short, title = 'Crossunder', color = red, style = circles, linewidth=4)

strategy.entry("buy", strategy.long, when=crossover(out1, dif))
strategy.close("buy", when=crossunder(out1, dif))

//plot(out2, color=blue, linewidth=2)
//A = plot(mid/10, color=red, linewidth=1, transp=100), B = plot(mid/20, color=red, linewidth=1, transp=100)
//C = plot(-mid/10, color=green, linewidth=1, transp=100), D = plot(-mid/20, color=green, linewidth=1, transp=100)
//fill(A, B, color=red), fill(C, D, color=green)



Más.