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.
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:
O que precede explica o principal fluxo de trabalho e a lógica por trás desta estratégia de retração.
As principais vantagens desta estratégia de retração da média móvel são:
Em resumo, isso é muito adequado para negociação de estilo de reversão média de curto prazo.
Apesar dos prós, há também certos riscos a serem observados para esta estratégia:
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.
Ainda há muito espaço para otimizar esta estratégia de retração da média móvel:
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;
Adicionar mecanismos de stop loss como paradas múltiplas ou paradas de trailing para controlar melhor os riscos;
Introduzir outros indicadores como FILTRADORES para evitar condições de mercado inadequadas;
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.
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)