Tendencia siguiendo una estrategia basada en medias móviles

El autor:¿ Qué pasa?, Fecha: 2023-11-27 15:57:15
Las etiquetas:

img

Resumen general

Esta es una estrategia de seguimiento de tendencias basada en promedios móviles. Utiliza el indicador Ichimoku Cloud para determinar la dirección de la tendencia combinada con el promedio móvil de 200 días para filtrar las señales, siguiendo así la tendencia.

Principio de la estrategia

La estrategia utiliza principalmente la línea de conversión y la línea de base de Ichimoku Cloud para juzgar la dirección de la tendencia. La línea de conversión es el promedio de precio mediano de 9 días y la línea de base es el promedio de precio mediano de 26 días. Se genera una señal de compra cuando la línea de conversión cruza por encima de la línea de base y una señal de venta cuando cruza por debajo.

La estrategia también emplea la media móvil de 200 días para filtrar las señales. Sólo cuando el precio de cierre está por encima de la línea de 200 días se activará una señal de compra. Esto filtra la mayoría de las señales falsas.

En el lado de la salida, la estrategia simplemente utiliza la línea de conversión que cruza por debajo de la línea base como la señal de cierre.

Análisis de ventajas

La estrategia combina el indicador de juicio de tendencia Ichimoku Cloud y el indicador de filtración de tendencias a largo plazo de 200 días, que puede rastrear efectivamente las tendencias y filtrar la mayoría de las señales falsas.

En comparación con el uso exclusivo de medias móviles, esta estrategia puede capturar mejor los puntos de inflexión de la tendencia y ajustar las posiciones a tiempo.

Análisis de riesgos

La estrategia se basa principalmente en la Nube Ichimoku para determinar la dirección de la tendencia, que también podría generar señales falsas.

Si el parámetro de la línea de conversión es demasiado corto, se forman fácilmente señales falsas; si el parámetro de la línea base es demasiado largo, el efecto de seguimiento se deteriora.

Direcciones de optimización

Considere la posibilidad de incorporar otros indicadores para mejorar la calidad de la señal, como el indicador KDJ para filtrar las señales en áreas de sobrecompra/sobreventa.

En el lado del parámetro, pruebe más combinaciones, como ajustar el parámetro de línea de conversión a 5 o 7 días para señales comerciales más sensibles.

Además, considere desactivar la estrategia en ciertos entornos volátiles para evitar el impacto de los cambios salvajes.

Conclusión

La estrategia integra las ventajas del juicio de tendencia y los indicadores de filtrado a largo plazo, que pueden rastrear efectivamente las tendencias a mediano y largo plazo. Mientras tanto, los ajustes de parámetros y las medidas de control de riesgos también necesitan una optimización continua para reducir las señales falsas y los impactos de las fluctuaciones. En general, la estrategia tiene un rendimiento decente y un valor práctico para la negociación real.


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

//@version=3
strategy(title="TK Cross > EMA200 Strat",  overlay=true)

ema200 = ema(close, 200)
conversionPeriods = input(9, minval=1, title="Conversion Line Periods"),
basePeriods = input(26, minval=1, title="Base Line Periods")
laggingSpan2Periods = input(52, minval=1, title="Lagging Span 2 Periods"),
displacement = input(26, minval=1, title="Displacement")

donchian(len) => avg(lowest(len), highest(len))

conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)

plot(conversionLine, color=#0496ff, title="Conversion Line", linewidth=3)
plot(baseLine, color=#991515, title="Base Line", linewidth=3)
plot(close, offset = -displacement, color=#459915, title="Lagging Span")

p1 = plot(leadLine1, offset = displacement, color=green,
 title="Lead 1")
p2 = plot(leadLine2, offset = displacement, color=red, 
 title="Lead 2")
fill(p1, p2, color = leadLine1 > leadLine2 ? green : red)

plot(ema200, color=purple, linewidth=4,title='ema200')
strategy.initial_capital = 50000

strategy.entry('tkcross', strategy.long, strategy.initial_capital / close, when=conversionLine>baseLine and close > ema200)
strategy.close('tkcross', when=conversionLine<baseLine)


start = input(2, minval=0, maxval=10, title="Start - Default = 2 - Multiplied by .01")
increment = input(2, minval=0, maxval=10, title="Step Setting (Sensitivity) - Default = 2 - Multiplied by .01" )
maximum = input(2, minval=1, maxval=10, title="Maximum Step (Sensitivity) - Default = 2 - Multiplied by .10")
sus = input(true, "Show Up Trending Parabolic Sar")
sds = input(true, "Show Down Trending Parabolic Sar")
disc = input(false, title="Start and Step settings are *.01 so 2 = .02 etc, Maximum Step is *.10 so 2 = .2")
//"------Step Setting Definition------"
//"A higher step moves SAR closer to the price action, which makes a reversal more likely."
//"The indicator will reverse too often if the step is set too high."

//"------Maximum Step Definition-----")
//"The sensitivity of the indicator can also be adjusted using the Maximum Step."
//"While the Maximum Step can influence sensitivity, the Step carries more weight"
//"because it sets the incremental rate-of-increase as the trend develops"

startCalc = start * .01
incrementCalc = increment * .01
maximumCalc = maximum * .10

sarUp = sar(startCalc, incrementCalc, maximumCalc)
sarDown = sar(startCalc, incrementCalc, maximumCalc)

colUp = close >= sarDown ? lime : na
colDown = close <= sarUp ? red : na

plot(sus and sarUp ? sarUp : na, title="Up Trending SAR", style=circles, linewidth=3,color=colUp)
plot(sds and sarDown ? sarDown : na, title="Up Trending SAR", style=circles, linewidth=3,color=colDown)





Más.