Estrategia de salida del Canal de Donchian

El autor:¿ Qué pasa?, Fecha: 2023-12-04 14:16:33
Las etiquetas:

img

Resumen general

La estrategia de ruptura del canal de Donchian es una acción de precios y tendencia después de la estrategia de negociación de ruptura.

Estrategia lógica

La lógica central de esta estrategia es la siguiente:

  1. Utilizar las funciones Ta.highest y Ta.lowest para calcular el máximo y el mínimo durante un determinado período (por ejemplo, 60 bares) para construir las bandas superior e inferior del Canal de Donchian.

  2. Cuando los precios rompen por encima de la banda superior, indica que una tendencia alcista puede estar comenzando, así que vaya largo en las próximas barras abiertas después de la ruptura de la banda superior.

  3. Una vez que los precios vuelven a caer por debajo de la banda superior o vuelven a subir por encima de la banda inferior, indica una inversión de tendencia, por lo que aplanar las posiciones largas o cortas existentes.

  4. Para controlar los riesgos, fije el stop loss al precio de entrada menos/más un tick mínimo después de iniciar posiciones largas/cortas.

Este tipo de estrategia de ruptura de canal es simple y directa, teniendo en cuenta tanto la acción del precio como la tendencia, fácil de ejecutar y estable.

Ventajas

Esta estrategia tiene varias ventajas:

  1. La lógica es clara, sencilla y fácil de entender, con una gran capacidad de ejecución.

  2. El uso del canal de Donchian para determinar la dirección de la tendencia puede filtrar eficazmente el ruido e identificar señales de ruptura confiables.

  3. Un establecimiento razonable de stop loss después de la entrada puede controlar bien la pérdida de una sola operación.

  4. No importa la condición del mercado, la estrategia puede operar junto con la tendencia una vez que ocurre una ruptura válida y atrapar grandes movimientos potenciales.

  5. Muy pocos parámetros, no propensos a la sobreajuste, con un gran espacio de ajuste y una alta plasticidad.

Los riesgos

También hay algunos riesgos con esta estrategia:

  1. Como una tendencia que sigue la estrategia, no puede atrapar movimientos de reversión.

  2. El stop loss demasiado cercano puede ser detenido por los cambios de precios a corto plazo.

  3. Un ajuste incorrecto de la longitud del canal aumenta las probabilidades de una falsa ruptura.

Algunas contramedidas:

  1. Incorporar otros indicadores para identificar posibles inversiones, evitar seguir ciegamente las tendencias.

  2. Utilice una parada de seguimiento razonable para bloquear las ganancias en lugar de aferrarse a la pérdida de parada dura inicial.

  3. Prueba diferentes valores de parámetros para encontrar la combinación óptima.

Direcciones de optimización

Hay espacio para una mayor optimización:

  1. Pruebe la doble estrategia de ruptura de canal Donchian, una para entrar y otra para detener pérdida/ganancia.

  2. Sólo tomar operaciones después de que el breakout exceda cierta cantidad de ticks para filtrar algunas roturas falsas.

  3. Agregue un filtro de volumen o volatilidad para evitar malas operaciones cuando los precios oscilan violentamente.

  4. Pruebe diferentes estrategias de retención como seguir la tendencia o la inversión media en combinación para obtener mejores resultados.

  5. Añadir módulos de gestión de riesgos para limitar la pérdida diaria máxima, el aprovechamiento máximo, etc.

Conclusión

En resumen, la Estrategia de Breakout de Canal Donchian es una estrategia muy práctica de seguimiento de tendencias a corto plazo. Identifica los posibles cambios de tendencia a través de la acción del precio y utiliza las rupturas de canal para entrar en operaciones. La lógica es simple y fácil de ejecutar, y puede lograr resultados decentes en varios mercados. Con optimizaciones adicionales como ajuste de parámetros, mecanismos de stop loss, identificación de inversión, etc., se puede esperar un aumento significativo del rendimiento. Sirve como un gran punto de partida estrategia para el comercio de algo.


/*backtest
start: 2023-11-03 00:00:00
end: 2023-12-03 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// Step 1. Define strategy settings
strategy(title="Price action and breakout Channel Forexrn", overlay=true,
     pyramiding=0, initial_capital=100000,
     commission_type=strategy.commission.cash_per_order,
     commission_value=4, slippage=2)

dochLen = input.int(60, title="Price action and breackout Channel Forexrn")

// Position sizing inputs
usePosSize    = input.bool(true, title="Use Position Sizing?")
atrLen        = input.int(10, title="ATR Length")
atrRiskOffset = input.float(4, title="ATR Risk Offset Multiple", step=0.25)

maxRisk = input.float(2, title="Max Position Risk %", step=.25, 
     minval=0.25, maxval=15)
maxExposure = input.float(10, title="Max Position Exposure %", step=1, 
     minval=1, maxval=100)
marginPerc = input.int(10, title="Margin %", minval=1, maxval=100)

// Step 2. Calculate strategy values
upperband = ta.highest(high, dochLen)[1]
lowerband = ta.lowest(low, dochLen)[1]

// Calculate position size
riskEquity = (maxRisk * 0.01) * strategy.equity
riskTrade  = (ta.atr(atrLen) * atrRiskOffset) * syminfo.pointvalue

maxPos = ((maxExposure * 0.01) * strategy.equity) /
     ((marginPerc * 0.01) * (close * syminfo.pointvalue))

posSize = usePosSize ? math.min(math.floor(riskEquity / riskTrade), maxPos) : 1

// Step 3. Output strategy data
plot(upperband, color=color.green, linewidth=2, title="DoCh Upperband")
plot(lowerband, color=color.red, linewidth=2, title="DoCh Lowerband")

// Step 4. Determine trading conditions
tradeWindow  = true

tradeAllowed = tradeWindow and bar_index > dochLen

// Step 5. Submit entry orders
if tradeAllowed
    if strategy.position_size < 1
        strategy.entry("EL", strategy.long, qty=posSize,
             stop=upperband + syminfo.mintick)

    if strategy.position_size > -1
        strategy.entry("ES", strategy.short, qty=posSize,
             stop=lowerband - syminfo.mintick)

// Step 6. Submit exit orders
if not tradeWindow
    strategy.close_all()

Más.