Estrategia de seguimiento de medias móviles dinámicas


Fecha de creación: 2023-12-04 15:38:09 Última modificación: 2023-12-04 15:38:09
Copiar: 5 Número de Visitas: 699
1
Seguir
1619
Seguidores

Estrategia de seguimiento de medias móviles dinámicas

Descripción general

Esta estrategia utiliza la estrategia explicada por Larry Williams en su libro de operaciones de corto y largo plazo secreto, que utiliza dos promedios móviles de 3 periodos, uno para representar los máximos y otro para representar los mínimos. Cuando el precio está por debajo de la media móvil de 3 periodos mínimos, tenemos una señal de posición larga.

Principio de estrategia

La lógica central de la estrategia es calcular las medias móviles de 3 periodos de los puntos altos y bajos. En concreto, utiliza la función ta.ema para calcular las medias móviles de los puntos altos e bajos de los últimos 3 bares para generar puntos de soporte y resistencia dinámicos. Cuando el precio cae por debajo de la mediana de la mediana, indica que se encuentra en una tendencia bajista, por lo que podemos hacer más; cuando el precio vuelve a subir por encima de la mediana de la mediana de la alta, indica que la tendencia alcista ha terminado, y tenemos que cerrar las posiciones. De esta manera, la estrategia puede seguir dinámicamente los cambios en los precios y lograr una compra o venta baja.

Análisis de las ventajas

La mayor ventaja de esta estrategia reside en su simplicidad y dinámica. En comparación con las medias de puntos altos y bajos tradicionales de un período determinado, la estrategia utiliza una media móvil a corto plazo calculada de forma continua, que es más sensible y capta los cambios de precio de manera más oportuna. Esto le permite identificar rápidamente los puntos de compra y venta para entrar y salir del mercado.

Riesgos y soluciones

El principal riesgo de esta estrategia es que es lenta para reaccionar a eventos inesperados como eventos de noticias importantes. Debido a su corto ciclo de media móvil, necesita un cierto tiempo para ajustar la posición de la línea media cuando se producen fuertes fluctuaciones en los precios. Esto puede causar pérdidas o oportunidades perdidas. Además, la excesiva sensibilidad también puede causar transacciones erróneas.

Dirección de optimización

La estrategia tiene un gran espacio de optimización. En primer lugar, podemos combinar otros indicadores como el indicador de oscilación para filtrar y hacer que la señal sea más confiable. En segundo lugar, también podemos agregar la lógica de stop loss para controlar el riesgo. En segundo lugar, también podemos ajustar los parámetros de la media móvil en función de la dinámica de la situación del mercado, alargando el período en el mercado de tendencia y acortando el período en el mercado de oscilación.

Resumir

Esta estrategia es muy sencilla y práctica en su conjunto, y permite juzgar la tendencia a través de la media a corto plazo de los puntos altos y bajos. Sus ventajas son su gran dinámica, su pequeño volumen de cálculo, su alta efectividad y su adaptabilidad a las operaciones frecuentes. Pero también hay problemas de falta de sensibilidad a la respuesta a eventos inesperados y una alta tasa de error de la señal.

Código Fuente de la Estrategia
/*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")