Esta estrategia se desarrolla sobre la base del indicador estándar del canal de Donchian. Espera dos máximos más altos (o mínimos más bajos) consecutivos para su confirmación por defecto antes de emitir señales comerciales, para evitar ser golpeado por los fabricantes de mercado.
La estrategia también proporciona la opción de desactivar el mecanismo de doble confirmación, de modo que pueda emitir señales comerciales inmediatamente al ver nuevos máximos o mínimos.
Para las personas a las que no les gusta el short, también existe la opción de excluir las posiciones cortas.
La estrategia se basa en las bandas superior e inferior del indicador del canal de Donchian. La banda superior es la más alta durante los últimos n bares, mientras que la banda inferior es la más baja durante los últimos n bares. El período de retroceso predeterminado n es 20.
La banda media es el promedio de las bandas superior e inferior, y se puede utilizar para medir la dirección de la tendencia.
Cuando el precio se rompe por encima de la banda superior, la estrategia será larga si no existe una posición larga existente.
Para filtrar las falsas rupturas, la opción
Las ventajas de esta estrategia incluyen:
El indicador del canal de Donchi es simple y fácil de entender.
El mecanismo de doble confirmación filtra efectivamente las falsas fugas y evita ser atrapado.
El período de revisión de canales se puede personalizar para adaptarse a diferentes entornos de mercado.
La opción de venta a corto plazo se adapta a las necesidades de diferentes inversores.
El código es limpio y fácil de entender para un mayor desarrollo.
También hay algunos riesgos con esta estrategia:
La doble confirmación puede hacer que se pierdan algunas oportunidades comerciales.
La configuración incorrecta del período de canal puede dar lugar a una negociación demasiado frecuente o escasa.
Es posible que los períodos de retención prolongados no permitan controlar eficazmente los riesgos.
Hay que tener en cuenta otros riesgos derivados de las ventas a corto.
Hay que tener cuidado con el sobreajuste de la prueba de retroceso.
Soluciones correspondientes:
Deshabilitar la confirmación doble o acortar el intervalo de confirmación.
Optimizar los parámetros y seleccionar los períodos de canal adecuados.
Establecer un límite razonable de stop loss/profit por pérdida comercial.
Deshabilitar las ventas cortas, sólo las largas.
Evalúe de manera sólida la estrategia en diferentes entornos de mercado.
Las oportunidades de mejora incluyen:
Ajuste dinámico del tamaño de las posiciones en función de la volatilidad.
Filtra las falsas rupturas basadas en las métricas de intensidad de ruptura.
Incorporar un mecanismo de parada para seguir las tendencias.
Combine otros indicadores para determinar la dirección de la tendencia y evitar perder puntos de inflexión importantes.
Optimiza los parámetros automáticamente a través del aprendizaje automático.
Estas mejoras pueden mejorar aún más la estabilidad y la rentabilidad de la estrategia.
Se trata de una estrategia de seguimiento de tendencias simple pero eficaz basada en el mecanismo de doble confirmación del canal de Donchian.
/*backtest start: 2022-12-15 00:00:00 end: 2023-12-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="Donchian Channels", shorttitle="DC", overlay=true, initial_capital=10000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, calc_on_every_tick=true) length = input(20, minval=1) lower = lowest(length) upper = highest(length) basis = avg(upper, lower) bool inShortPos = false bool inLongPos = false bool wait4confirmation = input(true, title="Wait for double confirmation?") bool doShort = input(true, title="Include short positions") plot(basis, "Basis", color=#FF6D00) u = plot(upper, "Upper", color=#2962FF) l = plot(lower, "Lower", color=#2962FF) fill(u, l, color=color.rgb(33, 150, 243, 95), title="Background") //if(inShortPos == false and inLongPos == false) if(not inLongPos and upper > upper[1]) if(wait4confirmation) if(not inLongPos and upper > upper[1] and upper[1] > upper[2]) strategy.close("Short", true) strategy.entry("Buy", true) else strategy.close("Short", true) strategy.entry("Buy", true) else if(not inShortPos and lower < lower[1]) if(wait4confirmation) if(not inShortPos and lower < lower[1] and lower[1] < lower[2]) strategy.close("Buy", true) if(doShort) strategy.entry("Short", true) else strategy.close("Buy", true) if(doShort) strategy.entry("Short", true)