Tendencia siguiendo una estrategia basada en una media móvil dinámica

El autor:¿ Qué pasa?, Fecha: 2024-01-02 10:44:53
Las etiquetas:

img

Resumen general

Esta estrategia se basa en el indicador de promedio móvil dinámico para rastrear la tendencia del precio en tiempo real y generar señales de negociación cuando se rompe el promedio móvil.

Estrategia lógica

Esta estrategia utiliza indicadores de promedio móvil dinámico, incluyendo ALMA, EMA, SMA y más. El principio es ir largo cuando el precio se rompe por encima del promedio móvil y ir corto cuando se rompe por debajo. Es decir, el promedio móvil sirve como un barómetro para la tendencia del precio, y las señales se pueden generar cuando se produce una inversión de tendencia.

Específicamente, la estrategia utiliza promedios móviles formados por precios altos y bajos. El MA de precio bajo sirve como línea de señal para señales largas, mientras que el MA de precio alto sirve como línea para cortes. Cuando el precio de cierre se eleva por encima del MA de precio bajo, vaya largo. Cuando el cierre cae por debajo del MA de precio alto, vaya corto.

Al juzgar la tendencia del precio con MA y combinarlo con el principio de ruptura para generar señales, se forma una estrategia de seguimiento de tendencia simple y práctica.

Ventajas

  • Configuración de parámetros sencilla con indicador MA, fácil de operar
  • Reglas claras de señalización sin señales falsas
  • Tipos de AUM flexibles para adaptarse a los cambios del mercado
  • Los periodos de MA ajustables se adaptan a los diferentes ciclos de tendencia
  • La validación de señales de varios marcos de tiempo mejora la fiabilidad

Riesgos y soluciones

  • El retraso de la MA puede perder algunas oportunidades.
    • Acortar el período de la EMA o utilizarla
  • Riesgos de cambio importantes a corto plazo
    • Ampliar el margen de suspensión de pérdidas para mayor flexibilidad
  • Riesgos de tenencia a largo plazo, incapaz de obtener beneficios a tiempo
    • Combinar otros indicadores, evitar perseguir los máximos y matar los mínimos

Direcciones de optimización

  • Ajustar el tipo de autorización y los parámetros en función de las características del símbolo
  • Añadir indicadores auxiliares para mejorar la estrategia
  • Mecanismos de stop loss y take profit añadidos
  • Evaluación de la fiabilidad de la señal a través de marcos de tiempo
  • Utilice el aprendizaje automático para encontrar mejores parámetros

Conclusión

Esta estrategia juzga la dirección de la tendencia con MA y genera señales basadas en los principios de ruptura. Es simple de usar y adecuado para la tenencia a mediano y largo plazo. Los parámetros también se pueden ajustar para adaptarse a los cambios del mercado. Los riesgos de las fluctuaciones a corto plazo y la tenencia larga deben gestionarse con stop loss / taking profit. Hay margen de mejora mediante la incorporación de más indicadores y la búsqueda de parámetros óptimos a través del aprendizaje automático.


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

//@version=4
strategy(title="Baseline Strategy - evo", shorttitle="Baseline", overlay=true)

//INPUTS
mat =               input("ALMA", "MA Type", options=["SMA", "EMA", "WMA", "HMA", "VWMA", "RMA", "ALMA"])
baseline =          input(55, title="MA Length")
src =               input(ohlc4, title="Closing Source")

offset =            input(0.85, step=0.05, title="Offset (alma only)")
sigma =             input(10, title="Sigma (alma only)")

useCurrentRes =     input(true, title="Use Current Resolution")
resCustom =         input("1440", title="Timeframe")

showsignals =       input(false, title="Show Signals ?")

//BASELINE
baselinehigh = 

 mat=="SMA" ? sma(high,baseline) : 
 mat=="EMA" ? ema(high,baseline) : 
 mat=="WMA" ? wma(high,baseline) : 
 mat=="HMA" ? wma(2*wma(high, baseline/2)-wma(high, baseline), round(sqrt(baseline))) : 
 mat=="VWMA" ? vwma(high,baseline) : 
 mat=="RMA" ? rma(high,baseline) :
 mat=="ALMA" ? alma(high, baseline, offset, sigma) : na

baselinelow = 

 mat=="SMA" ? sma(low,baseline) : 
 mat=="EMA" ? ema(low,baseline) : 
 mat=="WMA" ? wma(low,baseline) : 
 mat=="HMA" ? wma(2*wma(low, baseline/2)-wma(low, baseline), round(sqrt(baseline))) : 
 mat=="VWMA" ? vwma(low,baseline) : 
 mat=="RMA" ? rma(low,baseline) : 
 mat=="ALMA" ? alma(low, baseline, offset, sigma) : na

//RESOLUTION
res =               useCurrentRes ? timeframe.period : resCustom

mtfhigh =           security(syminfo.tickerid, res, baselinehigh)
mtflow =            security(syminfo.tickerid, res, baselinelow)

//PLOTS
plot(mtfhigh, color=color.navy, linewidth=2, transp=0, title="Baseline High")
plot(mtflow, color=color.navy, linewidth=2, transp=0, title="Baseline Low")

long =              src > mtfhigh
short =             src < mtflow

barcolor(long ? #ffe0b2 : short ? #2a2e39 : not long and not short ? #b09e82 : na, title="BaseLine BarColor")

signal = 0
signal := long ? 1 : short ? 2 : nz(signal[1])

plotshape(showsignals ? (signal != signal[1] and long ? mtflow : na) : na, title="Long", location=location.absolute, size=size.small, style=shape.labelup, text="Long", textcolor=color.black, transp=40, color=#00ff00)
plotshape(showsignals ? (signal != signal[1] and short ? mtfhigh : na) : na, title="Short", location=location.absolute, size=size.small, style=shape.labeldown, text="Short", textcolor=color.white, transp=40, color=#ff0000)

alertcondition(signal != signal[1], title="Trend Change !", message="Trend Change !")

if (long)
    strategy.entry("Long", strategy.long)
if (short)
    strategy.entry("Short", strategy.short)

Más.