Estrategia de negociación de inversión de media móvil doble

El autor:¿ Qué pasa?, Fecha: 2023-12-04 16:39:13
Las etiquetas:

img

Resumen general

Esta es una estrategia de negociación de inversión basada en indicadores de promedios móviles duales. Al calcular dos grupos de promedios móviles con diferentes configuraciones de parámetros y juzgar la tendencia del precio de acuerdo con sus cambios direccionales, se pueden generar señales comerciales al establecer el parámetro de sensibilidad para los cambios direccionales.

Principios

El indicador central de esta estrategia es el promedio móvil dual. La estrategia permite seleccionar el tipo (SMA, EMA, etc.), la longitud y la fuente de precio (precio cerrado, precio típico, etc.) del promedio móvil. Después de calcular dos grupos de promedios móviles, sus direcciones se determinan definiendo el parámetro de reacción. Se genera una señal de compra cuando la línea rápida cruza por encima de la línea lenta, y se genera una señal de venta cuando cruza por debajo. El parámetro de reacción se utiliza para ajustar la sensibilidad para identificar puntos de inflexión.

Además, la estrategia también establece las condiciones para determinar el cambio de dirección y el aumento/caída continuo para evitar generar señales erróneas.

Análisis de ventajas

La estrategia de movimiento dual combina líneas rápidas y lentas con diferentes configuraciones de parámetros, que pueden filtrar eficazmente el ruido en el mercado de negociación e identificar tendencias más fuertes.

El parámetro de reacción permite que la estrategia sea flexible y adaptable a diferentes ciclos y variedades. El proceso estratégico es intuitivo y simple, fácil de entender y optimizar.

Análisis de riesgos

El mayor riesgo de esta estrategia es perder el punto de inflexión y perder dinero o tomar una posición inversa. Esto se relaciona con el ajuste del parámetro de reacción. Si la reacción es demasiado pequeña, son propensas a ocurrir señales erróneas. Si la reacción es demasiado grande, puede perder mejores puntos de entrada.

Otro riesgo es la incapacidad de controlar eficazmente las pérdidas. Cuando los precios fluctúan violentamente, no puede detener rápidamente las pérdidas, lo que conduce a pérdidas ampliadas. Esto requiere el uso de estrategias de stop-loss para controlar los riesgos.

Direcciones de optimización

Las principales direcciones de optimización de esta estrategia se centran en la selección de parámetros de reacción, tipos y longitudes de promedios móviles.

Además, la confirmación de señales comerciales con otros indicadores auxiliares como RSI y KD también es una idea de optimización.

Resumen de las actividades

En general, esta estrategia es relativamente simple y práctica. Al filtrar con promedios móviles duales y generar señales de negociación, puede identificar efectivamente las reversiones de tendencia y es una estrategia típica de seguimiento de tendencias. Después de optimizar la cartera de parámetros, se mejorará su capacidad para capturar tendencias y mantener posiciones contra el mercado.


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

//@version=3
strategy(shorttitle="MA_color strategy", title="Moving Average Color", overlay=true)

// === INPUTS

ma_type   = input(defval="HullMA", title="MA Type: ", options=["SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "ZEMA", "TMA", "SSMA"])
ma_len    = input(defval=32, title="MA Lenght", minval=1)
ma_src    = input(close, title="MA Source")
reaction  = input(defval=2, title="MA Reaction", minval=1)

// SuperSmoother filter
// © 2013  John F. Ehlers
variant_supersmoother(src,len) =>
    a1 = exp(-1.414*3.14159 / len)
    b1 = 2*a1*cos(1.414*3.14159 / len)
    c2 = b1
    c3 = (-a1)*a1
    c1 = 1 - c2 - c3
    v9 = 0.0
    v9 := c1*(src + nz(src[1])) / 2 + c2*nz(v9[1]) + c3*nz(v9[2])
    v9
    
variant_smoothed(src,len) =>
    v5 = 0.0
    v5 := na(v5[1]) ? sma(src, len) : (v5[1] * (len - 1) + src) / len
    v5

variant_zerolagema(src,len) =>
    ema1 = ema(src, len)
    ema2 = ema(ema1, len)
    v10 = ema1+(ema1-ema2)
    v10
    
variant_doubleema(src,len) =>
    v2 = ema(src, len)
    v6 = 2 * v2 - ema(v2, len)
    v6

variant_tripleema(src,len) =>
    v2 = ema(src, len)
    v7 = 3 * (v2 - ema(v2, len)) + ema(ema(v2, len), len)              
    v7
    
variant(type, src, len) =>
    type=="EMA"     ? ema(src,len) : 
      type=="WMA"   ? wma(src,len): 
      type=="VWMA"  ? vwma(src,len) : 
      type=="SMMA"  ? variant_smoothed(src,len) : 
      type=="DEMA"  ? variant_doubleema(src,len): 
      type=="TEMA"  ? variant_tripleema(src,len): 
      type=="HullMA"? wma(2 * wma(src, len / 2) - wma(src, len), round(sqrt(len))) :
      type=="SSMA"  ? variant_supersmoother(src,len) : 
      type=="ZEMA"  ? variant_zerolagema(src,len) : 
      type=="TMA"   ? sma(sma(src,len),len) : sma(src,len)


// === Moving Average
ma_series = variant(ma_type,ma_src,ma_len)

direction = 0
direction := rising(ma_series,reaction) ? 1 : falling(ma_series,reaction) ? -1 : nz(direction[1])
change_direction= change(direction,1)
change_direction1= change(direction,1)

pcol = direction>0 ? lime : direction<0 ? red : na
plot(ma_series, color=pcol,style=line,join=true,linewidth=3,transp=10,title="MA PLOT")

/////// Alerts ///////

alertcondition(change_direction,title="Change Direction MA",message="Change Direction MA")


longCondition = direction>0
shortCondition = direction<0
if (longCondition)
    strategy.entry("BUY", strategy.long)
if (shortCondition)
    strategy.entry("SELL", strategy.short)



Más.