
La estrategia de banda de media móvil es una estrategia de seguimiento de tendencias basada en múltiples medias móviles. Monitoriza simultáneamente las medias móviles rápidas y las medias móviles lentas, generando señales de negociación cuando los precios rompen la banda de media móvil.
La estrategia utiliza simultáneamente cinco medias móviles rápidas (líneas 5, 8, 13, 20, y 30) y cuatro medias móviles lentas (líneas 45, 70, 105, y 150), las cuales forman un promedio móvil interno de la línea rápida y un promedio móvil externo de la línea lenta. Se produce una señal de compra cuando el precio se encuentra por encima de la línea media interna y una señal de venta cuando el precio se encuentra por debajo de la línea media interna.
Además, la estrategia también determina la tendencia a largo plazo. Sólo se considera la posibilidad de generar una señal de compra cuando el precio está por encima de la media móvil de 200 días. Por el contrario, sólo se considera la posibilidad de generar una señal de venta cuando el precio cae por debajo de la media móvil de 200 días.
La estrategia tiene las siguientes ventajas:
El diseño de múltiples medias móviles permite determinar con precisión la dirección de la tendencia. Las bandas de medias móviles internas y externas se combinan con medias rápidas y lentas para identificar tendencias de líneas medias y largas.
El mecanismo de ruptura continua puede filtrar eficazmente las falsas rupturas. Al mismo tiempo, se requiere la mayor parte de las rupturas de línea media rápida para asegurar el cambio de tendencia.
Para determinar la tendencia a largo plazo, evitar ser ajustado en la liquidación. Junto con el juicio de la línea de 200 días, solo considere la creación de posiciones cuando se produzca un cambio de tendencia.
El promedio móvil tiene una función de seguimiento de tendencias y, en combinación con el indicador de sobreventa y sobreventa, establece un punto de parada para controlar el riesgo.
El principal riesgo de esta estrategia es:
El riesgo de fracaso de la ruptura. Cuando se produce una falsa ruptura en el precio, la estrategia no puede evitar por completo la pérdida.
Riesgo de pérdidas en una tendencia a la oscilación. Cuando las condiciones del mercado son inestables por un tiempo prolongado, el punto de parada puede ser golpeado con frecuencia, lo que aumenta las pérdidas.
El riesgo de optimización de parámetros. La configuración incorrecta de los parámetros de la media móvil también puede causar errores en las señales de negociación, lo que aumenta las pérdidas.
Resolución de las mismas:
La liberación adecuada de los puntos de detención, dando al precio suficiente espacio para operar. o la adopción de un método de detención de ljetrail, para que la línea de detención funcione con el precio.
Incrementar los indicadores de tendencia para evitar que los mercados se queden sin rumbo durante la oscilación. Por ejemplo, se puede filtrar con indicadores como DMI, MACD, etc.
Utiliza el historial de retroalimentación y la optimización de parámetros para seleccionar la combinación de parámetros óptima. En el disco real, también debe seguir el efecto de los parámetros para optimizar dinámicamente.
La estrategia puede ser optimizada en las siguientes dimensiones:
Optimización de los parámetros de las medias móviles para seleccionar el mejor número de periodos. Se puede encontrar la combinación de parámetros óptima mediante la retroalimentación de las medias móviles de los diferentes números de periodos.
Aumentar la tendencia de los indicadores de juicio para filtrar. Por ejemplo, el indicador de RSI para determinar la sobrecompra, sobreventa, la brecha de los canales de juicio de Brin, etc. Evite la posición ciega cuando la tendencia no es clara.
Adoptar una media móvil adaptada. Optimizar en tiempo real los parámetros de la media móvil de acuerdo con los cambios y la volatilidad del mercado para adaptarla mejor a la situación actual del mercado.
Combinación de modelos de aprendizaje automático para determinar la probabilidad de tendencia. Creación de modelos de probabilidad para evaluar la probabilidad de éxito de la ruptura y ayudar a los sistemas de toma de decisiones a determinar el momento de entrada.
Optimización de las estrategias de stop loss para que los stops sigan mejor los precios. Por ejemplo, traillig stop loss o stop loss automático de reducción, para que las líneas de stop loss sean más inteligentes.
La estrategia de banda de media móvil es una de las estrategias de seguimiento de tendencias más comunes. Combina al mismo tiempo la línea rápida y la línea lenta para juzgar la tendencia de la línea media y larga, y establece un mecanismo de filtrado de ruptura continua para decidir la entrada. La estrategia combina el seguimiento de la tendencia y el juicio de sobreventa y sobreventa, y puede mejorar aún más la eficacia de la operación mediante la optimización de los parámetros y la mejora de los indicadores.
//@version=4
strategy(title="Moving Average Ribbon", shorttitle="MA Ribbon", overlay=true)
src = input(close, type=input.source, title="Source")
matype = input(title="Input one in lowercase: sma, ema, wma, trima, zlema, dema, tema, or hma", type=input.string, defval="trima")
// possible values: sma, ema, wma, trima, zlema, dema, tema, hma (hull ma)
trima(_src, _len) =>
sma(sma(_src, _len), _len)
hma(_src, _len) =>
wma(2 * wma(_src, _len / 2) - wma(_src, _len), round(sqrt(_len)))
dema(_src, _len) =>
2 * ema(_src, _len) - ema(ema(_src, _len), _len)
tema(_src, _len) =>
3 * ema(_src, _len) - 3 * ema(ema(_src, _len), _len) +
ema(ema(ema(_src, _len), _len), _len)
zlema(_src, _len) =>
ema(_src, _len) + ema(_src, _len) - ema(ema(_src, _len), _len)
ma(_src, _len) =>
hma__1 = hma(_src, _len)
ema_1 = ema(_src, _len)
sma_1 = sma(_src, _len)
wma_1 = wma(_src, _len)
trima__1 = trima(_src, _len)
zlema__1 = zlema(_src, _len)
dema__1 = dema(_src, _len)
tema__1 = tema(_src, _len)
matype == "hma" ? hma__1 : matype == "ema" ? ema_1 : matype == "sma" ? sma_1 :
matype == "wma" ? wma_1 : matype == "trima" ? trima__1 :
matype == "zlema" ? zlema__1 : matype == "dema" ? dema__1 : tema__1
ma05 = ma(src, 5)
ma08 = ma(src, 8)
ma13 = ma(src, 13)
ma20 = ma(src, 20)
ma30 = ma(src, 30)
ma45 = ma(src, 45)
ma70 = ma(src, 70)
ma105 = ma(src, 105)
ma150 = ma(src, 150)
ma200 = ma(src, 200)
maColor(ma, maRef) =>
if change(ma) <= 0 and ma05 < maRef
color.new(color.red, 20)
else
if change(ma) >= 0 and ma05 > maRef
color.new(color.navy, 20)
else
if change(ma) < 0 and ma05 > maRef
color.new(color.red, 20)
else
if change(ma) >= 0 and ma05 < maRef
color.new(color.navy, 20)
else
color.gray
aboveConfirmed(x,maRef)=>
above=true
for i=1 to x
if close[i]<maRef[i] and not (close[i]>ma200[i]*1.01) and not (ma05[i]>ma105[i]*1.015)
above:=false
above
aboveMost(x,len)=>
above=0
boolean=false
if close[len]>ma05[len]
above:=above+1
if close[len]>ma08[len]
above:=above+1
if close[len]>ma13[len]
above:=above+1
if close[len]>ma20[len]
above:=above+1
if close[len]>ma30[len]
above:=above+1
if close[len]>ma45[len]
above:=above+1
if close[len]>ma70[len]
above:=above+1
if close[len]>ma105[len]
above:=above+1
if close[len]>ma150[len]
above:=above+1
if close[len]>ma200[len]
above:=above+1
if(above>=x)
boolean:=true
boolean
belowMost(x,len)=>
above=0
boolean=false
if close[len]<ma05[len]
above:=above+1
if close[len]<ma08[len]
above:=above+1
if close[len]<ma13[len]
above:=above+1
if close[len]<ma20[len]
above:=above+1
if close[len]<ma30[len]
above:=above+1
if close[len]<ma45[len]
above:=above+1
if close[len]<ma70[len]
above:=above+1
if close[len]<ma105[len]
above:=above+1
if close[len]<ma150[len]
above:=above+1
if close[len]<ma200[len]
above:=above+1
if(above>=x)
boolean:=true
boolean
belowConfirmed(x,maRef)=>
below=true
for i=1 to x
if close[i]>maRef[i] and not (close[i]<maRef[i]*0.99) and not (ma05[i]<ma105[i]*0.985)
below:=false
below
//plotshape(aboveConfirmed(5,ma150),color=color.navy,location=location.abovebar,style=shape.triangleup,size=size.large,title="above",text="above")
plot(ma05, color=maColor(ma05, ma150), style=plot.style_line, title="MMA05", linewidth=2)
plot(ma08, color=maColor(ma08, ma150), style=plot.style_line, title="MMA08", linewidth=1)
plot(ma13, color=maColor(ma13, ma150), style=plot.style_line, title="MMA13", linewidth=1)
plot(ma20, color=maColor(ma20, ma150), style=plot.style_line, title="MMA20", linewidth=1)
plot(ma30, color=maColor(ma30, ma150), style=plot.style_line, title="MMA30", linewidth=1)
plot(ma45, color=maColor(ma45, ma200), style=plot.style_line, title="MMA45", linewidth=1)
plot(ma70, color=maColor(ma70, ma200), style=plot.style_line, title="MMA70", linewidth=2)
plot(ma105, color=maColor(ma105, ma200), style=plot.style_line, title="MMA105", linewidth=2)
plot(ma150, color=maColor(ma150, ma200), style=plot.style_line, title="MMA150", linewidth=3)
plot(ma200, color=maColor(ma200, ma200), style=plot.style_line, title="MM200", linewidth=3)
closeLong=belowMost(6,1) and belowMost(6,2) and belowMost(6,3)
closeShort=aboveMost(6,1) and aboveMost(6,2) and aboveMost(6,3)
isAbove=aboveConfirmed(5,ma200)
strategy.entry("short", false, when=belowConfirmed(3,ma200) and belowMost(8,1) and belowMost(8,2) and belowMost(8,3))
strategy.entry("long", true, when=aboveConfirmed(3,ma200) and aboveMost(8,1) and aboveMost(8,2) and aboveMost(8,3))
strategy.close("long",when=closeLong)
strategy.close("short",when=closeShort)