Richard Bookstaber estrategia de ruptura de impulso

El autor:¿ Qué pasa?, Fecha: 2023-11-02 15:12:46
Las etiquetas:

img

Resumen general

La estrategia de ruptura de impulso se basa en el concepto propuesto por Richard Bookstaber en 1984 de que una vez que hay un gran movimiento volátil, el mercado tiende a seguirlo. Por lo tanto, utiliza el ATR para medir la volatilidad y emite órdenes cuando el cambio actual en el precio de cierre supera el umbral calculado multiplicando el ATR por una constante configurable.

Estrategia lógica

La estrategia primero calcula el indicador ATR para medir la volatilidad del mercado. Luego calcula el valor absoluto del cambio de precio de cierre diario. Cuando el cambio de precio de cierre excede el valor de ATR en varios múltiplos, se generan señales comerciales. Específicamente, si el precio de cierre aumenta más que el tren superior ATR, vaya largo; si el precio de cierre cae más que el tren superior ATR, vaya corto.

La estrategia utiliza el indicador ATR para determinar dinámicamente el umbral de ruptura. Cuando la volatilidad del mercado aumenta, el umbral aumentará para reducir las operaciones erróneas. Cuando la volatilidad del mercado disminuye, el umbral disminuirá para capturar las oportunidades de ruptura de manera oportuna.

Análisis de ventajas

  • El método ATR dinámico de detención de pérdidas puede controlar eficazmente los riesgos con una detención de pérdidas adaptativa basada en la volatilidad del mercado.
  • El uso de breakouts para generar señales comerciales puede capturar las rotaciones de tendencia del mercado.
  • Gran espacio de optimización de parámetros, puede ajustarse para diferentes productos y ciclos.
  • La lógica de la estrategia es simple y clara, fácil de entender e implementar.

Análisis de riesgos

  • El indicador de ATR reacciona lentamente a eventos repentinos, puede perder el escape inicial.
  • Desbalanceado entre largo y corto, funciona significativamente mejor para una sola parte que para el comercio bidireccional.
  • Los parámetros de la estrategia son fáciles de adaptar, los resultados reales pueden ser pobres.
  • Comercio frecuente, los costos de transacción pueden ser altos.

Considere combinar otros indicadores para seleccionar oportunidades de negociación para mejorar la eficiencia. También seleccione parámetros óptimos basados en las características del producto. Utilice técnicas como Martingale para controlar la frecuencia de negociación.

Direcciones de optimización

  • Considere combinar otros indicadores como RSI, MACD para determinar la dirección de la tendencia y evitar operaciones incorrectas.
  • Puede añadir un módulo de gestión de posiciones para ajustar las posiciones en función de las condiciones del mercado.
  • Puede seleccionar conjuntos óptimos de parámetros para diferentes productos.
  • Puede combinar técnicas de aprendizaje automático para optimizar automáticamente los parámetros.

Resumen de las actividades

La estrategia de ruptura de impulso es simple y directa, generando señales comerciales de las rupturas. La estrategia de stop loss ATR le permite adaptarse a la volatilidad del mercado. La estrategia se basa en la optimización de parámetros para obtener resultados decentes. Pero también hay algunos problemas como la falta de rupturas iniciales, el comercio frecuente, etc. Se necesitan mejoras adicionales al combinarse con otras técnicas para obtener ganancias estables en mercados complejos. En general, la estrategia de ruptura de impulso tiene una lógica clara y vale la pena investigar y aplicar más.


/*backtest
start: 2022-10-26 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
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/
// © EduardoMattje

//@version=5
strategy("Volatility System", overlay=false, margin_long=0, margin_short=0, default_qty_type=strategy.percent_of_equity, 
 default_qty_value=100, process_orders_on_close=true, initial_capital=20000)

// Inputs

var averageLength = input.int(14, "Average length", 2)
var multiplier = input.float(2.0, "Multiplier", 0.0, step=0.1)

// Calculations

atr = ta.atr(averageLength) * multiplier
closingChange = ta.change(close, 1)

atrPenetration(int signal) =>
    res = closingChange * signal > atr[1]

longCondition = atrPenetration(1)
shortCondition = atrPenetration(-1)

// Order calls

if (longCondition)
    strategy.entry(strategy.direction.long, strategy.long)

if (shortCondition)
    strategy.entry(strategy.direction.short, strategy.short)

// Visuals

plot(atr, "ATR", color.white, 2)
plot(math.abs(closingChange), "Absolute close change", color.red)


Más.