Esta estratégia é baseada no famoso sistema de negociação de tartaruga, usando o canal Donchian para identificar breakouts e ATR para definir stop loss para seguir a tendência. A vantagem é a forte capacidade de controle de drawdown, limitando efetivamente a perda de uma única negociação. No entanto, a adaptabilidade entre diferentes instrumentos de negociação é fraca e precisa de ajuste de parâmetros.
A estratégia baseia-se principalmente em dois indicadores: o Canal de Donchian e o ATR.
O canal Donchian é construído por maior alta e menor baixa. O comprimento padrão do canal é de 20 dias, traçado com 20 dias de maior alta e menor baixa.
O ATR mede a volatilidade do mercado e é usado para a configuração de stop loss.
A lógica específica de negociação é a seguinte:
Vai longo quando o preço ultrapassa a faixa superior.
Estabelecer um stop loss ao preço mais baixo na entrada menos 2N ATR.
Fechar posição longa quando o preço ultrapassa a faixa inferior.
Faça curto quando o preço for abaixo da faixa inferior.
Estabelecer o stop loss ao preço mais elevado na entrada mais 2N ATR.
Fechar posição curta quando o preço ultrapassar a faixa superior.
Em resumo, a estratégia identifica a direção da tendência e os sinais de entrada com o canal Donchian e controla o risco com o stop loss baseado em ATR, para seguir as tendências.
As principais vantagens desta estratégia são:
Forte capacidade de controle de retração.
Capacidade de acompanhar tendências. Donchian Channel pode identificar efetivamente rupturas e mudanças de tendência.
Aplica-se a instrumentos de alta volatilidade.
Lógica simples e clara, fácil de entender e implementar.
Flexibilidade para otimizar com a linguagem Python.
Alguns riscos desta estratégia a observar:
Os parâmetros do canal precisam de otimização para diferentes instrumentos e prazos.
Risco de stop loss consecutivo: podem ocorrer vários gatilhos de stop loss em condições de mercado voláteis.
O parâmetro ATR necessita de backtesting. ATR afeta diretamente o stop loss e deve ser ajustado com base na volatilidade.
Potencialmente frequência de negociação demasiado elevada.
A estratégia concentra-se no stop loss e não pode capturar plenamente os ganhos da tendência.
Preços de câmbio de curto prazo e de curto prazo.
A estratégia pode ser melhorada nos seguintes aspectos:
Otimizar os parâmetros do canal para diferentes instrumentos.
Adicionar filtros para evitar muitos sinais sob o mercado de alcance limitado.
Otimizar o parâmetro do período ATR e o impacto do ensaio na perda de parada.
Adicione entrada de pirâmide para aumentar o tamanho da posição para maximizar os ganhos da tendência.
Incorporar outros indicadores como MACD, KD para evitar sinais falsos.
Ajustar o stop loss com base nos custos de deslizamento e comissão.
Teste a adaptabilidade em diferentes instrumentos e otimize os parâmetros.
Como uma versão introdutória do sistema Turtle Trading, esta estratégia tem lógica simples e clara, forte capacidade de controle de drawdown e pode validar efetivamente os princípios do 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)