Estrategia de seguimiento de la tendencia de convergencia de la media móvil doble

El autor:¿ Qué pasa?, Fecha: 2023-12-28 17:24:53
Las etiquetas:

img

Resumen general

La estrategia de seguimiento de tendencias de convergencia de promedios móviles dobles calcula líneas de promedios móviles rápidas, lentas y superlentas, combinadas con el indicador MACD para determinar la dirección de la tendencia de precios e implementar transacciones de seguimiento de tendencias.

Principio

La estrategia primero calcula el promedio móvil rápido de 12 días, el promedio móvil lento de 26 días y el promedio móvil súper lento de 200 días. Cuando el promedio móvil rápido cruza por encima del lento, ocurre una cruz dorada, lo que indica un mercado alcista. Cuando los cruces rápidos están por debajo de los lentos, ocurre una cruz muerta, lo que indica un mercado bajista.

La estrategia también utiliza el indicador MACD para determinar la dirección de la tendencia. El MACD consta de líneas rápidas, líneas lentas y barras MACD. Cuando la línea rápida cruza por encima de la línea lenta, es una señal alcista y cuando cruza por debajo es bajista. Combinado con el promedio móvil a largo plazo para filtrar señales falsas, solo cuando la línea rápida rompe la línea lenta, la barra MACD pasa de negativa a positiva, y el precio se mantiene por encima de la línea lenta de 200 días, desencadena la señal larga. Solo cuando la línea rápida rompe la línea lenta, la barra MACD pasa de positiva a negativa y el precio cae por debajo de la línea lenta de 200 días, desencadena la señal corta.

Con la doble confirmación del sistema de promedios móviles y el indicador MACD, se pueden evitar falsas rupturas y garantizar la entrada al comienzo de la tendencia.

Ventajas

  1. La doble confirmación evita falsas rupturas, asegurando la entrada al comienzo de la tendencia.

  2. El MA de 200 días filtra las operaciones erróneas durante las fluctuaciones del mercado.

  3. Detener pérdidas para limitar pérdidas máximas.

  4. Los parámetros personalizables como las longitudes de MA, el nivel de stop loss, etc., se adaptan a los diferentes productos.

  5. Lógica simple y clara, fácil de entender y optimizar.

Los riesgos

  1. Seguimiento de tendencias a largo plazo incapaz de captar oportunidades a corto plazo.

  2. El efecto de seguimiento depende de la configuración de parámetros.

  3. La configuración incorrecta del stop loss puede ser demasiado floja o demasiado apretada, aumentando la pérdida o deteniéndose prematuramente.

  4. Los períodos largos de retención conducen a cierta presión de capital.

Optimización

  1. Optimizar el parámetro de longitudes MA para obtener la mejor combinación de parámetros.

  2. Añadir otros indicadores como KDJ para el juicio auxiliar.

  3. Optimice las estrategias de stop loss como las paradas de apretamiento, las paradas de seguimiento, etc.

  4. Ajustar los parámetros de la autorización de importación en función del producto y del plazo.

  5. Añadir filtro de volumen para evitar señales falsas.

Conclusión

La estrategia de seguimiento de tendencias de convergencia de doble MA juzga la dirección de la tendencia calculando múltiples sistemas de MA y utiliza el filtro MACD. Sus ventajas son lógica simple y clara, riesgos controlables, adecuados para el seguimiento de tendencias. Se puede mejorar mediante optimización de parámetros, optimización de stop loss, adición de indicadores auxiliares, etc. Una estrategia de seguimiento de tendencias recomendable.


/*backtest
start: 2022-12-21 00:00:00
end: 2023-12-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Trend Strategy", shorttitle="TSTrend Strategy", overlay=true)


// Trend Strategy
// If the inverse logic is true, the strategy
// goes short. For the worst case there is a
// max intraday equity loss of 50% filter.


// Input
source = input(close)
fastLength = input(12, minval=1, title="MACD fast moving average")
slowLength=input(26,minval=1, title="MACD slow moving average")
signalLength=input(9,minval=1, title="MACD signal line moving average")
veryslowLength=input(200,minval=1, title="Very slow moving average")
switch1=input(true, title="Enable Bar Color?")
switch2=input(true, title="Enable Moving Averages?")
switch3=input(true, title="Enable Background Color?")

// Calculation
fastMA = sma(source, fastLength)
slowMA = sma(source, slowLength)
veryslowMA = sma(source, veryslowLength)
macd = fastMA - slowMA
signal = sma(macd, signalLength)
hist = macd - signal

// Colors
MAtrendcolor = change(veryslowMA) > 0 ? green : red
trendcolor = fastMA > slowMA and change(veryslowMA) > 0 and close > slowMA ? green : fastMA < slowMA and change(veryslowMA) < 0 and close < slowMA ? red : blue
bartrendcolor = close > fastMA and close > slowMA and close > veryslowMA and change(slowMA) > 0 ? green : close < fastMA and close < slowMA and close < veryslowMA and change(slowMA) < 0 ? red : blue
backgroundcolor = slowMA > veryslowMA and crossover(hist, 0) and macd > 0 and fastMA > slowMA and close[slowLength] > veryslowMA ? green : slowMA < veryslowMA and crossunder(hist, 0) and macd < 0 and fastMA < slowMA and close[slowLength] < veryslowMA ? red : na
bgcolor(switch3?backgroundcolor:na,transp=80)
barcolor(switch1?bartrendcolor:na)

// Output
F=plot(switch2?fastMA:na,color=trendcolor)
S=plot(switch2?slowMA:na,color=trendcolor,linewidth=2)
V=plot(switch2?veryslowMA:na,color=MAtrendcolor,linewidth=4)
fill(F,V,color=gray)

// Strategy
buyprice = low
sellprice = high
cancelLong = slowMA < veryslowMA
cancelShort = slowMA > veryslowMA

if (cancelLong)
    strategy.cancel("MACDLE")

if crossover(hist, 0) and macd > 0 and fastMA > slowMA and close[slowLength] > veryslowMA 
    strategy.entry("MACDLE", strategy.long, stop=buyprice, comment="Bullish")

if (cancelShort)
    strategy.cancel("MACDSE")

if crossunder(hist, 0) and macd < 0 and fastMA < slowMA and close[slowLength] < veryslowMA 
    strategy.entry("MACDSE", strategy.short, stop=sellprice, comment="Bearish")

// maxIdLossPcnt = input(50, "Max Intraday Loss(%)", type=float)
// strategy.risk.max_intraday_loss(maxIdLossPcnt, strategy.percent_of_equity)

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

Más.