Canal de Donchian com estratégia de stop loss

Autora:ChaoZhang, Data: 2023-12-07 16:53:10
Tags:

img

Resumo

Trata-se de uma estratégia de seguimento da tendência baseada no indicador do canal de Donchian, combinada com stop loss dinâmico baseado no indicador ATR para bloquear os lucros.

Estratégia lógica

A estratégia usa um canal de Donchian de 20 períodos, onde a linha média do canal é a média da maior alta e da menor baixa. Ela fica longa quando o preço cruza acima da linha média do canal e fica curta quando o preço cruza abaixo da linha média. A regra de saída é quando o preço toca a linha de stop loss dinâmica, que é calculada como a menor baixa dos últimos 3 bares menos um terço do valor ATR para posições longas e a maior alta dos últimos 3 bares mais um terço do valor ATR para posições curtas.

Análise das vantagens

As principais vantagens desta estratégia são:

  1. O canal Donchian é eficaz na identificação das direcções de tendência do mercado e na captura das tendências.
  2. O sistema de stop loss dinâmico baseado no ATR bloqueia os lucros, controlando os riscos.
  3. A inclusão do fator ATR no cálculo da perda de parada leva em consideração a volatilidade do mercado, tornando a parada mais razoável.
  4. O método de cálculo do stop loss é estável e fiável, evitando que as paradas estejam demasiado próximas e sejam interrompidas prematuramente.

Análise de riscos

Os principais riscos desta estratégia incluem:

  1. O canal de Donchian tem um certo efeito de atraso, que pode perder oportunidades de curto prazo.
  2. A definição inadequada dos parâmetros ATR pode conduzir a que a perda de parada seja demasiado larga ou demasiado próxima.
  3. O mecanismo de determinação da tendência é relativamente simples, o que pode gerar mais sinais falsos durante as consolidações de mercado.
  4. Falta de avaliação eficaz do nível de suporte/resistência, o que resulta num calendário inadequado de entrada no mercado.

Orientações de otimização

Algumas orientações de otimização para esta estratégia:

  1. Adicionar outros indicadores para evitar negociações frequentes quando não há uma tendência clara.
  2. Adicione o julgamento de suporte/resistência para otimizar o tempo de entrada.
  3. Testar outros métodos dinâmicos de cálculo de stop loss para otimizar ainda mais a estratégia de stop loss.
  4. Testar os efeitos dos diferentes parâmetros do período do Canal de Donchian no desempenho da estratégia.
  5. Adicione filtros no volume ou em incrementos para reduzir os falsos sinais.

Conclusão

Em resumo, esta é uma estratégia simples e prática de seguir tendências. Identifica a direção da tendência através do Canal Donchian e bloqueia os lucros com stop loss dinâmico, que pode seguir efetivamente as tendências.


/*backtest
start: 2023-11-29 00:00:00
end: 2023-12-06 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title = "dc",  overlay = true)
atrLength = input(title="ATR Length:", defval=20, minval=1)

testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testEndYear = input(2018, "Backtest Start Year")
testEndMonth = input(12)
testEndDay = input(31, "Backtest Start Day")
testPeriodEnd = timestamp(testEndYear,testEndMonth,testEndDay,0,0)


testPeriod() =>
    true
    //time >= testPeriodStart  ? true : false

dcPeriod = input(20, "Period")

dcUpper = highest(close, dcPeriod)[1]
dcLower = lowest(close, dcPeriod)[1]
dcAverage = (dcUpper + dcLower) / 2
atrValue=atr(atrLength)


useTakeProfit   = na
useStopLoss     = na
useTrailStop    = na
useTrailOffset  = na
//@version=1
Buy_stop = lowest(low[1],3) - atr(20)[1] / 3
plot(Buy_stop, color=red, title="buy_stoploss")
Sell_stop = highest(high[1],3) + atr(20)[1] / 3
plot(Sell_stop, color=green, title="sell_stoploss")

plot(dcLower, style=line, linewidth=3, color=red, offset=1)
plot(dcUpper, style=line, linewidth=3, color=aqua, offset=1)

plot(dcAverage, color=black, style=line, linewidth=3, title="Mid-Line Average")

strategy.entry("simpleBuy", strategy.long, when=(close > dcAverage) and cross(close,dcAverage))
strategy.close("simpleBuy",when= ( close< Buy_stop))
    
strategy.entry("simpleSell", strategy.short,when=(close < dcAverage) and cross(close,dcAverage) )
strategy.close("simpleSell",when=( close > Sell_stop))
    
//strategy.exit("Exit simpleBuy", from_entry = "simpleBuy", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
//strategy.exit("Exit simpleSell", from_entry = "simpleSell", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)



Mais.