Estratégia de comércio de tartarugas baseada nos canais de Donchian

Autora:ChaoZhang, Data: 2024-02-26 14:35:02
Tags:

img

Resumo

O Tang Anqi Turtle Trading Strategy é uma versão altamente simplificada da estratégia original Turtle Trading. É muito diferente da estratégia original Turtle. A estratégia usa dois canais Donchian, um canal rápido e um canal lento. Os períodos de canal são definidos pelo usuário, com valores padrão de 20 bares para o canal rápido e 50 bares para o canal lento. A estratégia utiliza as bandas superior e inferior do canal lento para entradas e a faixa média do canal rápido para definir stop loss.

Estratégia lógica

A lógica central desta estratégia é a seguinte:

  1. Calcule o Canal de Donchian rápido: A banda superior é a maior alta sobre as barras rápidas passadas, a banda inferior é a menor baixa, e a banda do meio é a média das bandas superior e inferior.

  2. Calcule o canal de Donchian lento: a faixa superior é a maior alta sobre as barras lentas passadas, a faixa inferior é a menor baixa.

  3. Quando não há posição, um sinal longo é acionado quando o preço toca a banda superior do canal lento e um sinal curto é acionado quando o preço toca a banda inferior do canal lento.

  4. Após a abertura de uma posição, a faixa média do canal rápido é utilizada como stop loss.

  5. Fechar a posição quando houver um sinal oposto ao sinal de abertura durante o período de retenção.

Análise das vantagens

As vantagens desta estratégia são as seguintes:

  1. Regras simples, fáceis de implementar, canais de Donchian e stop loss em movimento são fáceis de entender, adequados para iniciantes.

  2. Parâmetros personalizáveis: os utilizadores podem ajustar os parâmetros com base em produtos de negociação e prazos para se adaptarem aos diferentes ambientes de mercado.

  3. Poucos sinais de negociação conflitantes. baseia-se apenas em quebras de preços de bandas de canal, evita sinais falsos de indicadores comuns.

  4. Gerenciamento automático de stop loss. O stop loss móvel baseado na banda média do canal rápido pode limitar as perdas em transações individuais.

Análise de riscos

Os riscos que esta estratégia enfrenta incluem:

  1. Mais stop loss quando a tendência não é clara, o que afeta a rentabilidade da estratégia.

  2. Quando a tendência se inverte, os lucros flutuantes na direção da tendência anterior se transformarão em perdas.

  3. As configurações incorretas de parâmetros levam a um excesso de agressividade ou de conservadorismo.

  4. Alta dependência da negociação automatizada. A estabilidade do servidor é importante para evitar exceções que levem ao fracasso na negociação automatizada.

Para reduzir os riscos acima referidos, os parâmetros podem ser otimizados, o dimensionamento das posições pode ser adequadamente limitado e podem ser adicionados módulos de gestão de riscos.

Orientações de otimização

As estratégias podem ser melhoradas nos seguintes aspectos:

  1. Adicione filtros para sinais de entrada para evitar captar sinais de reversão de tendência.

  2. Otimizar parâmetros como períodos de canal e dimensionamento de posições para se adequar melhor a diferentes instrumentos de negociação.

  3. Adicionar módulos de gestão de risco, como limites máximos de utilização e limites diários de perdas, para evitar perdas excessivas em eventos extremos.

  4. Melhorar as estratégias de stop loss, por exemplo, adotar stop loss de trailing para tornar as paradas mais adaptáveis às tendências do mercado.

Conclusão

Em resumo, a Estratégia de Negociação da Tartaruga Tang Anqi é um sistema simples de tendência. Suas vantagens estão em sua facilidade de compreensão e automação. Mas também traz certos riscos, e são necessárias melhorias adicionais em parâmetros e gerenciamento de risco para torná-lo mais prático. Com medidas como ajuste de parâmetros, adição de filtros e módulos de controle de risco, a estratégia pode alcançar melhores resultados na negociação ao vivo.


/*backtest
start: 2024-01-26 00:00:00
end: 2024-02-15 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2020

//@version=4
strategy("Noro's SimpleTurtle Strategy", shorttitle = "SimpleTurtle str", overlay = true, default_qty_type = strategy.percent_of_equity, initial_capital = 100, default_qty_value = 100, commission_value = 0.1)

//Settings
needlong  = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
sizelong  = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot long, %")
sizeshort = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot short, %")
fast      = input(20, minval=1)
slow      = input(50, minval=1)
showof    = input(true, defval = true, title = "Show offset")
showll    = input(true, defval = true, title = "Show lines")
showdd    = input(false, defval = true, title = "Show label (drawdown)")
showbg    = input(true, defval = true, title = "Show background")
fromyear  = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear    = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth   = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday   = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today     = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Donchian price channel fast
hf = highest(high, fast)
lf = lowest(low, fast)
center = (hf + lf) / 2

//Donchian price chennal slow
hs = highest(high, slow)
ls = lowest(low, slow)

//Lines
colorpc = showll ? color.blue : na
colorsl = showll ? color.red : na
offset = showof ? 1 : 0
plot(hs, offset = offset, color = colorpc)
plot(ls, offset = offset, color = colorpc)
plot(center, offset = offset, color = colorsl)

//Background
size = strategy.position_size
colorbg = showbg == false ? na : size > 0 ? color.lime : size < 0 ? color.red : na
bgcolor(colorbg, transp = 70)

//Orders
truetime = true
lotlong = 0.0
lotshort = 0.0
lotlong := size != size[1] ? strategy.equity / close * sizelong / 100 : lotlong[1]
lotshort := size != size[1] ? strategy.equity / close * sizeshort / 100 : lotshort[1]

//Orders
strategy.entry("Long", strategy.long, lotlong, stop = hs, when = needlong and strategy.position_size == 0 and truetime)
strategy.entry("Short", strategy.short, lotshort, stop = ls, when = needshort and strategy.position_size == 0 and truetime)
strategy.exit("Long", stop = center, when = needlong and strategy.position_size > 0)
strategy.exit("Short", stop = center, when = needshort and strategy.position_size < 0)
if true
    strategy.close_all()
    strategy.cancel("fast L")
    strategy.cancel("fast S")
    strategy.cancel("slow L")
    strategy.cancel("slow S")
    
if showdd

    //Drawdown
    max = 0.0
    max := max(strategy.equity, nz(max[1]))
    dd = (strategy.equity / max - 1) * 100
    min = 100.0
    min := min(dd, nz(min[1]))
    
    //Label
    min := round(min * 100) / 100
    labeltext = "Drawdown: " + tostring(min) + "%"
    var label la = na
    label.delete(la)
    tc = min > -100 ? color.white : color.red
    osx = timenow + round(change(time)*10)
    osy = highest(100)
    la := label.new(x = osx, y = osy, text = labeltext, xloc = xloc.bar_time, yloc = yloc.price, color = color.black, style = label.style_labelup, textcolor = tc)

Mais.