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.
A lógica central desta estratégia é a seguinte:
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.
Calcule o canal de Donchian lento: a faixa superior é a maior alta sobre as barras lentas passadas, a faixa inferior é a menor baixa.
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.
Após a abertura de uma posição, a faixa média do canal rápido é utilizada como stop loss.
Fechar a posição quando houver um sinal oposto ao sinal de abertura durante o período de retenção.
As vantagens desta estratégia são as seguintes:
Regras simples, fáceis de implementar, canais de Donchian e stop loss em movimento são fáceis de entender, adequados para iniciantes.
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.
Poucos sinais de negociação conflitantes. baseia-se apenas em quebras de preços de bandas de canal, evita sinais falsos de indicadores comuns.
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.
Os riscos que esta estratégia enfrenta incluem:
Mais stop loss quando a tendência não é clara, o que afeta a rentabilidade da estratégia.
Quando a tendência se inverte, os lucros flutuantes na direção da tendência anterior se transformarão em perdas.
As configurações incorretas de parâmetros levam a um excesso de agressividade ou de conservadorismo.
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.
As estratégias podem ser melhoradas nos seguintes aspectos:
Adicione filtros para sinais de entrada para evitar captar sinais de reversão de tendência.
Otimizar parâmetros como períodos de canal e dimensionamento de posições para se adequar melhor a diferentes instrumentos de negociação.
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.
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.
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)