
A estratégia de ruptura de canal adaptativa é uma estratégia de tendência que segue o canal de preço do mercado. Ela determina o canal de preço calculando o preço máximo e mínimo de um período especificado e emite um sinal de negociação quando o preço quebra o canal.
A vantagem da estratégia é que pode adaptar-se automaticamente às mudanças do mercado, filtrando o ruído através da ampliação do canal, gerando um sinal de negociação quando a tendência é clara. Mas também existe o risco de perseguir altos e baixos. Através de parâmetros de otimização, pode-se reduzir transações desnecessárias e aumentar a taxa de ganho.
A estratégia é baseada na teoria da ruptura do canal. Ela calcula simultaneamente os preços mais altos e mais baixos de dois conjuntos de diferentes períodos (longitude de entrada e de saída), formando um canal. Um sinal é gerado quando o preço ultrapassa o canal.
Concretamente, a estratégia calcula os máximos e mínimos preços de 20 ciclos (longitude de entrada no mercado) para formar um canal de preços. Em seguida, calcula os máximos e mínimos preços de 10 ciclos (longitude de saída no mercado).
A estratégia emite um sinal de negociação quando o preço quebra um canal, indicando que uma tendência está se formando. Ao mesmo tempo, a linha de stop-loss também se ajusta à mudança de preço, bloqueando os lucros e evitando perdas.
A estratégia tem os seguintes riscos:
A estratégia também tem espaço para as seguintes melhorias:
A estratégia de ruptura de canal de auto-adaptação é clara e possui uma forte viabilidade. Ela é capaz de rastrear automaticamente as mudanças no mercado e gerar sinais de negociação quando uma tendência é formada. Ao mesmo tempo, configura dois conjuntos de ciclos de canal e mecanismo de controle de risco de parada. A estratégia pode melhorar ainda mais a estabilidade e a lucratividade por meio de otimização de parâmetros, introdução de condições de filtragem e outros.
/*backtest
start: 2024-01-29 00:00:00
end: 2024-02-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Turtle Trade Channels Strategy", shorttitle="TTCS", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
length = input(20,"Entry Length", minval=1)
len2=input(10, "Exit Length", minval=1)
lower = lowest(length)
upper = highest(length)
up=highest(high,length)
down=lowest(low,length)
sup=highest(high,len2)
sdown=lowest(low,len2)
K1=barssince(high>=up[1])<=barssince(low<=down[1]) ? down : up
K2=iff(barssince(high>=up[1])<=barssince(low<=down[1]),sdown,sup)
K3=iff(close>K1,down,na)
K4=iff(close<K1,up,na)
buySignal=high==upper[1] or crossover(high,upper[1])
sellSignal = low==lower[1] or crossover(lower[1],low)
buyExit=low==sdown[1] or crossover(sdown[1],low)
sellExit = high==sup[1] or crossover(high,sup[1])
strategy.entry("Buy", strategy.long, when = buySignal and barssince(buySignal) < barssince(sellSignal[1]))
strategy.entry("Sell", strategy.short, when = sellSignal and barssince(sellSignal) < barssince(buySignal[1]))
strategy.exit("Buy Exit", from_entry = "Buy", when = buyExit and barssince(buyExit) < barssince(sellExit[1]))
strategy.exit("Sell Exit", from_entry = "Sell", when = sellExit and barssince(sellExit) < barssince(buyExit[1]))
plot(K1, title="Trend Line", color=color.red, linewidth=2)
e=plot(K2, title="Exit Line", color=color.blue, linewidth=1, style=6)