Estrategia de trading con filtro ADX de ruptura de tendencia


Fecha de creación: 2024-01-04 17:12:30 Última modificación: 2024-01-04 17:12:30
Copiar: 0 Número de Visitas: 924
1
Seguir
1621
Seguidores

Estrategia de trading con filtro ADX de ruptura de tendencia

Descripción general

Esta estrategia es una estrategia de negociación en línea corta que utiliza el indicador ADX para filtrar las señales de ruptura. Cuando el precio rompe la banda de Bollinger Bollinger y el ADX está bajando, se cancela; cuando el precio rompe la banda de Bollinger Bollinger y el ADX está subiendo, se hace más.

Principio de estrategia

La estrategia utiliza la banda de Bollinger Bollinger como su principal señal de ruptura. La baja de la banda de Bollinger representa el doble de la diferencia estándar del precio, y la ruptura de la banda de Bollinger normalmente representa la entrada del precio en una fase de fuerte tendencia. Además, para evitar falsas rupturas, la estrategia añade el indicador ADX como condición de filtro.

En concreto, esta estrategia utiliza un Brinband para calcular el precio de cierre de 33 ciclos de longitud. La línea central del Brinband es un promedio móvil simple de 33 ciclos del precio de cierre, con las dos diferencias estándar superiores y inferiores de la órbita central. El parámetro del indicador se establece para cerrar cuando el precio de cierre se sale de la órbita y el ADX de 8 ciclos es menor que el ADX de 15 ciclos.

Análisis de las ventajas

Esta es una estrategia innovadora que combina tendencias y indicadores de frecuencia para filtrar señales, con las siguientes ventajas:

  1. El uso de las bandas de Brin para determinar el punto de ruptura de la tendencia es más adecuado para la mayoría de los traders.
  2. La adición de filtros de condiciones ADX reduce la pérdida de brechas falsas durante las oscilaciones de tendencia.
  3. La estrategia es simple, fácil de entender y de optimizar.
  4. El Stop Loss Stop se establece automáticamente, sin necesidad de intervención humana, para el comercio de algoritmos.

Análisis de riesgos

La estrategia también tiene sus riesgos:

  1. La configuración incorrecta de los parámetros de la banda de Bryn puede causar señales demasiado frecuentes y aumentar los costos de transacción.
  2. La configuración incorrecta del ADX también puede filtrar algunas señales válidas.
  3. La distancia de parada puede ser excesiva y las pérdidas individuales pueden ampliarse.

Para reducir estos riesgos, podemos ajustar los parámetros de la banda de Brin para reducir el rango de la banda de Brin; ajustar los parámetros del ciclo ADX para evitar señales de filtración excesivas; reducir adecuadamente la distancia de parada para controlar la pérdida individual. Por supuesto, estas optimizaciones deben ser verificadas por retroalimentación para evitar la sobreadaptación.

Dirección de optimización

La estrategia tiene espacio para ser optimizada aún más:

  1. Se pueden probar datos de diferentes mercados para encontrar la combinación óptima de parámetros.
  2. Se puede combinar con otros indicadores para filtrar aún más las señales, como el volumen de operaciones, la media móvil, etc.
  3. Los parámetros se pueden optimizar automáticamente mediante métodos de aprendizaje automático.
  4. Se puede considerar el stop loss y el stop stop.

Resumir

Esta estrategia en su conjunto es una estrategia de filtración de ruptura sencilla y práctica. Al juzgar la tendencia a través de la banda de Bryn, las señales de filtración de ADX pueden evitar el ruido de los mercados de temblor hasta cierto punto y aprovechar las oportunidades de tendencia.

Código Fuente de la Estrategia
/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Hizbullah XAUUSD Sniper", overlay=true)

Price = close

Length = input(33)
Mult = input(2)
Basis = sma(Price, Length)
StdDev = Mult * stdev(Price, Length)
Upper = Basis + StdDev
Lower = Basis - StdDev

ADX_Length = input(4)
TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
SmoothedTrueRange = sma(TrueRange, ADX_Length)
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0
SmoothedDirectionalMovementPlus = sma(DirectionalMovementPlus, ADX_Length)
SmoothedDirectionalMovementMinus = sma(DirectionalMovementMinus, ADX_Length)
DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = abs(DIPlus - DIMinus) / (DIPlus + DIMinus)*100
SmoothedADX1 = ema(DX, input(8))
SmoothedADX2 = ema(DX, input(15))

Condition1 = crossunder(Price, Upper) and SmoothedADX1 < SmoothedADX2

Take_Profit = input(800)
Stop_Loss = input(400)

strategy.entry("ShortEntry", true, when = Condition1)
strategy.exit("ShortExit", "ShortEntry", profit = Take_Profit, loss = Stop_Loss)