Esta estrategia se basa en el famoso sistema de comercio de tortugas, utilizando el canal Donchian para identificar las rupturas y ATR para establecer el stop loss para seguir la tendencia. La ventaja es la fuerte capacidad de control de descenso al limitar efectivamente la pérdida de una sola operación. Sin embargo, la adaptabilidad a través de diferentes instrumentos comerciales es débil y necesita ajuste de parámetros. En general, como una versión introductoria del sistema de comercio de tortugas, esta estrategia se puede utilizar para validar la efectividad de las reglas de comercio de tortugas y también servir como una estrategia comercial cuantitativa básica.
La estrategia se basa principalmente en dos indicadores: el Canal de Donchian y el ATR.
El canal Donchian está construido por el más alto y el más bajo. La longitud predeterminada del canal es de 20 días, trazada con el más alto y el más bajo de 20 días. La señal de compra se genera cuando el precio se rompe por encima de la banda superior y la señal de venta cuando el precio se rompe por debajo de la banda inferior.
El ATR mide la volatilidad del mercado y se utiliza para establecer el stop loss. El período ATR predeterminado es de 20 días.
La lógica de negociación específica es:
Ir largo cuando el precio se rompe por encima de la banda superior.
Establecer el stop loss al precio más bajo al momento de la entrada menos 2N ATR.
Cierre la posición larga cuando el precio se rompe por debajo de la banda inferior.
Ir corto cuando el precio se rompe por debajo de la banda inferior.
Establecer el stop loss al precio más alto en la entrada más 2N ATR.
Cierre la posición corta cuando el precio se rompe por encima de la banda superior.
En resumen, la estrategia identifica la dirección de la tendencia y las señales de entrada con el canal Donchian, y controla el riesgo con el stop loss basado en ATR, para seguir las tendencias.
Las principales ventajas de esta estrategia son las siguientes:
Una fuerte capacidad de control de descenso.
Capacidad para seguir las tendencias. Donchian Channel puede identificar eficazmente las rupturas y cambios de tendencia.
Aplicable para instrumentos de alta volatilidad: el ATR tiene en cuenta la volatilidad del mercado al establecer el stop loss.
Lógica simple y clara, fácil de entender e implementar.
Flexibilidad para optimizar con el lenguaje Python.
Algunos riesgos de esta estrategia a tener en cuenta:
Los parámetros del canal necesitan una optimización para diferentes instrumentos y plazos.
El riesgo consecutivo de pérdida de detención: pueden producirse múltiples detonantes de pérdida de detención en condiciones de mercado volátiles.
El parámetro ATR requiere backtesting. ATR afecta directamente el stop loss y debe ajustarse en función de la volatilidad.
Potencialmente demasiada frecuencia de negociación, puede ocurrir demasiadas señales bajo el mercado de rango.
La estrategia se centra en el stop loss y no puede capturar completamente las ganancias de tendencia.
Las diferencias de precio pueden desencadenar directamente la pérdida de parada.
La estrategia puede mejorarse en los siguientes aspectos:
Optimizar los parámetros del canal para diferentes instrumentos.
Añadir filtros para evitar demasiadas señales bajo el mercado de rango limitado.
Optimizar el parámetro del período ATR y el impacto del ensayo en el stop loss.
Añadir entrada piramidal para aumentar el tamaño de la posición para maximizar las ganancias de tendencia.
Incorporar otros indicadores como MACD, KD para evitar señales falsas.
Ajustar el stop loss en función de los costos de deslizamiento y comisión.
Prueba la adaptabilidad en diferentes instrumentos y optimiza los parámetros.
Como una versión introductoria del sistema de Turtle Trading, esta estrategia tiene una lógica simple y clara, una fuerte capacidad de control de descenso y puede validar eficazmente los principios de Turtle Trading.
/*backtest start: 2022-10-10 00:00:00 end: 2023-10-16 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //Based on Turtle traders strategy: buy/sell on Donchian breakouts and stop loss on ATR 2x // initial version considerations : //// 1. Does not consider filter for avoiding new entries after winning trades (filtering rule from Turtle Strategy on 20 day breakout strategy) //// 2. Does not consider pyramiding (aditional entries after 1N price movements) strategy("Turtle trading strategy (Donchian/ATR)", overlay=true) enter_period = input(20, minval=1, title="Enter Channel") exit_period = input(10, minval=1, title="Exit Channel") offset_bar = input(0,minval=0, title ="Offset Bars") direction = input("Long",options=["Long","Short"],title="Direction") max_length = max(enter_period,exit_period) atrmult = input(2,title="ATR multiplier (Stop Loss)") atrperiod = input(20,title="ATR Period") closed_pos = false dir_long = direction == "Long"? true : false atr = atr(atrperiod) upper = dir_long ? highest(enter_period): highest(exit_period) lower = dir_long ? lowest(exit_period): lowest(enter_period) atrupper = close + atr atrlower = close - atr plotted_atr = dir_long ? atrlower : atrupper //basis = avg(upper, lower) l = plot(lower, style=line, linewidth=3, color=lime, offset=1) u = plot(upper, style=line, linewidth=3, color=lime, offset=1) a = plot(plotted_atr, style=line,linewidth=2,color=red,offset=1) //plot(basis, color=yellow, style=line, linewidth=1, title="Mid-Line Average") //break upper Donchian (with 1 candle offset) (buy signal) break_up = (close >= upper[1]) //break lower Donchian (with 1 candle offset) (sell signal) break_down = (close <= lower[1]) stop_loss = dir_long ? (close<=plotted_atr[1]) : (close>=plotted_atr[1]) if break_up and dir_long strategy.entry("buy", strategy.long, 1) closed_pos :=false if (break_down or stop_loss) and dir_long strategy.close("buy") if break_down and not dir_long strategy.entry("sell", strategy.short, 1) closed_pos :=false if (break_up or stop_loss) and not dir_long strategy.close("sell") closed_pos :=true losing_trade = strategy.equity[0]<strategy.equity[1] //plotshape(losing_trade,text="Losing!") plotshape(stop_loss,style=dir_long?shape.labeldown:shape.labelup,text="Stop!") //plot(strategy.equity)