Estratégia de acompanhamento da tendência de cruzamento de média móvel dupla

Autora:ChaoZhang, Data: 2023-09-28 11:52:16
Tags:

Resumo

Esta estratégia utiliza o princípio duplo de cruzamento da média móvel combinado com um indicador de rastreamento de tendências para determinar e seguir tendências. A ideia principal é ir longo quando a média móvel de curto período cruza acima da média móvel de longo período e ir curto quando a média móvel de curto período cruza abaixo da média móvel de longo período. A direção geral da tendência também é determinada pela média móvel de 100 dias para evitar falhas.

Estratégia lógica

A estratégia consiste principalmente num sistema duplo de cruzamento de médias móveis e num sistema de acompanhamento da tendência.

O sistema de cruzamento de média móvel dupla contém uma EMA1 rápida e uma EMA2 lenta. Os períodos padrão são 10 dias para a EMA1 e 20 dias para a EMA2. Um sinal de compra é gerado quando a EMA1 cruza acima da EMA2. Um sinal de venda é gerado quando a EMA1 cruza abaixo da EMA2.

A EMA de 100 dias (EMA100) é adicionada para determinar a direção geral da tendência. Os sinais de compra são gerados apenas quando o preço está em uma tendência ascendente (o preço está acima da EMA de 100 dias). Os sinais de venda são gerados apenas quando o preço está em uma tendência descendente (o preço está abaixo da EMA de 100 dias). Isso filtra a maioria das situações de falha.

As setas de compra e venda também são traçadas nas velas para exibir visualmente os sinais de negociação.

O sistema de rastreamento de tendências usa linhas intradiárias e diárias do ciclo para confirmar novamente a direção da tendência.

Os sinais de negociação só são gerados quando os julgamentos intradiários e do ciclo concordam.

Análise das vantagens

A maior vantagem desta estratégia é a integração de sistemas de rastreamento de tendências e de cruzamento de médias móveis, que filtram efetivamente os sinais falsos e mantêm os drawdowns dentro de níveis aceitáveis.

Especificamente, as vantagens do sistema duplo de cruzamento de médias móveis são:

  1. Lógica simples e fácil de entender, adequada para iniciantes.

  2. Seguir a tendência, evita negociar contra a tendência.

  3. Períodos EMA rápidos e lentos personalizáveis, adaptáveis a diferentes ciclos.

  4. Forte rendibilidade nas principais tendências.

A adição da EMA100 tem as seguintes vantagens:

  1. Evitar negociações contra a tendência, reduzir perdas.

  2. Seguindo a tendência, mantendo a retirada controlada.

O sistema de acompanhamento das tendências tem as seguintes vantagens:

  1. Análise de quadros de tempo múltiplos, evitando o ruído de um único período.

  2. Assegurar o alinhamento com a direcção da tendência principal, reduzindo os drawdowns.

  3. O Heikin-Ashi suaviza o ruído, só captura tendências.

Análise de riscos

Alguns riscos a ter em conta para esta estratégia:

  1. Frequentes crossovers e custos de negociação extras durante consolidações prolongadas.

  2. Sinais atrasados, faltando fases iniciais da tendência.

  3. Perdas graves quando a tendência principal se inverte.

  4. O desempenho depende da otimização dos parâmetros.

Soluções:

  1. Reduzir a frequência das negociações durante as consolidações.

  2. Encurtar os períodos de EMA para obter sinais de tendência mais cedo.

  3. Usar stop loss para controlar a perda única.

  4. Otimizar os parâmetros para diferentes produtos e condições de mercado.

Orientações de otimização

Esta estratégia pode ser otimizada nos seguintes domínios:

  1. Teste mais combinações para encontrar períodos ideais.

  2. Adicionar mais juízos de prazo, por exemplo, linhas mensais ou trimestrais.

  3. Incorporar mecanismos de stop loss como movimentos ou paradas exponenciais.

  4. Combine com indicadores de volume como Volume no Balanço.

  5. Melhorar o tempo de entrada usando osciladores mais rápidos como o MACD.

  6. Optimização de parâmetros para mais produtos e ativos.

Conclusão

Esta estratégia combina os pontos fortes dos sistemas duplos de crossover de média móvel e rastreamento de tendências, evitando as fraquezas de sistemas únicos.


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © askkuldeeprandhawa

//@version=4

strategy("KSR Strategy", overlay=true)



par1=input(10)
par2=input(20)
ema1=ema(close,par1)
ema2=ema(close,par2)
buy=ema1>ema2
sell=ema2<ema1
mycolor= iff(buy,color.green,iff(sell,color.blue,color.red))
barcolor(color=mycolor)



ema100=ema(close,100)
ibuy=crossover(ema1,ema2)
iSell=crossunder(ema1,ema2)

varp=tostring(close[1])
plotshape(ibuy, "Up Arrow", shape.triangleup, location.belowbar, color.green, 0, 0,"Buy" , color.green, true, size.tiny)
plotshape(iSell, "Down Arrow", shape.triangledown, location.abovebar, color.red, 0, 0, "Sell", color.red, true, size.tiny)

crossed =crossover(ema(close,par1), ema(close,par2))
// if crossed
//     l = label.new(bar_index, na, tostring(close), 
//          color=color.green, 
//          textcolor=color.white,
//          style=label.style_labelup, yloc=yloc.belowbar)
         
crossed2 =crossunder(ema(close,par1), ema(close,par2))
// if crossed2
//     l = label.new(bar_index, na, tostring(close), 
//          color=color.red, 
//          textcolor=color.white,
//          style=label.style_labeldown, yloc=yloc.abovebar)
         
plot(ema(close,par1),"EMA Short",color=color.white)
plot(ema(close,par2),"EMA Long",color=color.orange)


longCondition = crossover(ema(close, par1), ema(close, par2))
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

shortCondition = crossunder(ema(close, par1), ema(close, par2))
if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)




ma1_len = input(title="MA1", type=input.integer, defval=8, minval=1, maxval=100, step=1)
ma2_len = input(title="MA2", type=input.integer, defval=12, minval=1, maxval=100, step=1)

o = ema(open, ma1_len)
c = ema(close, ma1_len)
h = ema(high, ma1_len)
l = ema(low, ma1_len)

tim1=input('D',"Short Time")
tim2=input('W',"Long Time")

ema_p=input(title="EMA Period", type=input.integer, defval=16, minval=1, maxval=100, step=1)
refma = ema(close, ema_p)
plot(refma, title="EMA" , linewidth=1, color=close < refma ? color.orange : color.blue)
ha_t = heikinashi(syminfo.tickerid)
ha_o = security(ha_t, tim2, o)
ha_c = security(ha_t, tim2, c)
ha_h = security(ha_t, tim2, h)
ha_l = security(ha_t, tim2, l)
o2 = ema(ha_o, ma2_len)
c2 = ema(ha_c, ma2_len)
h2 = ema(ha_h, ma2_len)
l2 = ema(ha_l, ma2_len)
ha_col = ha_c > ha_o ? color.red : color.green
plotshape(true, style=shape.circle, color=ha_c > ha_o ? color.green : color.red, location=location.bottom)


ha_t1 = heikinashi(syminfo.tickerid)
ha_o1 = security(ha_t1, tim1, o)
ha_c1 = security(ha_t1, tim1, c)
ha_h1 = security(ha_t1, tim1, h)
ha_l1 = security(ha_t1, tim1, l)
o3 = ema(ha_o1, ma2_len)
c3 = ema(ha_c1, ma2_len)
h3 = ema(ha_h1, ma2_len)
l3 = ema(ha_l1, ma2_len)
ha_col1 = ha_c1 > ha_o1 ? color.red : color.green
plotshape(true, style=shape.circle, color=ha_c1 > ha_o1 ? color.green : color.red, location=location.top)







Mais.