Estratégia de recuperação da média móvel

Autora:ChaoZhang, Data: 2023-12-19 11:55:25
Tags:

img

Resumo

A estratégia de pullback da média móvel rastreia os cruzados das médias móveis de preços e identifica oportunidades de pullback para fazer negócios contra-tendência quando ocorrem cruzes douradas.

Estratégia lógica

O núcleo desta estratégia envolve duas médias móveis - a EMA de 14 dias e a SMA de 56 dias. Ela desencadeia um sinal de compra quando a EMA de 14 dias cruza acima da SMA de 56 dias a partir de baixo. Depois, a estratégia olha para trás 20 dias para encontrar uma baixa de balanço como suporte. Combinada com o preço de fechamento no ponto de cruzamento, as linhas de pullback de Fibonacci são traçadas, com 1.272 linha de pullback como entrada e 0.618 como saída. Assim, a estratégia define um ponto de entrada para ficar curto após cruzes douradas e obtém lucro se os preços realmente recuarem para a linha 0.618.

As principais etapas desta estratégia são:

  1. Calcular a EMA de 14 dias e a SMA de 56 dias;
  2. Verificar se a EMA cruza acima do sinal de cruz dourada da SMA;
  3. Olhe para trás para encontrar um balanço baixo para apoio;
  4. Traçar as linhas de retração de Fibonacci com o ponto baixo e o ponto de cruzamento;
  5. Configure a entrada para curto na linha de retração de 1.272;
  6. Estabelecer a parada de lucro na linha de retração de 0,618.

O que precede explica o principal fluxo de trabalho e a lógica por trás desta estratégia de retração.

Vantagens

As principais vantagens desta estratégia de retração da média móvel são:

  1. A ideia estratégica é simples e fácil de compreender;
  2. Utilize a teoria de Fibonacci para definir melhores controles de risco;
  3. Pode captar oportunidades de reversão a curto prazo para obter bons lucros;
  4. Só requer uma média móvel de cruz de ouro para desencadear entradas.

Em resumo, isso é muito adequado para negociação de estilo de reversão média de curto prazo.

Riscos

Apesar dos prós, há também certos riscos a serem observados para esta estratégia:

  1. A retenção longa pode levar a perdas enormes, pois estamos a contra-trender a curto prazo;
  2. Magnitude de retração muito pequena para alcançar os lucros;
  3. Configurações de linha de retirada agressivas.

Para mitigar os riscos, podemos definir um curto prazo de stop loss para controlar as perdas; também otimizar os intervalos da linha de retração para atingir metas de lucro razoáveis.

Oportunidades de melhoria

Ainda há muito espaço para otimizar esta estratégia de retração da média móvel:

  1. Teste diferentes configurações de parâmetros em itens como períodos de média móvel, dias de retrospectiva, múltiplos de Fibonacci, etc. para encontrar o ideal;

  2. Adicionar mecanismos de stop loss como paradas múltiplas ou paradas de trailing para controlar melhor os riscos;

  3. Introduzir outros indicadores como FILTRADORES para evitar condições de mercado inadequadas;

  4. Otimizar as regras de dimensionamento das posições e de gestão dos riscos.

Através de testes rigorosos e otimização, pode ser alcançada uma melhoria significativa para esta estratégia comercial.

Conclusão

A estratégia de retração média móvel é uma estratégia de negociação de curto prazo muito prática. Ela captura oportunidades de reversão média quando os preços recuam no curto prazo. A ideia da estratégia é simples e fácil de entender. Ainda há riscos que precisam ser abordados através da otimização e controle de riscos.


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

//@version=2
strategy("MAC Pullback", overlay=true)

// Setting up timeperiod for testing
startPeriodYear = input(2014, "Backtest Start Year")
startPeriodMonth = input(1, "Backtest Start Month")
startPeriodDay = input(2, "Backtest Start Day")
testPeriodStart = timestamp(startPeriodYear, startPeriodMonth, startPeriodDay, 0, 0)

stopPeriodYear = input(2035, "Backtest Stop Year")
stopPeriodMonth = input(12, "Backtest Stop Month")
stopPeriodDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(stopPeriodYear, stopPeriodMonth, stopPeriodDay, 0, 0)

// Moving Averages
ema14 = ema(close, 14)
ema28 = ema(close, 28)
sma56 = sma(close, 56)

// Plot
plot(ema14, title="ema14", linewidth=2, color=green)
plot(ema28, title="ema28", linewidth=2, color=red)
plot(sma56, title="sma56", linewidth=3, color=blue)


// Strategy
goLong = cross(ema14, sma56) and ema14 > ema28
goShort = cross(ema14, sma56) and ema14 < ema28


// Locate Swing Lows
leftBars = input(20)
rightBars=input(20)
swinglow = pivotlow(close, leftBars, rightBars)
plot(swinglow, style=cross, linewidth=8, color=#00FF00, offset=-rightBars)

if goLong == true and time >= testPeriodStart and time <= testPeriodStop
    // We try to make sure that we're catching the first Pullback after the crossover
    if ema14[12] < sma56[12] 
        pivotpoint = lowest(40)[0] //lowest value of the month as our swing low
        
        // We calculate a Fib 1.272 extension (from the previous swing low to 
        // the crossover long entry's open) and use this as our entry target to short the Pullback
        extensiontarget = ((close[1] - pivotpoint) * 1.27) + pivotpoint
        shorttarget = ((close[1] - pivotpoint) * 0.618) + pivotpoint        
        
        strategy.order("Pullback", strategy.short, 5.0, limit=extensiontarget)
        // I would like to use a trailing stop but for know we just hope to get 
        // filled if the pullback reaches all the way down to the 0.618.
        // We also place a tight stop loss since we trying to short an uptrend
        strategy.exit("Pullback Exit", "Pullback", limit=shorttarget, loss=400)

Mais.