Estratégia de fuga baseada no comércio de tartarugas

Autora:ChaoZhang, Data: 2023-10-17 17:22:34
Tags:

img

Resumo

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.

Princípios

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:

  1. Vai longo quando o preço ultrapassa a faixa superior.

  2. Estabelecer um stop loss ao preço mais baixo na entrada menos 2N ATR.

  3. Fechar posição longa quando o preço ultrapassa a faixa inferior.

  4. Faça curto quando o preço for abaixo da faixa inferior.

  5. Estabelecer o stop loss ao preço mais elevado na entrada mais 2N ATR.

  6. 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.

Análise das vantagens

As principais vantagens desta estratégia são:

  1. Forte capacidade de controle de retração.

  2. Capacidade de acompanhar tendências. Donchian Channel pode identificar efetivamente rupturas e mudanças de tendência.

  3. Aplica-se a instrumentos de alta volatilidade.

  4. Lógica simples e clara, fácil de entender e implementar.

  5. Flexibilidade para otimizar com a linguagem Python.

Análise de riscos

Alguns riscos desta estratégia a observar:

  1. Os parâmetros do canal precisam de otimização para diferentes instrumentos e prazos.

  2. Risco de stop loss consecutivo: podem ocorrer vários gatilhos de stop loss em condições de mercado voláteis.

  3. O parâmetro ATR necessita de backtesting. ATR afeta diretamente o stop loss e deve ser ajustado com base na volatilidade.

  4. Potencialmente frequência de negociação demasiado elevada.

  5. A estratégia concentra-se no stop loss e não pode capturar plenamente os ganhos da tendência.

  6. Preços de câmbio de curto prazo e de curto prazo.

Orientações de otimização

A estratégia pode ser melhorada nos seguintes aspectos:

  1. Otimizar os parâmetros do canal para diferentes instrumentos.

  2. Adicionar filtros para evitar muitos sinais sob o mercado de alcance limitado.

  3. Otimizar o parâmetro do período ATR e o impacto do ensaio na perda de parada.

  4. Adicione entrada de pirâmide para aumentar o tamanho da posição para maximizar os ganhos da tendência.

  5. Incorporar outros indicadores como MACD, KD para evitar sinais falsos.

  6. Ajustar o stop loss com base nos custos de deslizamento e comissão.

  7. Teste a adaptabilidade em diferentes instrumentos e otimize os parâmetros.

Resumo

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)


    



Mais.