El sistema de puntos de equilibrio de tendencia de Welles Wilder

El autor:¿ Qué pasa?, Fecha: 23 de septiembre de 2023 15:30:58
Las etiquetas:

Resumen general

Este es el sistema de puntos de equilibrio de tendencia original creado por Welles Wilder en 1978, con reglas que se encuentran en su libro New Concepts in Technical Trading Systems.

Estrategia lógica

Los componentes y reglas clave son:

  1. Indicador de impulso: Calcula el cambio de precios durante N períodos para determinar la tendencia.

  2. Condición larga: aumento del impulso en los dos períodos actuales y anteriores.

  3. Condición corta: Descenso del impulso en los dos períodos actuales y anteriores.

  4. El valor de las pérdidas se calcula en función de la posición de la entidad en el mercado.

  5. Obtención de ganancias: 2 * precio medio del día anterior - bajo (largo) o alto (cort) del día anterior.

  6. Salidas con parada o objetivo después de la entrada.

La estrategia utiliza directamente el impulso para la identificación de tendencias y un enfoque estructurado de parada/objetivo para controlar el riesgo y formar un sistema robusto de seguimiento de tendencias.

Ventajas

En comparación con otras estrategias de seguimiento de tendencias, las principales ventajas son:

  1. El cálculo del momento es simple, fácil de implementar.

  2. Filtro de ruido de combinación de varios períodos.

  3. El sistema de detención/objetivo es robusto.

  4. Límites de pérdida por operación.

  5. El descenso es controlado, la ganancia es clara.

  6. Fácil de operar con flexibilidad.

  7. Parámetros ajustables para diferentes mercados.

  8. Intuitiva y lógica simple.

  9. Estabilidad general y control de riesgos.

Los riesgos

Sin embargo, los riesgos son:

  1. El retraso de impulso puede perder giros clave.

  2. El rendimiento depende del ajuste de parámetros.

  3. Sin filtro de volumen, el riesgo de quedar atrapado.

  4. Los ajustes de stop/target son rígidos, pueden fallar en la práctica.

  5. Período de prueba posterior limitado, necesidad de verificar la robustez a largo plazo.

  6. El tamaño fijo carece de ajuste dinámico.

  7. Espacio de optimización limitado, alfa incierto.

  8. Necesidad de monitorear las relaciones recompensa/riesgo y el ajuste de curvas.

Mejoras

A la luz del análisis, las mejoras pueden incluir:

  1. Probando diferentes cálculos de momento.

  2. Añadiendo confirmación de volumen.

  3. Optimizando los parámetros de parada/objetivo.

  4. Introducción del aprendizaje automático para señales dinámicas.

  5. Evaluación de la robustez en todos los productos y plazos.

  6. Construcción de modelos dinámicos de dimensionamiento de la posición.

  7. Establecimiento del límite máximo tolerable de extracción.

  8. Optimización de las estrategias de gestión de riesgos.

  9. Pruebas posteriores continuas para evitar el sobreajuste.

Conclusión

En resumen, este es un sistema de seguimiento de tendencias relativamente simple y directo. Pero las optimizaciones continuas y las pruebas de robustez son clave para que cualquier estrategia se mantenga adaptable. A través de esfuerzos sistemáticos, el rendimiento y la estabilidad de la estrategia se pueden mejorar.


/*backtest
start: 2023-09-15 00:00:00
end: 2023-09-22 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © 2020 X-Trader.net

//@version=3
strategy("Trend Balance Point System by Welles Wilder", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 10000)

MomPer = input(2, "Momentum Period")

isLong = strategy.position_size > 0
isShort = strategy.position_size < 0

longTrigger = mom(close, MomPer)[1] > mom(close, MomPer)[2] and mom(close, MomPer)[1] > mom(close, MomPer)[3]
shortTrigger = mom(close, MomPer)[1] < mom(close, MomPer)[2] and mom(close, MomPer)[1] < mom(close, MomPer)[3]

longEntry = (not isLong) and longTrigger 
shortEntry = (not isShort) and shortTrigger

longStop = valuewhen(longEntry, ((high[1]+low[1]+close[1])/3 - (high[1]-low[1])), 0)
longTP = valuewhen(longEntry, (2*(high[1]+low[1]+close[1])/3 - low[1]), 0)
shortStop = valuewhen(shortEntry, ((high[1]+low[1]+close[1])/3 + (high[1]-low[1])), 0)
shortTP = valuewhen(shortEntry, (2*(high[1]+low[1]+close[1])/3 - high[1]), 0)

strategy.entry(id = "Long", long = true, when = longEntry)
strategy.exit("Exit Long", "Long", profit = longTP, loss = longStop, when = isLong) 

strategy.entry(id = "Short", long = false, when = shortEntry)
strategy.exit("Exit Short", "Short", profit = shortTP, loss = shortStop, when = isShort) 



Más.