Estrategia de seguimiento de la media móvil dinámica

El autor:¿ Qué pasa?, Fecha: 2023-12-04 15:38:09
Las etiquetas:

img

Resumen general

Esta estrategia utiliza el enfoque explicado por Larry Williams en su libro Secrets Long-Term to Short-Term Trading, que utiliza dos promedios móviles de 3 períodos, uno que representa los máximos y el otro los mínimos.

Estrategia lógica

La lógica central de esta estrategia es calcular promedios móviles de 3 períodos de los precios altos y bajos. Específicamente, utiliza la función ta.ema para calcular promedios móviles exponenciales de los precios altos y bajos en las 3 barras más recientes para generar niveles dinámicos de soporte y resistencia. Cuando el precio se rompe por debajo de los mínimos EMA, indica una tendencia bajista, por lo que podemos ir largo. Cuando el precio vuelve a subir por encima de los máximos EMA, sugiere que la tendencia alcista ha terminado y debemos cerrar nuestra posición. De esta manera, la estrategia puede rastrear dinámicamente los cambios de precios y lograr comprar bajo y vender alto.

Análisis de ventajas

La mayor ventaja de esta estrategia es su simplicidad y dinamismo. En comparación con la toma de promedios móviles máximos/bajos de período fijo, esta estrategia utiliza promedios móviles continuos a corto plazo, que pueden capturar los cambios de precios de manera más sensible y oportuna. Esto le permite identificar rápidamente las oportunidades comerciales para entrar y salir del mercado. Además, la baja carga de computación es otra ventaja para reducir la latencia comercial.

Riesgos y soluciones

El principal riesgo de esta estrategia es que reacciona más lentamente a eventos repentinos como noticias significativas. Debido a que su período de promedio móvil es muy corto, se necesita algún tiempo para ajustar los niveles de promedio móvil cuando hay un fuerte aumento de precios. Esto puede conducir a pérdidas o oportunidades perdidas. Además, la hipersensibilidad puede causar operaciones incorrectas. Para mitigar estos riesgos, podemos aumentar apropiadamente el período de promedio móvil o agregar filtros para evitar señales falsas.

Direcciones de optimización

En este sentido, el análisis de los periodos de tiempo múltiples, el reconocimiento de patrones con aprendizaje automático, etc. pueden ayudar a mejorar el rendimiento de la estrategia.

Conclusión

En resumen, esta es una estrategia muy simple y práctica, que identifica tendencias utilizando promedios móviles altos/bajos a corto plazo. Sus ventajas son un fuerte dinamismo, bajo cálculo y alta capacidad de respuesta, adecuados para el comercio activo. Pero también tiene deficiencias en la respuesta a eventos extremos y un mayor riesgo de falsas señales.


/*backtest
start: 2023-11-26 00:00:00
end: 2023-12-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(
     "Larry Williams 3 Period EMAs strategy",
     overlay=true,
     calc_on_every_tick=true,
     currency=currency.USD
     )

// Time range for backtesting
startDate = input.int(title="Start Date", defval=1, minval=1, maxval=31)
startMonth = input.int(title="Start Month", defval=1, minval=1, maxval=12)
startYear = input.int(title="Start Year", defval=2018, minval=1800, maxval=2100)

endDate = input.int(title="End Date", defval=31, minval=1, maxval=31)
endMonth = input.int(title="End Month", defval=12, minval=1, maxval=12)
endYear = input.int(title="End Year", defval=2041, minval=1800, maxval=2100)

inDateRange = (time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0)) and
     (time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0))

// EMA
period = 3

emaH = ta.ema(high, period)
emaL = ta.ema(low, period)

// PLOT:
// Draw the EMA lines on the chart
plot(series=emaH, color=color.green, linewidth=2)
plot(series=emaL, color=color.red, linewidth=2)

// Conditions
if(inDateRange and close < emaL)
    strategy.entry("Long", strategy.long, comment="Long")
if(close > emaH)
    strategy.close("Long", comment="Close Long")

// Uncomment to enable short entries
//if(inDateRange and close > emaH)                                    
//    strategy.entry("Short", strategy.short, comment="Short")    
//if(close < emaL)
//    strategy.close("Short", comment="Close Short")

Más.