Estrategia de seguimiento de tendencias basada en el stop loss de Chande Kroll y el filtro ADX


Fecha de creación: 2023-11-06 14:52:27 Última modificación: 2023-11-06 14:52:27
Copiar: 0 Número de Visitas: 986
1
Seguir
1621
Seguidores

Estrategia de seguimiento de tendencias basada en el stop loss de Chande Kroll y el filtro ADX

Descripción general

Esta estrategia combina el indicador de stop loss de Chande Kroll y el indicador de tendencia promedio (ADX) para lograr una estrategia de seguimiento de tendencias relativamente simple. El stop loss de Chande Kroll se utiliza para generar señales de entrada a posiciones largas y cortas, mientras que el ADX se utiliza para filtrar situaciones de mercado sin tendencias evidentes y evitar que los mercados de oscilación desorientada provoquen el deterioro repetido.

Principio de estrategia

La estrategia primero calcula la parada larga y corta de Chande Kroll. La larga es calculada por el precio más alto en el último período de p, y la corta por el precio más bajo en el último período de p. Luego, se usan los puntos más altos y más bajos de la larga y corta en el último período de q como la parada corta y larga actual.

Cuando el precio de cierre cruza la línea corta stop_short, genera una señal de hacer más; cuando el precio de cierre cruza la línea larga stop_long, genera una señal de hacer más.

Además, la estrategia incluye el indicador ADX para determinar si la tendencia es fuerte o débil. La señal de parada de pérdidas se activa solo cuando el ADX es mayor que el umbral. Esto puede filtrar los informes falsos de pérdidas durante la oscilación de la corrección.

Ventajas estratégicas

La estrategia combina las ventajas de los indicadores de tendencia y los indicadores de stop loss, que pueden capturar el cambio de tendencia a tiempo y evitar el whip saw de un mercado sin dirección. La optimización de los parámetros de la parada de Chande Kroll puede suavizar las filtraciones, asegurando que se detenga solo cuando la tendencia se vuelve. El indicador ADX asegura que se ingrese solo cuando la tendencia es obvia, evitando el salto de parada de los mercados de temblor.

Riesgo estratégico

Si los parámetros de ADX se establecen incorrectamente, es posible que se pierda la oportunidad de comenzar la tendencia. Si el umbral de ADX se establece demasiado alto, es posible que se pierda la oportunidad de entrada debido a que el ADX es demasiado bajo en la etapa de inicio de la tendencia.

El punto de parada demasiado cercano también puede causar posiciones estratégicas abiertas y cerradas con frecuencia. Esto aumenta los costos de transacción y los costos de deslizamiento. El punto de parada necesita una configuración razonable para dar cierta perspectiva a la tendencia.

Optimización de la estrategia

Se puede considerar que la señal de parada se activa solo cuando el ADX supera un umbral, lo que mejora la fiabilidad de la hora de entrada. También se puede combinar con otros indicadores de tendencia, como combinar el valor del ADX con la inclinación de la EMA.

La línea de parada también puede considerarse ajustada dinámicamente de acuerdo con el ATR, ampliando el espacio de parada cuando aumenta la volatilidad del mercado, para evitar ser demasiado sensible. O puede combinarse con indicadores auxiliares para evaluar la tendencia de fuerza o debilidad, y ajustar dinámicamente la línea de parada.

Resumir

La estrategia integra las ventajas de los paros de Chande Kroll y los indicadores ADX, logrando una estrategia de seguimiento de tendencias relativamente simple y práctica. A través de la optimización de los parámetros, se puede mejorar aún más la estabilidad y la rentabilidad de la estrategia. Sin embargo, se debe tener cuidado para evitar el riesgo de que los paros sean demasiado sensibles y los filtros ADX demasiado flexibles.

Código Fuente de la Estrategia
/*backtest
start: 2022-10-30 00:00:00
end: 2023-06-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title = "Chande Kroll Stop", overlay=true)
p = input.int(10, minval=1)
x = input.int(1, minval=1)
q = input.int(9, minval=1)
first_high_stop = ta.highest(high, p) - x * ta.atr(p)
first_low_stop = ta.lowest(low, p) + x * ta.atr(p)
stop_short = ta.highest(first_high_stop, q)
stop_long = ta.lowest(first_low_stop, q)
plot(stop_long, color=color.blue)
plot(stop_short, color=color.orange)

adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
ADX_sig = input.int(20, title="minimum ADX threshold for signal")
dirmov(len) =>
	up = ta.change(high)
	down = -ta.change(low)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
	minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
	truerange = ta.rma(ta.tr, len)
	plus = fixnan(100 * ta.rma(plusDM, len) / truerange)
	minus = fixnan(100 * ta.rma(minusDM, len) / truerange)
	[plus, minus]
adx(dilen, adxlen) =>
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)


if ta.crossunder(close, stop_long) and sig>ADX_sig
    strategy.entry("long", strategy.long)
if ta.crossover(close, stop_short) and sig>ADX_sig
    strategy.entry("short", strategy.short)