Estrategia de Richard Bookstaber para generar impulso


Fecha de creación: 2023-11-02 15:12:46 Última modificación: 2023-11-02 15:12:46
Copiar: 1 Número de Visitas: 695
1
Seguir
1617
Seguidores

Estrategia de Richard Bookstaber para generar impulso

Descripción general

La estrategia de ruptura dinámica se basa en el concepto planteado por Richard Buchstaber en 1984 de que los mercados tienden a seguir en esa dirección una vez que se producen grandes fluctuaciones. Por lo tanto, la estrategia utiliza el ATR para medir la volatilidad y emite una señal de negociación cuando los cambios en los precios de cierre superan el umbral de varios ATR.

Principio de estrategia

La estrategia primero calcula el indicador ATR para medir la volatilidad del mercado. Luego calcula el valor absoluto de los cambios diarios en el precio de cierre. Se genera una señal de negociación cuando el precio de cierre varía varias veces más que el valor del indicador ATR. En concreto, si el aumento en el precio de cierre es mayor que el aumento en el ATR, haga más; si la caída en el precio de cierre es mayor que el aumento en el ATR, haga vacío.

La estrategia utiliza el indicador ATR para determinar dinámicamente los breakouts. Cuando la volatilidad del mercado aumenta, los breakouts se elevan, lo que reduce las transacciones erróneas. Cuando el mercado se reduce, los breakouts bajan, lo que permite capturar oportunamente las oportunidades de breakout.

Análisis de las ventajas

  • El stop ATR dinámico permite controlar el riesgo de manera efectiva, permitiendo que el stop cambie con la volatilidad del mercado.
  • La brecha sirve para generar señales de negociación y para capturar los cambios en las tendencias del mercado.
  • El espacio para optimizar los parámetros es amplio y se puede ajustar para diferentes variedades y ciclos.
  • La estrategia es simple, clara, fácil de entender y de implementar.

Análisis de riesgos

  • El indicador ATR reacciona lentamente a las emergencias y puede haber perdido la primera brecha.
  • El equilibrio multi-horario es malo, el efecto de hacer solo más o solo en tiempo libre es claramente mejor que el comercio bidireccional.
  • Los parámetros de la estrategia son fácilmente sobre-optimizados y pueden tener un efecto negativo en la práctica.
  • Las transacciones son frecuentes y pueden ser costosas.

Se puede considerar combinar otros indicadores para seleccionar el momento de la negociación y mejorar la eficiencia. También se pueden elegir parámetros más favorables para las características de la variedad. El uso de tecnologías como el algoritmo de Martingale para controlar la frecuencia de las transacciones.

Dirección de optimización

  • Se puede considerar la combinación de otros indicadores para determinar la dirección de la tendencia y evitar el error de negociación. Por ejemplo, RSI, MACD, etc.
  • Se puede agregar un módulo de administración de posiciones para ajustar las posiciones según las condiciones del mercado.
  • La combinación de parámetros óptima para diferentes variedades.
  • Se pueden combinar parámetros de optimización automática con tecnología de aprendizaje automático.

Resumir

La estrategia de ruptura dinámica es simple y directa, utiliza la ruptura para generar señales de negociación. La parada de ATR permite adaptarse a la volatilidad del mercado. La estrategia depende de la optimización de los parámetros para obtener buenos resultados.

Código Fuente de la Estrategia
/*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)