Estratégia de cruzamento de média móvel dupla

Autora:ChaoZhang, Data: 2023-10-17 13:54:05
Tags:

img

Resumo

Esta estratégia gera sinais de negociação com base na diferença entre duas médias móveis com diferentes prazos. Ele calcula uma SMA mais rápida e uma SMA mais lenta, e produz sinais de compra quando a SMA rápida cruza acima da SMA lenta de baixo, e sinais de venda quando a SMA rápida cruza abaixo da SMA lenta de cima.

Como funciona

A lógica central desta estratégia é calcular duas médias móveis, SMA ((len1) e SMA ((len2), e sua diferença dif. Aqui len1 representa o período do MA mais rápido e len2 o MA mais lento. O MA mais rápido responde mais rapidamente às mudanças de preço, enquanto o MA mais lento reflete melhor a tendência de longo prazo.

Quando o MA mais rápido cruza acima do MA mais lento de baixo, ele indica que o preço de curto prazo começou a subir acima da tendência de longo prazo e, portanto, uma entrada longa pode ser tomada.

Para filtrar sinais falsos, a estratégia também usa o out3 como linha de sinal de negociação, que é a diferença suavizada entre o MA mais rápido e o ponto médio do preço.

Especificamente, a variável longa mantém valores positivos quando out3 cruza acima de dif, dando sinais de compra. A variável curta mantém valores negativos quando out3 cruza abaixo de dif, gerando sinais de venda.

Análise das vantagens

Esta é uma estratégia muito simples e intuitiva para seguir tendências. Ele usa o cruzamento de dois MA de períodos diferentes para identificar pontos de reversão da tendência, o que pode ser mais confiável do que um único sistema MA. O filtro da linha de sinal de negociação também ajuda a evitar sinais falsos em mercados agitados até certo ponto.

Em comparação com o stop loss, ele adota uma mentalidade de tendência para maximizar os lucros durante tendências mais longas sem ser parado.

Esta estratégia tem poucos parâmetros e é fácil de entender e ajustar, tornando-a adequada como uma estratégia de negociação algo para iniciantes.

Riscos e melhorias

O maior risco desta estratégia são os períodos de MA incorretamente escolhidos, resultando em maus sinais. Se o len1 for muito longo, os movimentos iniciais da tendência serão perdidos; se for muito curto, os whipssaws aumentam. Se o len2 for muito longo, os ajustes de posição serão atrasados; se for muito curto, ele pode ser perturbado pelo ruído do mercado.

Os parâmetros podem ser otimizados tentando diferentes valores de len1 e len2 para encontrar a melhor combinação.

As estratégias de seguimento de tendências devem também controlar as perdas em operações individuais, através de stop loss ou dimensionamento de posição.

Conclusão

A estratégia de cruzamento de MA dupla é uma tendência por excelência após o representante. Seu sistema de cruzamento de MA dupla simples fornece sinais estáveis, enquanto o filtro ajuda a evitar ruído. Com períodos de MA otimizados, ele pode alcançar bom desempenho. A estratégia serve bem como uma estratégia de negociação de algo para um iniciante aprender.


/*backtest
start: 2022-10-10 00:00:00
end: 2023-10-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//by afrazium
//@version=3
strategy(title="SMA Diff strat", shorttitle="SMAD STR", overlay=false, initial_capital=1, precision=8, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, calc_on_order_fills= false, calc_on_every_tick=false, pyramiding=0)
len1 = input(50, minval=1, title="Length1"), len2 = input(100, minval=1, title="Length2"), smo = input(1, minval=1, title="Smoothing")
src = input(ohlc4, title="Source")

mid = src
expr1 = sma(src, len1), expr2 = sma(src, len2)
dif = (expr1 - expr2), out1 = (mid - expr1), out2 = (mid - expr2), out3 = sma(out1, smo)

long = crossover(out3, dif) ? out3 : na, short = crossunder(out3, dif) ? out3 : na

plot(out3, color=black, linewidth=2), hline(0)
clr = out2 >= out1 ? lime : red, plot(dif, color=clr, linewidth=2)
plot(long, title = 'Crossover', color = green, style = circles, linewidth=4), plot(short, title = 'Crossunder', color = red, style = circles, linewidth=4)

strategy.entry("buy", strategy.long, when=crossover(out1, dif))
strategy.close("buy", when=crossunder(out1, dif))

//plot(out2, color=blue, linewidth=2)
//A = plot(mid/10, color=red, linewidth=1, transp=100), B = plot(mid/20, color=red, linewidth=1, transp=100)
//C = plot(-mid/10, color=green, linewidth=1, transp=100), D = plot(-mid/20, color=green, linewidth=1, transp=100)
//fill(A, B, color=red), fill(C, D, color=green)



Mais.