Estrategia de negociación de ruptura con escalabilidad

El autor:¿ Qué pasa?, Fecha: 2023-10-30 17:25:17
Las etiquetas:

img

Resumen general

La estrategia de breakout escalable genera señales comerciales cuando el precio rompe los niveles clave de soporte y resistencia identificados por los cambios de precios. Es una estrategia de breakout altamente flexible y extensible. La estrategia se puede adaptar a diferentes marcos de tiempo ajustando parámetros y puede integrar fácilmente filtros adicionales y mecanismos de gestión de riesgos para la optimización.

Cómo funciona

La estrategia utiliza en primer lugar elswings()La función para calcular los máximos y mínimos de oscilación basados en el período de retroceso.swingLookbackLas señales largas se activan cuando el precio se rompe por encima del máximo de oscilación, y las señales cortas se activan cuando el precio se rompe por debajo del mínimo de oscilación.

Específicamente, una señal larga se activa cuando el precio de cierre es mayor o igual al precio alto de swing. Una señal corta se activa cuando el precio de cierre es menor o igual al precio bajo de swing.

La estrategia también fija un objetivo de detención basado en lastopTargetPercentParámetro para definir el nivel de stop loss. Por ejemplo, el stop loss largo se puede establecer en un 5% por debajo del máximo de swing, y el stop loss corto se puede establecer en un 5% por encima del mínimo de swing.

La ventaja de esta estrategia es la flexibilidad para ajustar el período de retroceso para controlar la frecuencia del comercio. Un período de retroceso más corto lo hace más sensible a las rupturas y aumenta la frecuencia del comercio. Un período de retroceso más largo disminuye la sensibilidad y la frecuencia del comercio pero puede perder oportunidades.

Ventajas

  • Lógica de escape simple, fácil de entender e implementar
  • El período de revisión permite optimizar los parámetros y controlar la frecuencia de las operaciones
  • Integra fácilmente el stop loss, el trailing stop y otras gestiones de riesgos
  • Muy extensible para añadir filtros y mejorar la rentabilidad
  • Aplicable a cualquier período de tiempo para el comercio intradiario o el swing

Riesgos y mitigaciones

  • El período de observación demasiado corto puede provocar un exceso de negociación
  • El período de reflexión demasiado largo puede perder oportunidades comerciales
  • El stop loss demasiado amplio reduce el potencial de ganancia
  • El stop loss demasiado apretado puede ser detenido con frecuencia.

Mitigantes:

  • Prueba diferentes períodos de búsqueda para encontrar parámetros óptimos
  • Optimizar el nivel de stop loss para equilibrar las ganancias frente al control de riesgos
  • Agregue una parada trasera o una salida de lámpara para bloquear las ganancias
  • Añadir filtros para mejorar la calidad de las señales comerciales
  • Optimización de los parámetros mediante backtesting

Oportunidades de mejora

La estrategia puede mejorarse de varias maneras:

  1. Prueba diferentes valores del período de observación para encontrar parámetros óptimos.

  2. Prueba diferentes plazos como 5m, 15m, 1h para determinar el mejor plazo.

  3. Optimizar el porcentaje de stop loss para equilibrar el potencial de ganancia frente a la gestión de riesgos.

  4. Añadir filtros como volumen, volatilidad para reducir las configuraciones inferiores.

  5. Integrar más mecanismos de gestión de riesgos como la parada de trailing, la toma de beneficios.

  6. Optimización de parámetros a través del análisis avanzado y el aprendizaje automático.

  7. Introducir la inteligencia artificial y el aprendizaje automático para la optimización automática de los parámetros.

Conclusión

La estrategia de negociación de breakout escalable es un sistema de breakout robusto y personalizable. Es simple de usar y altamente adaptable al ajustar la retroalimentación y agregar filtros. Puede integrar fácilmente la gestión de riesgos para el control de riesgos. Con la optimización de parámetros e integración de aprendizaje automático, la estrategia puede evolucionar con el tiempo para adaptarse a los mercados cambiantes. En general, es una estrategia de breakout universal recomendada.


/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 1h
basePeriod: 15m
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/
// © deperp

//@version=5
// strategy("Range Breaker", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.07, pyramiding=0)

// Backtest Time Period

useDateFilter = input.bool(true, title="Begin Backtest at Start Date",
     group="Backtest Time Period")
backtestStartDate = input(timestamp("1 Jan 2020"), 
     title="Start Date", group="Backtest Time Period",
     tooltip="This start date is in the time zone of the exchange " + 
     "where the chart's instrument trades. It doesn't use the time " + 
     "zone of the chart or of your computer.")

inTradeWindow = true

swingLookback = input.int(20, title="Swing Lookback", minval=3)
stopTargetPercent = input.float(5, title="Stop Target Percentage", step=0.1)

// Calculate lockback swings
swings(len) =>
    var highIndex = bar_index
    var lowIndex = bar_index
    var swingHigh = float(na)
    var swingLow = float(na)
    
    upper = ta.highest(len)
    lower = ta.lowest(len)
    
    if high[len] > upper
        highIndex := bar_index[len]
        swingHigh := high[len]

    if low[len] < lower
        lowIndex := bar_index[len]
        swingLow := low[len]

    [swingHigh, swingLow, highIndex, lowIndex]


// Strategy logic
[swingHigh, swingLow, highIndex, lowIndex] = swings(swingLookback)
longCondition = inTradeWindow and (ta.crossover(close, swingHigh))
shortCondition = inTradeWindow and (ta.crossunder(close, swingLow))

if longCondition
    strategy.entry("Long", strategy.long)
if shortCondition
    strategy.entry("Short", strategy.short)

longStopTarget = close * (1 + stopTargetPercent / 100)
shortStopTarget = close * (1 - stopTargetPercent / 100)

strategy.exit("Long Stop Target", "Long", limit=longStopTarget)
strategy.exit("Short Stop Target", "Short", limit=shortStopTarget)

// Plot break lines
// line.new(x1=highIndex, y1=swingHigh, x2=bar_index, y2=swingHigh, color=color.rgb(255, 82, 82, 48), width=3, xloc=xloc.bar_index, extend=extend.right)
// line.new(x1=lowIndex, y1=swingLow, x2=bar_index, y2=swingLow, color=color.rgb(76, 175, 79, 47), width=3, xloc=xloc.bar_index, extend=extend.right)


// Alert conditions for entry and exit
longEntryCondition = inTradeWindow and (ta.crossover(close, swingHigh))
shortEntryCondition = inTradeWindow and (ta.crossunder(close, swingLow))

longExitCondition = close >= longStopTarget
shortExitCondition = close <= shortStopTarget

alertcondition(longEntryCondition, title="Long Entry Alert", message="Enter Long Position")
alertcondition(shortEntryCondition, title="Short Entry Alert", message="Enter Short Position")
alertcondition(longExitCondition, title="Long Exit Alert", message="Exit Long Position")
alertcondition(shortExitCondition, title="Short Exit Alert", message="Exit Short Position")

Más.