Estrategia de seguimiento de tendencias del canal Donchian

El autor:¿ Qué pasa?, Fecha: 2023-11-06 15:52:56
Las etiquetas:

img

Resumen general

La estrategia de seguimiento de tendencias del canal de Donchian es una estrategia de seguimiento de tendencias basada en el indicador del canal de Donchian.

Estrategia lógica

La estrategia establece primero el intervalo de tiempo de backtesting y luego define las reglas de entrada largas y cortas.

Para las posiciones largas, abrir largas cuando el precio se rompe por encima de la banda superior del Canal de Donchian; cerrar largas cuando el precio se rompe por debajo de la banda inferior.

Para las posiciones cortas, abrir corto cuando el precio se rompe por debajo de la banda inferior del Canal de Donchian; cerrar corto cuando el precio se rompe por encima de la banda superior.

La estrategia también incorpora el indicador ATR para establecer el mecanismo de salida de stop loss.

En concreto, el stop loss largo es el precio de entrada menos el valor de stop loss ATR; el stop loss corto es el precio de entrada más el valor de stop loss ATR.

La estrategia también traza las bandas superior e inferior del Canal de Donchian y la línea de stop loss ATR para formar un sistema comercial completo.

Ventajas

  • Utilice el canal Donchian para determinar la dirección de la tendencia, con alguna capacidad de seguimiento de tendencias.

  • El parámetro del canal de Donchian es ajustable, lo que permite la optimización de parámetros para encontrar la mejor combinación de parámetros.

  • El mecanismo de stop loss con ATR puede controlar eficazmente los riesgos.

  • Las reglas de negociación largas y cortas son simples y fáciles de entender, adecuadas para principiantes.

  • La estructura del código es clara y fácil de entender y modificar.

Los riesgos

  • El Canal de Donchian puede tener algunos intercambios de sierra durante las fluctuaciones de precios de rango.

  • El ajuste incorrecto del rango de pérdida de frenado ATR puede causar una pérdida de frenado demasiado amplia o demasiado sensible.

  • Las posiciones largas y cortas podrían estar demasiado concentradas, lo que requiere reglas de dimensionamiento de las posiciones.

  • La estrategia debe ser probada para su aplicabilidad en diferentes productos, con optimización de parámetros independientes.

  • También es necesario tener en cuenta los costes de negociación, los parámetros pueden necesitar ajustes en entornos de alto coste.

Oportunidades de mejora

  • Optimizar los parámetros del período del canal de Donchian para encontrar la mejor combinación de parámetros.

  • Pruebe diferentes coeficientes ATR para encontrar el rango óptimo de pérdida de parada.

  • Trate de introducir un stop loss trasero encima del stop loss ATR para bloquear las ganancias.

  • Ajustar el ratio de posiciones largas/cortas en función de las condiciones del mercado.

  • Prueba la robustez de los parámetros en diferentes productos para encontrar parámetros genéricos.

  • Estudio que incorpora el MACD y otros filtros para mejorar la estabilidad.

  • Prueba la adaptabilidad de los parámetros en diferentes entornos de costes de negociación.

Resumen de las actividades

En resumen, esta es una estrategia de seguimiento de tendencias relativamente simple que se centra en la aplicación del canal de Donchian. La ventaja radica en su simplicidad y facilidad de comprensión, lo que la hace adecuada para propósitos de aprendizaje, pero los parámetros y riesgos aún necesitan una mayor optimización.


/*backtest
start: 2022-10-30 00:00:00
end: 2023-11-05 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/
// © kriswaters

//@version=4
strategy("Donchian Channels Strategy by KrisWaters", overlay=true ) 

// Date filter
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear  = input(defval = 2017, title = "From Year", minval = 1900)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"

// Strategy Settings
canEnterLong = input(true, title="Can Enter Long Position")
canEnterShort = input(false, title="Can Enter Short Position")

showLongChannel = input(true, title="Show Donchian Long Channels")
showShortChannel = input(false , title="Show Donchian Short Channels")

useAtrAsStopRule = input(false, title="Enable ATR Stop Rule") 

// DonCcian Channel Lengths
longUpperLength = input(20, minval=1)
longLowerLength = input(10, minval=1)

shortUpperLength = input(10, minval=1)
shortLowerLength = input(20, minval=1)

// Donchian indicator calculations
longUpperValue = highest(high,longUpperLength)
longLowerValue = lowest(low,longLowerLength)

shortUpperValue = highest(high,shortUpperLength)
shortLowerValue = lowest(low,shortLowerLength)

// Plot Donchian Channels
uLong = plot(showLongChannel ? longUpperValue : na, color=color.green, offset=1)
lLong = plot(showLongChannel ? longLowerValue : na, color=color.green, offset=1)

uShort = plot(showShortChannel ? shortUpperValue : na, color=color.red, offset=1)
lShort = plot(showShortChannel ? shortLowerValue : na, color=color.red, offset=1)

// Styling
fill(uLong,lLong, color=color.green, transp=95, title="Long Arkaplan")
fill(uShort,lShort, color=color.red, transp=95, title="Short Arkaplan")

// Stop-loss value calculations
atrMultiplier = 2.0
atrValue = atr(20)
longStopValue = open - (atrMultiplier*atrValue)
shortStopValue = open + (atrMultiplier*atrValue)

// Plot stop-loss line
plot(useAtrAsStopRule ? longStopValue : na, color=color.red, linewidth=2, offset=1)
plot(useAtrAsStopRule ? shortStopValue : na, color=color.red, linewidth=2, offset=1)

// Long and Short Position Rules
if canEnterLong and na(longUpperValue) != true and na(longLowerValue) != true and window()
    strategy.entry("Long", true, stop=longUpperValue)
    strategy.exit("Long Exit", "Long", stop=useAtrAsStopRule ? max(longLowerValue,longStopValue) : longLowerValue)
    
if canEnterShort and na(shortUpperValue) != true and na(shortLowerValue) != true and window()
    strategy.entry("Short", false, stop=shortLowerValue)
    strategy.exit("Short Exit", "Short", stop=useAtrAsStopRule ? min(shortUpperValue,shortStopValue) : shortUpperValue)
    


Más.