Estrategia de trading de ruptura escalable


Fecha de creación: 2023-10-30 17:25:17 Última modificación: 2023-10-30 17:25:17
Copiar: 0 Número de Visitas: 630
1
Seguir
1617
Seguidores

Estrategia de trading de ruptura escalable

Descripción general

La estrategia de ruptura escalable es una estrategia de ruptura muy flexible y escalable que identifica las áreas clave de soporte y resistencia del precio y genera una señal de negociación cuando el precio supera estas áreas. La estrategia puede aplicarse a diferentes períodos de tiempo mediante la adaptación de los parámetros, y también puede integrarse fácilmente con una variedad de condiciones de filtración adicionales y mecanismos de gestión de riesgos para optimizarlos para un activo específico.

Principio de estrategia

La estrategia comenzó conswings()La función calcula los máximos y mínimos de fluctuación de los precios actuales en función de la retrospectiva.swingLookbackLa configuración de los parámetros, que tiene por defecto 20 líneas K. Después de eso, cuando el precio rompa el punto más alto de la oscilación, haga más; cuando el precio cae el punto más bajo de la oscilación, haga un vacío.

La lógica concreta de hacer más señales es hacer más cuando el precio de cierre es mayor que el precio de fluctuación alto. La lógica concreta de señales de baja es hacer menos cuando el precio de cierre es menor que el precio de fluctuación bajo.

Además, la estrategia también establece un punto de parada, a través destopTargetPercentLos parámetros para configurar la amplitud de la parada de pérdidas. Por ejemplo, el precio de la parada de pérdidas se establece en menos del 5% del precio máximo y el precio de la parada de pérdidas se establece en más del 5% del precio mínimo.

La ventaja de esta estrategia es que se puede controlar la frecuencia de las operaciones mediante el ajuste de los períodos de retracción. Cuanto más corto sea el período de retracción, más sensible a las rupturas, mayor será la frecuencia de las operaciones. Por el contrario, el período de retracción demasiado largo disminuye la frecuencia de las operaciones pero puede perder oportunidades.

Ventajas estratégicas

  • Un proyecto innovador y sencillo de entender
  • Se puede ajustar el parámetro de optimización de la retrospectiva para controlar la frecuencia de las transacciones
  • Sistemas de gestión de riesgos que se pueden integrar fácilmente, como el stop loss y el stop loss móvil
  • Escalable, puede añadir una variedad de condiciones de filtración para aumentar la rentabilidad
  • Aplicable en cualquier ciclo de tiempo, para operaciones intradiarias y de línea larga

Riesgos y contramedidas

  • El período de retrospectiva demasiado corto puede causar exceso de transacciones
  • El retraso en la revisión puede hacer que se pierda una oportunidad de negocio
  • La configuración de parada de pérdidas demasiado amplia puede reducir el espacio de ganancias
  • El estancamiento demasiado estrecho puede causar que el estancamiento se active con frecuencia

Respuesta:

  • Prueba diferentes períodos de revisión para encontrar la mejor combinación de parámetros
  • Optimización de los límites de pérdidas y equilibrio entre el margen de ganancia y el control de riesgos
  • Se puede agregar un stop loss móvil o un stop loss circular para bloquear las ganancias
  • Aumentar las condiciones de filtración para aumentar la probabilidad de obtener ganancias

Dirección de optimización

La estrategia puede ser optimizada en los siguientes aspectos:

  1. Prueba de diferentes parámetros de revisión para encontrar la combinación óptima de parámetros.

  2. Probar diferentes ciclos de negociación, como 5 minutos, 15 minutos, 1 hora, etc., para seleccionar el mejor ciclo;

  3. Optimización de los límites de pérdidas y equilibrio entre el margen de ganancias y el control de riesgos.

  4. Aumentar las condiciones de filtración, tales como filtración de volumen de transacciones, filtración de fluctuaciones, etc., para reducir las señales de baja calidad;

  5. La integración de más mecanismos de gestión de riesgos, como el stop loss móvil y el bloqueo de ganancias;

  6. Optimización de parámetros, búsqueda de parámetros óptimos con optimización progresiva y búsqueda aleatoria;

  7. Integración de la tecnología de aprendizaje automático para la optimización automática de parámetros mediante IA.

Resumir

La estrategia de ruptura extensible es un sistema de ruptura muy práctico. Es simple y fácil de usar, se puede personalizar y se puede optimizar para diferentes activos ajustando el período de retrospección y la integración de diversas condiciones de filtración. Al mismo tiempo, se puede integrar fácilmente en todo tipo de mecanismos de gestión de riesgos para controlar el riesgo de las operaciones.

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