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

Autora:ChaoZhang, Data: 2024-02-04 15:57:12
Tags:

img

Resumo

A estratégia de rastreamento de tendência de média móvel dupla utiliza uma combinação de médias móveis rápidas e lentas para determinar a direção da tendência, juntamente com a cor do corpo do candelabro como sinais de entrada.

Princípio

A estratégia usa uma média móvel lenta de 20 períodos para definir a tendência geral. O cruzamento ascendente sugere uma tendência de alta, enquanto o cruzamento descendente sugere uma tendência de baixa. Um MA rápido de 5 períodos serve como um filtro de entrada. Os negócios são acionados apenas quando o preço quebra o MA rápido. Além disso, as cores recentes do corpo da vela N são verificadas. Os sinais longos são acionados quando a cor do corpo se torna vermelha em uma tendência de alta. Os sinais curtos são acionados quando a cor do corpo se torna verde em uma tendência de baixa. Isso ajuda a evitar falhas.

A estratégia examina a ação do preço usando três dimensões - tendência, MA de curto prazo e corpo de velas, melhorando a confiabilidade do sinal.

Vantagens

  1. Combina a tendência de seguimento e a reversão média, adaptável a todos os ambientes de mercado.

  2. A revisão multifatorial de sinais anteriores melhora a taxa de vitória evitando sinais falsos.

  3. Otimizável utilizando comprimentos MA, cores de velas verificadas, etc.

  4. Lógica clara, concisa, amigável para iniciantes.

Riscos

  1. Os whipsaws durante os mercados de intervalo podem levar a perdas / drawdowns.

  2. Tente ajustar o número de velas verificadas ou desativar a reversão média.

  3. É necessário um extenso backtesting para validar os parâmetros e o desempenho.

Reforço

  1. Explorar outros tipos de MA, por exemplo, EMA, KAMA, etc.

  2. Adicionar regras de dimensionamento das posições, por exemplo, baseadas em quantidade fixa ou em percentagem do capital próprio.

  3. Considere sair de compras se o preço fechar abaixo da MA lenta.

  4. Teste em diferentes instrumentos para verificar a estabilidade.

Conclusão

A estratégia de dupla MA ganha com as negociações de tendência, enquanto extrai o alfa de reversão média em prazos mais curtos. O desempenho e o potencial de lucro podem ser melhorados ainda mais através da otimização. Apesar de sua simplicidade, ela permite que os iniciantes compreendam os conceitos-chave em torno da combinação de tendência e reversão média.


/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title = "Noro's Trend MAs 1.5", shorttitle = "Trend MAs 1.5", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, "long")
needshort = input(true, "short")
type = input(7, defval = 7, minval = 1, maxval = 7, title = "Type of Slow MA")
src = input(close, defval = close, title = "Source of Slow MA")
usefastsma = input(true, "Use fast MA Filter")
fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "slow MA Period")
bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q")

fastsma = ema(src, fastlen)

//DEMA
dema = 2 * ema(src, len) - ema(ema(close, len), len)

//TEMA
xPrice = close
xEMA1 = ema(src, len)
xEMA2 = ema(xEMA1, len)
xEMA3 = ema(xEMA2, len)
tema = 3 * xEMA1 - 3 * xEMA2 + xEMA3

//KAMA
xvnoise = abs(src - src[1])
nfastend = 0.20
nslowend = 0.05
nsignal = abs(src - src[len])
nnoise = sum(xvnoise, len)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) 
kama = nz(kama[1]) + nsmooth * (src - nz(kama[1]))

//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//Trend
ma = type == 1 ? sma(src, len) : type == 2 ? ema(src, len) : type == 3 ? vwma(src, len) : type == 4 ? dema : type == 5 ? tema : type == 6 ? kama : type == 7 ? center : 0
trend = low > ma ? 1 : high < ma ? -1 : trend[1]

//Bars
bar = close > open ? 1 : close < open ? -1 : 0
redbars = bars == 0 ? 1 : bars == 1 and bar == -1 ? 1 : bars == 2 and bar == -1 and bar[1] == -1 ? 1 : bars == 3 and bar == -1 and bar[1] == -1 and bar[2] == -1 ? 1 : 0
greenbars = bars == 0 ? 1 : bars == 1 and bar == 1 ? 1 : bars == 2 and bar == 1 and bar[1] == 1 ? 1 : bars == 3 and bar == 1 and bar[1] == 1 and bar[2] == 1 ? 1 : 0

//Signals
up = trend == 1 and (low < fastsma or usefastsma == false) and redbars == 1 ? 1 : 0
dn = trend == -1 and (high > fastsma or usefastsma == false) and greenbars == 1 ? 1 : 0

//Lines
colorfastsma = usefastsma == true ? red : na
plot(fastsma, color = colorfastsma, title = "Fast MA")
plot(ma, color = blue, linewidth = 3, transp = 0, title = "Slow MA")

//Trading
longCondition = up == 1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

shortCondition = dn == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)

Mais.