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

Autora:ChaoZhang, Data: 2023-12-25 10:57:52
Tags:

img

Resumo

O nome desta estratégia é Turtle Trading Strategy Based on Donchian Channels. Ele empresta a ideia principal das famosas Turtle Trading Rules e usa os canais de Donchian para determinar tendências de mercado, combinadas com médias móveis para filtragem, realizando uma estratégia relativamente simples de tendência.

Princípio da estratégia

O principal indicador para julgamento desta estratégia é o Canal de Donchian. O Canal de Donchian consiste na faixa flutuante dos preços mais altos e mais baixos no período de N dias. Se o preço atravessar o trilho superior do canal, será um sinal longo; se atravessar o trilho inferior do canal, será um sinal curto. Esta estratégia usa o Canal de Donchian rápido (10 dias) para emitir sinais e o Canal de Donchian lento (20 dias) para parar a perda.

Além disso, esta estratégia também introduz duas linhas médias móveis (linha de 50 dias e linha de 125 dias) para filtrar sinais. Somente quando a linha média móvel rápida cruza acima da linha média móvel lenta, as posições longas serão negociadas; somente quando a linha média móvel rápida cruza abaixo da linha média móvel lenta, as posições curtas serão negociadas. Isso pode efetivamente filtrar alguns sinais falsos.

As condições de abertura desta estratégia são: o preço atravessa o trilho superior do Canal de Donchian, e a linha média móvel rápida atravessa acima da linha média móvel lenta. Quando ambas as condições são atendidas, as posições longas serão abertas; O preço atravessa o trilho inferior do Canal de Donchian, e a linha média móvel rápida atravessa abaixo da linha média móvel lenta, em seguida, abra posições curtas. As condições de fechamento são quando o preço toca os limites opostos do Canal de Donchian lento.

Análise das vantagens

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

  1. Usando o canal de Donchian para determinar a direção da tendência, o efeito de backtest é melhor para capturar com sucesso a grande tendência;

  2. A adição do filtro da média móvel pode filtrar alguns sinais falsos e evitar perdas;

  3. A combinação de canais Donchain rápidos e lentos e médias móveis pode equilibrar a frequência de negociação e a precisão do stop loss;

  4. O risco é bem controlado com um mecanismo de stop loss para controlar perdas individuais.

Análise de riscos

Alguns riscos desta estratégia:

  1. No mercado de choque, pode haver mais pequenas ordens perdedoras;

  2. Quando ocorre uma inversão de tendência, a filtragem das médias móveis aumentará os custos de abertura;

  3. Em mercados íngremes, o stop loss pode ser perseguido.

Contramedidas e soluções:

  1. Ajustar adequadamente os parâmetros, encurtar o ciclo de Donchian, reduzir o ciclo da média móvel para se adaptar a diferentes mercados.

  2. Aumentar o julgamento sobre a tendência principal para evitar a construção de posições contra a tendência principal.

Orientações de otimização

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Por exemplo, introduzir volume, abrir posições apenas quando o volume aumenta;

  2. Aumentar o julgamento de áreas quentes. combinar com suporte, pressão, bandas, padrões e assim por diante para evitar áreas quentes ao abrir posições;

  3. Otimizar as estratégias de stop loss. Introduzir o rastreamento stop loss, volatilidade stop loss, tempo stop loss etc. para tornar o stop loss mais inteligente.

Resumo

Em geral, esta estratégia é uma estratégia muito típica e simples de seguir tendências. Ela realiza bons resultados de backtest determinando a direção através do Canal Donchian e filtrando sinais através de médias móveis. Esta estratégia é adequada para investidores que perseguem grandes tendências, com bom controle de risco e fácil de implementar na negociação real. Ao otimizar alguns parâmetros e regras, a taxa de ganho e a lucratividade podem ser melhoradas.


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

//@version=2
// Coded by Vladkos
strategy("Donchian strategy with filter", overlay=true,default_qty_type = strategy.percent_of_equity, default_qty_value = 4,pyramiding=5)

fromyear = input(2017, defval = 2018, minval = 1800, 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(21, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
term = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))
ATR=input(20,minval=1)
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
needstoploss= input(true,defval=true,title="Stop LOSS")
///////////ATR
tra=atr(ATR)


////////////Переменные
Donchian_slow=input(20,minval=1)
Donchian_fast=input(10,minval=1)
Slow_EMA=input(125,minval=1)
Fast_EMA=input(50,minval=1)

/////////// Медленный Дончан
lower = lowest(Donchian_slow)
upper = highest(Donchian_slow)
basis = avg(upper, lower)
plot(lower,color=blue)
plot(upper,color=blue)

/////////// быстрый Дончан
lowerF = lowest(Donchian_fast)
upperF = highest(Donchian_fast)
basisF = avg(upperF, lowerF)
plot(lowerF,color=red)
plot(upperF,color=red)

////////// Скользящие средние
ema_S=ema(close,Slow_EMA)
ema_F=ema(close,Fast_EMA)
plot(ema_S,color=red)
plot(ema_F,color=green)

///////// Условия сделок
long_condition= close>=upper[1] and ema_F>ema_S  
long_exit= close<lowerF[1]

short_condition=close<=lower[1] and ema_F<ema_S
short_exit=close>upperF[1]

////////// Отправка ордеров
strategy.entry("Long",strategy.long,when=long_condition and term and needlong==true)
strategy.exit("stop loss","Long",stop=strategy.position_avg_price-(tra*2),when= (needstoploss==true))
strategy.close("Long",when=long_exit and (time < timestamp(toyear, tomonth, today, 23, 59)))
    
strategy.entry("Short",strategy.short,when=short_condition and term and (needshort==true))
strategy.exit("stoploss","Short",stop=strategy.position_avg_price+(tra*2),when= (needstoploss==true))
strategy.close("Short",when=short_exit and (time < timestamp(toyear, tomonth, today, 23, 59)))

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()






Mais.